]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: nr2.0: Fix issue with external crates
authorOwen Avery <powerboat9.gamer@gmail.com>
Tue, 18 Feb 2025 07:03:56 +0000 (02:03 -0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 24 Mar 2025 12:07:07 +0000 (13:07 +0100)
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>
gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
gcc/testsuite/rust/compile/nr2/exclude

index 305286970c7f90e6a7082a3a3ace29fb9e7fc30f..572d5956c0a89068b178981d191725f660ebae66 100644 (file)
@@ -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);
 
index a400378f071e2788e915ccc8c3bd4778f703dfdd..2186a1106d950d80b56f4b89428ebe27a389c7e7 100644 (file)
@@ -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