diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2025-02-18 02:03:56 -0500 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2025-02-19 08:37:03 +0000 |
commit | 9a1162dc57771cc441ce7a594f53b7e75d52dde6 (patch) | |
tree | e2998b203d873b11fa48a187ecf101cfda4d7d22 /gcc/rust/resolve | |
parent | 8dc95df84e3473fe699e957f8a69827fc841541a (diff) | |
download | gcc-9a1162dc57771cc441ce7a594f53b7e75d52dde6.zip gcc-9a1162dc57771cc441ce7a594f53b7e75d52dde6.tar.gz gcc-9a1162dc57771cc441ce7a594f53b7e75d52dde6.tar.bz2 |
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>
Diffstat (limited to 'gcc/rust/resolve')
-rw-r--r-- | gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 11 |
1 files changed, 10 insertions, 1 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 768154d..310b3c5 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); |