summaryrefslogtreecommitdiff
path: root/src/ast/ast_expr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/ast_expr.hpp')
-rw-r--r--src/ast/ast_expr.hpp21
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 )