diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2024-02-28 20:18:14 -0500 |
---|---|---|
committer | P-E-P <32375388+P-E-P@users.noreply.github.com> | 2024-05-21 11:27:46 +0000 |
commit | 80e0560b54241dc0d1d86063f482f222e5aa9cd7 (patch) | |
tree | 78dd61be2a282913f32513c8983637035cd23822 | |
parent | 9ff8ac927533ea04b97349d9a8998851a75f239c (diff) | |
download | gcc-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.cc | 30 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-default-resolver.h | 2 |
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 ¶m : 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 ¶m : 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 &); |