void apply(Stage &s) { s.content.visit(*this); }
private:
- virtual void visit(Block &);
+ virtual void enter(Block &);
virtual void visit(InterfaceBlock &);
};
private:
Block *next_block(Block &);
- virtual void visit(Block &);
+ virtual void enter(Block &);
virtual void visit(VariableReference &);
virtual void visit(MemberAccess &);
virtual void visit(BinaryExpression &);
virtual void visit(StructDeclaration &);
virtual void visit(VariableDeclaration &);
virtual void visit(InterfaceBlock &);
- virtual void visit(FunctionDeclaration &);
- virtual void visit(Iteration &);
};
class FunctionResolver: private TraversingVisitor
Stage *stage;
std::string in_prefix;
std::string out_prefix;
+ bool function_scope;
NodeList<Statement>::iterator iface_insert_point;
NodeList<Statement>::iterator assignment_insert_point;
std::set<Node *> nodes_to_remove;
ExpressionStatement &insert_assignment(const std::string &, Expression *);
virtual void visit(VariableReference &);
virtual void visit(VariableDeclaration &);
+ virtual void visit(FunctionDeclaration &);
virtual void visit(Passthrough &);
};