diff options
Diffstat (limited to 'src/ast/ast_expr.hpp')
-rw-r--r-- | src/ast/ast_expr.hpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/ast/ast_expr.hpp b/src/ast/ast_expr.hpp index 1b0a876d..9b659bfd 100644 --- a/src/ast/ast_expr.hpp +++ b/src/ast/ast_expr.hpp @@ -97,6 +97,22 @@ struct ExprNode_CallPath: virtual void visit(NodeVisitor& nv) override; }; +struct ExprNode_CallMethod: + public ExprNode +{ + unique_ptr<ExprNode> m_val; + PathNode m_method; + ::std::vector<unique_ptr<ExprNode>> m_args; + + ExprNode_CallMethod(unique_ptr<ExprNode>&& obj, PathNode&& method, ::std::vector<unique_ptr<ExprNode>>&& args): + m_val( move(obj) ), + m_method( move(method) ), + m_args( move(args) ) + { + } + + virtual void visit(NodeVisitor& nv) override; +}; // Call an object (Fn/FnMut/FnOnce) struct ExprNode_CallObject: public ExprNode @@ -272,6 +288,11 @@ public: for( auto& arg : node.m_args ) visit(arg); } + virtual void visit(ExprNode_CallMethod& node) { + visit(node.m_val); + for( auto& arg : node.m_args ) + visit(arg); + } virtual void visit(ExprNode_CallObject& node) { visit(node.m_val); for( auto& arg : node.m_args ) |