https://gcc.gnu.org/g:20c8539a23e0a0462e3763c3983ffb3ca9b7e709

commit 20c8539a23e0a0462e3763c3983ffb3ca9b7e709
Author: Philip Herron <herron.phi...@googlemail.com>
Date:   Mon Mar 31 17:33:59 2025 +0100

    gccrs: Fix ICE when resolving lifetimes without name
    
    We dont need to assert here the lifetime code already supports this case.
    
    Fixes Rust-GCC#3657
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-type-check-base.cc: remove assertion
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/issue-3657.rs: New test.
    
    Signed-off-by: Philip Herron <herron.phi...@googlemail.com>

Diff:
---
 gcc/rust/typecheck/rust-hir-type-check-base.cc | 2 --
 gcc/testsuite/rust/compile/issue-3657.rs       | 8 ++++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.cc 
b/gcc/rust/typecheck/rust-hir-type-check-base.cc
index 378ef02eda12..55ab86f4105b 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-base.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-base.cc
@@ -397,8 +397,6 @@ TypeCheckBase::resolve_generic_params (
            auto lifetime_param
              = static_cast<HIR::LifetimeParam &> (*generic_param);
            auto lifetime = lifetime_param.get_lifetime ();
-           rust_assert (lifetime.get_lifetime_type ()
-                        == AST::Lifetime::LifetimeType::NAMED);
            context->get_lifetime_resolver ().insert_mapping (
              context->intern_lifetime (lifetime));
          }
diff --git a/gcc/testsuite/rust/compile/issue-3657.rs 
b/gcc/testsuite/rust/compile/issue-3657.rs
new file mode 100644
index 000000000000..978f3ce336fb
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issue-3657.rs
@@ -0,0 +1,8 @@
+struct Foo<'_>(&'_ u8);
+
+impl Foo<'a> {
+    // { dg-error "unresolved lifetime" "" { target *-*-* } .-1 }
+    fn x() {}
+}
+
+fn x() {}

Reply via email to