From: Philip Herron <herron.phi...@googlemail.com> When we lookup here it returns an optional which can lead to a crash because it needs a guard if it has a value.
gcc/rust/ChangeLog: * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): add guard gcc/testsuite/ChangeLog: * rust/compile/nr2/exclude: these tests now work it seems Signed-off-by: Philip Herron <herron.phi...@googlemail.com> --- gcc/rust/backend/rust-compile-resolve-path.cc | 7 ++----- gcc/testsuite/rust/compile/nr2/exclude | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/gcc/rust/backend/rust-compile-resolve-path.cc b/gcc/rust/backend/rust-compile-resolve-path.cc index 69599cc6185..d248ee282a6 100644 --- a/gcc/rust/backend/rust-compile-resolve-path.cc +++ b/gcc/rust/backend/rust-compile-resolve-path.cc @@ -248,12 +248,9 @@ HIRCompileBase::query_compile (HirId ref, TyTy::BaseType *lookup, return CompileInherentImplItem::Compile (resolved_item->first, ctx, lookup, true, expr_locus); } - else + else if (auto trait_item + = ctx->get_mappings ().lookup_hir_trait_item (ref)) { - // it might be resolved to a trait item - tl::optional<HIR::TraitItem *> trait_item - = ctx->get_mappings ().lookup_hir_trait_item (ref); - HIR::Trait *trait = ctx->get_mappings ().lookup_trait_item_mapping ( trait_item.value ()->get_mappings ().get_hirid ()); diff --git a/gcc/testsuite/rust/compile/nr2/exclude b/gcc/testsuite/rust/compile/nr2/exclude index 5cc7cf7d64c..8bcc8aed030 100644 --- a/gcc/testsuite/rust/compile/nr2/exclude +++ b/gcc/testsuite/rust/compile/nr2/exclude @@ -63,7 +63,6 @@ macros/mbe/macro23.rs macros/mbe/macro40.rs macros/mbe/macro43.rs macros/mbe/macro44.rs -macros/mbe/macro50.rs macros/mbe/macro54.rs macros/mbe/macro6.rs macros/mbe/macro_rules_macro_rules.rs @@ -141,7 +140,6 @@ issue-2423.rs issue-266.rs additional-trait-bounds2.rs auto_traits2.rs -auto_traits4.rs issue-3140.rs cmp1.rs derive_clone_enum1.rs -- 2.45.2