aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2025-02-18 02:03:56 -0500
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-24 13:07:07 +0100
commit1dc99a4264339b305cf04127051b283e52d4fb7c (patch)
treea8a6bc641a532c23e864478f5e64ff3ce127df36
parentc92dfc78201f73b5682851bffaa4e596adf66f2d (diff)
downloadgcc-1dc99a4264339b305cf04127051b283e52d4fb7c.zip
gcc-1dc99a4264339b305cf04127051b283e52d4fb7c.tar.gz
gcc-1dc99a4264339b305cf04127051b283e52d4fb7c.tar.bz2
gccrs: nr2.0: Fix issue with external crates
gcc/rust/ChangeLog: * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): When visiting an external crate declaration, handle failed crate name lookups. This can happen when Session::load_extern_crate fails to load a crate during the CfgStrip phase. gcc/testsuite/ChangeLog: * rust/compile/nr2/exclude: Remove entries. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r--gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc11
-rw-r--r--gcc/testsuite/rust/compile/nr2/exclude3
2 files changed, 10 insertions, 4 deletions
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 3052869..572d595 100644
--- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
@@ -163,7 +163,16 @@ void
TopLevel::visit (AST::ExternCrate &crate)
{
auto &mappings = Analysis::Mappings::get ();
- CrateNum num = *mappings.lookup_crate_name (crate.get_referenced_crate ());
+ auto num_opt = mappings.lookup_crate_name (crate.get_referenced_crate ());
+
+ if (!num_opt)
+ {
+ rust_error_at (crate.get_locus (), "unknown crate %qs",
+ crate.get_referenced_crate ().c_str ());
+ return;
+ }
+
+ CrateNum num = *num_opt;
auto attribute_macros = mappings.lookup_attribute_proc_macros (num);
diff --git a/gcc/testsuite/rust/compile/nr2/exclude b/gcc/testsuite/rust/compile/nr2/exclude
index a400378..2186a11 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -46,9 +46,6 @@ not_find_value_in_scope.rs
privacy4.rs
privacy5.rs
privacy8.rs
-macros/proc/attribute_non_function.rs
-macros/proc/derive_non_function.rs
-macros/proc/non_function.rs
pub_restricted_1.rs
pub_restricted_2.rs
pub_restricted_3.rs