aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2025-04-19 14:14:25 +0200
committerP-E-P <32375388+P-E-P@users.noreply.github.com>2025-04-24 16:53:44 +0000
commitee61e8917f0057e271177c5ad2e5a4a7c3ccdbaa (patch)
treeab1f4745f70f56aaad3fc293870f74a4676ac8fb /gcc/rust/resolve/rust-late-name-resolver-2.0.cc
parent38b913483fed6fe36fd5b692948ec9cf7ac2415c (diff)
downloadgcc-ee61e8917f0057e271177c5ad2e5a4a7c3ccdbaa.zip
gcc-ee61e8917f0057e271177c5ad2e5a4a7c3ccdbaa.tar.gz
gcc-ee61e8917f0057e271177c5ad2e5a4a7c3ccdbaa.tar.bz2
Use specialized param visit function for params
This commit introduce a new public function to visit function parameters in the default visitor. It allows visitors derived from DefaultVisitor to override only a small part of the default visitor. gcc/rust/ChangeLog: * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit_function_params): Add specialized function to visit function parameters. (DefaultASTVisitor::visit): Remove parameter visit and call specialized function instead. * ast/rust-ast-visitor.h: Add function prototye. * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Remove function. (Late::visit_function_params): Override specialized visit function. * resolve/rust-late-name-resolver-2.0.h: Add overriden function prototype. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc/rust/resolve/rust-late-name-resolver-2.0.cc')
-rw-r--r--gcc/rust/resolve/rust-late-name-resolver-2.0.cc30
1 files changed, 5 insertions, 25 deletions
diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
index 5ee3fa2..5f215db 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -266,34 +266,14 @@ Late::visit (AST::AltPattern &pattern)
}
void
-Late::visit (AST::Function &function)
+Late::visit_function_params (AST::Function &function)
{
- auto def_fn = [this, &function] () {
- visit_outer_attrs (function);
- visit (function.get_visibility ());
- visit (function.get_qualifiers ());
- for (auto &generic : function.get_generic_params ())
- visit (generic);
-
- // We only care about params
- ctx.bindings.enter (BindingSource::Param);
-
- for (auto &param : function.get_function_params ())
- visit (param);
-
- ctx.bindings.exit ();
-
- // Back to regular visit
+ ctx.bindings.enter (BindingSource::Param);
- if (function.has_return_type ())
- visit (function.get_return_type ());
- if (function.has_where_clause ())
- visit (function.get_where_clause ());
- if (function.has_body ())
- visit (*function.get_definition ());
- };
+ for (auto &param : function.get_function_params ())
+ visit (param);
- ctx.scoped (Rib::Kind::Function, function.get_node_id (), def_fn);
+ ctx.bindings.exit ();
}
void