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)
{
for (auto& member : node.description.members)
member.type = ResolveType(member.type);
node.structIndex = RegisterStruct(node.description.name, node.description);
AstCloner::Visit(node);

View File

@ -589,7 +589,15 @@ namespace Nz::ShaderAst
{
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);
}