aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2024-02-28 20:18:14 -0500
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2024-05-21 11:27:46 +0000
commit80e0560b54241dc0d1d86063f482f222e5aa9cd7 (patch)
tree78dd61be2a282913f32513c8983637035cd23822
parent9ff8ac927533ea04b97349d9a8998851a75f239c (diff)
downloadgcc-80e0560b54241dc0d1d86063f482f222e5aa9cd7.zip
gcc-80e0560b54241dc0d1d86063f482f222e5aa9cd7.tar.gz
gcc-80e0560b54241dc0d1d86063f482f222e5aa9cd7.tar.bz2
Add call and method call default visitors
gcc/rust/ChangeLog: * resolve/rust-default-resolver.cc (DefaultResolver::visit): New for AST::CallExpr and AST::MethodCallExpr. * resolve/rust-default-resolver.h (DefaultResolver::visit): Likewise. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r--gcc/rust/resolve/rust-default-resolver.cc30
-rw-r--r--gcc/rust/resolve/rust-default-resolver.h2
2 files changed, 32 insertions, 0 deletions
diff --git a/gcc/rust/resolve/rust-default-resolver.cc b/gcc/rust/resolve/rust-default-resolver.cc
index ca83184..d9fe9ee 100644
--- a/gcc/rust/resolve/rust-default-resolver.cc
+++ b/gcc/rust/resolve/rust-default-resolver.cc
@@ -237,6 +237,36 @@ DefaultResolver::visit (AST::ReturnExpr &expr)
{}
void
+DefaultResolver::visit (AST::CallExpr &expr)
+{
+ expr.get_function_expr ().accept_vis (*this);
+
+ for (auto &param : expr.get_params ())
+ param->accept_vis (*this);
+}
+
+void
+DefaultResolver::visit (AST::MethodCallExpr &expr)
+{
+ expr.get_receiver_expr ().accept_vis (*this);
+
+ if (expr.get_method_name ().has_generic_args ())
+ {
+ auto &args = expr.get_method_name ().get_generic_args ();
+ for (auto &arg : args.get_generic_args ())
+ arg.accept_vis (*this);
+ for (auto &arg : args.get_binding_args ())
+ if (!arg.is_error ())
+ arg.get_type ().accept_vis (*this);
+ for (auto &arg : args.get_lifetime_args ())
+ arg.accept_vis (*this);
+ }
+
+ for (auto &param : expr.get_params ())
+ param->accept_vis (*this);
+}
+
+void
DefaultResolver::visit (AST::LoopExpr &expr)
{}
diff --git a/gcc/rust/resolve/rust-default-resolver.h b/gcc/rust/resolve/rust-default-resolver.h
index 547b537..5ae4e12 100644
--- a/gcc/rust/resolve/rust-default-resolver.h
+++ b/gcc/rust/resolve/rust-default-resolver.h
@@ -66,6 +66,8 @@ public:
void visit (AST::RangeFromToInclExpr &);
void visit (AST::RangeToInclExpr &);
void visit (AST::ReturnExpr &);
+ void visit (AST::CallExpr &);
+ void visit (AST::MethodCallExpr &);
void visit (AST::LoopExpr &);
void visit (AST::WhileLoopExpr &);
void visit (AST::WhileLetLoopExpr &);