Shader: Fix struct nesting

This commit is contained in:
Jérôme Leclercq 2021-04-14 20:10:39 +02:00
parent 0860a0689f
commit 85ce6a4f43
2 changed files with 12 additions and 1 deletions

View File

@ -127,6 +127,9 @@ namespace Nz::ShaderAst
void TransformVisitor::Visit(DeclareStructStatement& node) void TransformVisitor::Visit(DeclareStructStatement& node)
{ {
for (auto& member : node.description.members)
member.type = ResolveType(member.type);
node.structIndex = RegisterStruct(node.description.name, node.description); node.structIndex = RegisterStruct(node.description.name, node.description);
AstCloner::Visit(node); AstCloner::Visit(node);

View File

@ -589,7 +589,15 @@ namespace Nz::ShaderAst
{ {
assert(m_context); assert(m_context);
//TODO: check members attributes std::unordered_set<std::string> declaredMembers;
for (auto& member : node.description.members)
{
if (declaredMembers.find(member.name) != declaredMembers.end())
throw AstError{ "struct member " + member.name + " found multiple time" };
declaredMembers.insert(member.name);
}
AstScopedVisitor::Visit(node); AstScopedVisitor::Visit(node);
} }