aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2025-02-18 02:03:56 -0500
committerPhilip Herron <philip.herron@embecosm.com>2025-02-19 08:37:03 +0000
commit9a1162dc57771cc441ce7a594f53b7e75d52dde6 (patch)
treee2998b203d873b11fa48a187ecf101cfda4d7d22 /gcc/rust/resolve
parent8dc95df84e3473fe699e957f8a69827fc841541a (diff)
downloadgcc-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.cc11
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);