VariableResolver::VariableResolver():
stage(0),
- builtins(0),
members(0),
record_target(false),
assignment_target(0),
stage = &s;
s.types.clear();
s.interface_blocks.clear();
- Stage *builtin_stage = get_builtins(s.type);
- builtins = (builtin_stage ? &builtin_stage->content : 0);
s.content.visit(*this);
}
-Block *VariableResolver::next_block(Block &block)
-{
- return block.parent ? block.parent : &block!=builtins ? builtins : 0;
-}
-
void VariableResolver::enter(Block &block)
{
block.variables.clear();
{
var.declaration = 0;
members = 0;
- for(Block *block=current_block; (!var.declaration && block); block=next_block(*block))
+ for(Block *block=current_block; (!var.declaration && block); block=block->parent)
{
map<string, VariableDeclaration *>::iterator i = block->variables.find(var.name);
if(i!=block->variables.end())
void VariableResolver::visit(InterfaceBlockReference &iface)
{
iface.declaration = 0;
- for(Block *block=current_block; block; block=next_block(*block))
+ for(Block *block=current_block; block; block=block->parent)
{
map<string, InterfaceBlock *>::iterator i = stage->interface_blocks.find(iface.name);
if(i!=stage->interface_blocks.end())