- map<string, VariableDeclaration *>::iterator j = block->variables.find(var.name);
- if(j!=block->variables.end())
+ map<string, VariableDeclaration *>::iterator i = block->variables.find(var.name);
+ if(i!=block->variables.end())
+ var.declaration = i->second;
+ else
+ {
+ const set<InterfaceBlock *> &ifaces = block->interfaces;
+ for(set<InterfaceBlock *>::const_iterator j=ifaces.begin(); (!var.declaration && j!=ifaces.end()); ++j)
+ {
+ i = (*j)->members.variables.find(var.name);
+ if(i!=(*j)->members.variables.end())
+ var.declaration = i->second;
+ }
+ }
+
+ if(var.declaration)