diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2025-02-18 02:03:56 -0500 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-24 13:07:07 +0100 |
commit | 1dc99a4264339b305cf04127051b283e52d4fb7c (patch) | |
tree | a8a6bc641a532c23e864478f5e64ff3ce127df36 | |
parent | c92dfc78201f73b5682851bffaa4e596adf66f2d (diff) | |
download | gcc-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.cc | 11 | ||||
-rw-r--r-- | 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 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 |