bool r_any_resolved;
bool record_target;
bool r_self_referencing;
- VariableDeclaration *r_assignment_target;
+ Assignment::Target r_assignment_target;
public:
VariableResolver();
private:
virtual void enter(Block &);
- void visit_and_replace(RefPtr<Expression> &);
+ virtual void visit(RefPtr<Expression> &);
+ void check_assignment_target(Statement *);
virtual void visit(VariableReference &);
virtual void visit(InterfaceBlockReference &);
+ void add_to_chain(Assignment::Target::ChainType, unsigned);
virtual void visit(MemberAccess &);
virtual void visit(Swizzle &);
- virtual void visit(UnaryExpression &);
virtual void visit(BinaryExpression &);
virtual void visit(Assignment &);
- virtual void visit(FunctionCall &);
virtual void visit(VariableDeclaration &);
virtual void visit(InterfaceBlock &);
};
void visit(BinaryExpression &, bool);
virtual void visit(BinaryExpression &);
virtual void visit(Assignment &);
+ virtual void visit(TernaryExpression &);
virtual void visit(FunctionCall &);
virtual void visit(BasicTypeDeclaration &);
virtual void visit(VariableDeclaration &);
std::string out_prefix;
bool function_scope;
bool copy_block;
+ std::vector<VariableDeclaration *> declared_inputs;
Block *iface_target_block;
NodeList<Statement>::iterator iface_insert_point;
NodeList<Statement>::iterator assignment_insert_point;