Shader: Fix struct nesting
This commit is contained in:
parent
0860a0689f
commit
85ce6a4f43
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue