https://gcc.gnu.org/g:a4169b499c7c556e114c59aa9f82ed01fc68893f
commit r17-3092-ga4169b499c7c556e114c59aa9f82ed01fc68893f Author: Owen Avery <[email protected]> Date: Sun Jul 12 11:37:31 2026 -0400 gccrs: Name resolve external types gcc/rust/ChangeLog: * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit (ExternalTypeItem)): New function definition. * resolve/rust-toplevel-name-resolver-2.0.h (TopLevel::visit (ExternalTypeItem)): New function declaration. gcc/testsuite/ChangeLog: * rust/compile/extern_type_item_resolve.rs: New test. Signed-off-by: Owen Avery <[email protected]> Diff: --- gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 9 +++++++++ gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h | 1 + gcc/testsuite/rust/compile/extern_type_item_resolve.rs | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc index 7fb9630490ac..cb354fdee615 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc @@ -391,6 +391,15 @@ TopLevel::visit (AST::TypeAlias &type_item) DefaultResolver::visit (type_item); } +void +TopLevel::visit (AST::ExternalTypeItem &type_item) +{ + insert_or_error_out (type_item.get_identifier (), type_item, + Namespace::Types); + + DefaultResolver::visit (type_item); +} + static void flatten_rebind ( const AST::UseTreeRebind &glob, std::vector<std::pair<AST::SimplePath, AST::UseTreeRebind>> &rebind_paths); diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h index bcee6c2c1cf0..897c54158e58 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h @@ -183,6 +183,7 @@ private: void visit (AST::Union &union_item) override; void visit (AST::ConstantItem &const_item) override; void visit (AST::TypeAlias &type_item) override; + void visit (AST::ExternalTypeItem &type_item) override; void visit_extern_crate (AST::ExternCrate &, AST::Crate &, CrateNum) override; void visit (AST::TypeParam &type_param) override; void visit (AST::ConstGenericParam &const_param) override; diff --git a/gcc/testsuite/rust/compile/extern_type_item_resolve.rs b/gcc/testsuite/rust/compile/extern_type_item_resolve.rs new file mode 100644 index 000000000000..0313d9dbade4 --- /dev/null +++ b/gcc/testsuite/rust/compile/extern_type_item_resolve.rs @@ -0,0 +1,9 @@ +// { dg-additional-options "-frust-compile-until=typecheck" } +#![feature(no_core, extern_types)] +#![no_core] + +extern "C" { + type X; +} + +type Y = X;
