diff options
author | John Hodge (sonata) <tpg@mutabah.net> | 2015-01-05 14:01:17 +0800 |
---|---|---|
committer | John Hodge (sonata) <tpg@mutabah.net> | 2015-01-05 14:01:17 +0800 |
commit | 9cabbe613eb4cff9101d1b8a5757038f59570e97 (patch) | |
tree | 8b752490eda24cd77743d8a54198fdb1298f31f0 /src/ast/ast_expr.hpp | |
parent | eac8e3d68b9ca67f97c1f9aedef01e8e93cde323 (diff) | |
download | mrust-9cabbe613eb4cff9101d1b8a5757038f59570e97.tar.gz |
Parser - Handle methods correctly
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 ) |