From 3c290c1d0ebb12b82ee3f77955a29c2bc111a276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 9 Mar 2022 07:26:51 +0100 Subject: [PATCH] Shader: Fix unit tests --- include/Nazara/Shader/Ast/Attribute.hpp | 2 ++ include/Nazara/Shader/Ast/Attribute.inl | 6 ++++++ src/Nazara/Shader/Ast/SanitizeVisitor.cpp | 6 ++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/Nazara/Shader/Ast/Attribute.hpp b/include/Nazara/Shader/Ast/Attribute.hpp index ec3bf6667..3394e64bc 100644 --- a/include/Nazara/Shader/Ast/Attribute.hpp +++ b/include/Nazara/Shader/Ast/Attribute.hpp @@ -39,6 +39,8 @@ namespace Nz::ShaderAst bool HasValue() const; + void Reset(); + ExpressionValue& operator=(const ExpressionValue&) = default; ExpressionValue& operator=(ExpressionValue&&) noexcept = default; diff --git a/include/Nazara/Shader/Ast/Attribute.inl b/include/Nazara/Shader/Ast/Attribute.inl index a7ea1e475..0b5793e0f 100644 --- a/include/Nazara/Shader/Ast/Attribute.inl +++ b/include/Nazara/Shader/Ast/Attribute.inl @@ -67,6 +67,12 @@ namespace Nz::ShaderAst { return !std::holds_alternative(m_value); } + + template + void ExpressionValue::Reset() + { + m_value = {}; + } } #include diff --git a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp index 86dace007..ed7523bdb 100644 --- a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp +++ b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp @@ -887,9 +887,11 @@ namespace Nz::ShaderAst } if (node.returnType.HasValue()) + { clone->returnType = ResolveType(node.returnType); - else - clone->returnType = ExpressionType{ NoType{} }; + if (clone->returnType.HasValue() && IsNoType(clone->returnType.GetResultingValue())) + clone->returnType.Reset(); //< handle void as no return type + } if (node.depthWrite.HasValue()) clone->depthWrite = ComputeExprValue(node.depthWrite);