aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2024-02-28 20:18:14 -0500
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-17 16:35:28 +0100
commit9039c25357efcc521712c18717219f7aa1d821bb (patch)
tree6478d3187ab61462faf1fbe731944446ee93f6fa /gcc
parenta8f468bbc9f1d3db832cdeec8df6801ffe610f27 (diff)
downloadgcc-9039c25357efcc521712c18717219f7aa1d821bb.zip
gcc-9039c25357efcc521712c18717219f7aa1d821bb.tar.gz
gcc-9039c25357efcc521712c18717219f7aa1d821bb.tar.bz2
gccrs: 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>
Diffstat (limited to 'gcc')
-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 50625ba..757acfe 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 13ab5ee..6bca8b7 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 &);