X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fgenerate.cpp;h=ac3a4b75e7f7f9d62aa3925f01be9d6eeb94f8c4;hb=1d02efce746aa8b6e678a3bf56bfbbbe0aea6952;hp=9adfb93d5cbfab11984c6bcf5f5a6a8315f6d494;hpb=11ce239520e60df331ef635b9e210204d80de746;p=libs%2Fgl.git diff --git a/source/glsl/generate.cpp b/source/glsl/generate.cpp index 9adfb93d..ac3a4b75 100644 --- a/source/glsl/generate.cpp +++ b/source/glsl/generate.cpp @@ -228,6 +228,13 @@ void VariableResolver::visit(MemberAccess &memacc) } } +void VariableResolver::visit(UnaryExpression &unary) +{ + TraversingVisitor::visit(unary); + r_members = 0; + r_iface_ref = 0; +} + void VariableResolver::visit(BinaryExpression &binary) { if(binary.oper->token[0]=='[') @@ -241,13 +248,14 @@ void VariableResolver::visit(BinaryExpression &binary) binary.left->visit(*this); if(r_iface_ref) binary.left = r_iface_ref; - r_iface_ref = 0; } else { TraversingVisitor::visit(binary); r_members = 0; } + + r_iface_ref = 0; } void VariableResolver::visit(Assignment &assign) @@ -263,6 +271,15 @@ void VariableResolver::visit(Assignment &assign) assign.self_referencing = (r_self_referencing || assign.oper->token[0]!='='); assign.target_declaration = r_assignment_target; + r_members = 0; + r_iface_ref = 0; +} + +void VariableResolver::visit(FunctionCall &call) +{ + TraversingVisitor::visit(call); + r_members = 0; + r_iface_ref = 0; } void VariableResolver::visit(StructDeclaration &strct)