diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2025-04-19 14:14:25 +0200 |
---|---|---|
committer | P-E-P <32375388+P-E-P@users.noreply.github.com> | 2025-04-24 16:53:44 +0000 |
commit | ee61e8917f0057e271177c5ad2e5a4a7c3ccdbaa (patch) | |
tree | ab1f4745f70f56aaad3fc293870f74a4676ac8fb /gcc/rust/resolve/rust-late-name-resolver-2.0.cc | |
parent | 38b913483fed6fe36fd5b692948ec9cf7ac2415c (diff) | |
download | gcc-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.cc | 30 |
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 ¶m : 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 ¶m : function.get_function_params ()) + visit (param); - ctx.scoped (Rib::Kind::Function, function.get_node_id (), def_fn); + ctx.bindings.exit (); } void |