https://gcc.gnu.org/g:9a1162dc57771cc441ce7a594f53b7e75d52dde6

commit 9a1162dc57771cc441ce7a594f53b7e75d52dde6
Author: Owen Avery <powerboat9.ga...@gmail.com>
Date:   Tue Feb 18 02:03:56 2025 -0500

    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.ga...@gmail.com>

Diff:
---
 gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 11 ++++++++++-
 gcc/testsuite/rust/compile/nr2/exclude              |  3 ---
 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 768154de0a1a..310b3c55e4fe 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 a400378f071e..2186a1106d95 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

Reply via email to