https://gcc.gnu.org/g:87fe1cad253d14cfbeab30809d6d0eeb0becf902
commit r17-4281-g87fe1cad253d14cfbeab30809d6d0eeb0becf902 Author: Owen Avery <[email protected]> Date: Fri Aug 21 22:29:49 2026 -0400 gccrs: Function node links should be unnamed Functions shouldn't be usable as named node links. gcc/rust/ChangeLog: * resolve/rust-default-resolver.cc (DefaultResolver::visit (Function)): Don't pass a path parameter to function NameResolutionContext::scoped. gcc/testsuite/ChangeLog: * rust/compile/mod_fn_conflict.rs: New test. Signed-off-by: Owen Avery <[email protected]> Diff: --- gcc/rust/resolve/rust-default-resolver.cc | 3 +-- gcc/testsuite/rust/compile/mod_fn_conflict.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/gcc/rust/resolve/rust-default-resolver.cc b/gcc/rust/resolve/rust-default-resolver.cc index 7a54c6ee1343..ac2b7b196586 100644 --- a/gcc/rust/resolve/rust-default-resolver.cc +++ b/gcc/rust/resolve/rust-default-resolver.cc @@ -91,8 +91,7 @@ DefaultResolver::visit (AST::Function &function) std::move (def_fn_1)); }; - ctx.scoped (Rib::Kind::Function, function.get_node_id (), def_fn_2, - function.get_function_name ()); + ctx.scoped (Rib::Kind::Function, function.get_node_id (), def_fn_2); } void diff --git a/gcc/testsuite/rust/compile/mod_fn_conflict.rs b/gcc/testsuite/rust/compile/mod_fn_conflict.rs new file mode 100644 index 000000000000..b184e696b5b9 --- /dev/null +++ b/gcc/testsuite/rust/compile/mod_fn_conflict.rs @@ -0,0 +1,19 @@ +// TODO: allow(unused) should be disabling "function is never used" warnings +// { dg-additional-options "-w" } +#![no_core] +#![feature(no_core)] + +mod a { + pub mod b { + pub struct X; + } +} + +use a::*; + +#[allow(unused)] +fn b() {} + +trait Y {} + +impl Y for b::X {}
