https://gcc.gnu.org/g:6ade4ac86f17e814a84c11a0ccb80090fe7243f4

commit r17-5149-g6ade4ac86f17e814a84c11a0ccb80090fe7243f4
Author: Philip Herron <[email protected]>
Date:   Fri Sep 18 22:01:08 2026 +0100

    gccrs: Add missing lifetime handling to trait resolve
    
    Fixes Rust-GCC/gccrs#4912
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-trait-resolve.cc 
(TraitResolver::resolve_trait): add missing
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/issues/4912.rs: New test.
    
    Signed-off-by: Philip Herron <[email protected]>

Diff:
---
 gcc/rust/typecheck/rust-hir-trait-resolve.cc | 10 ++++++++++
 gcc/testsuite/rust/compile/issues/4912.rs    | 11 +++++++++++
 2 files changed, 21 insertions(+)

diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.cc 
b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
index c80899979c23..b694521533d5 100644
--- a/gcc/rust/typecheck/rust-hir-trait-resolve.cc
+++ b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
@@ -283,6 +283,8 @@ TraitResolver::resolve_trait (HIR::Trait *trait_reference)
   TyTy::BaseType *self = nullptr;
   std::vector<TyTy::SubstitutionParamMapping> substitutions;
 
+  auto lifetime_pin = context->push_clean_lifetime_resolver ();
+
   // this needs to be special cased for the sized trait to not auto implemented
   // Sized on Self
   for (auto &generic_param : trait_reference->get_generic_params ())
@@ -290,6 +292,14 @@ TraitResolver::resolve_trait (HIR::Trait *trait_reference)
       switch (generic_param.get ()->get_kind ())
        {
        case HIR::GenericParam::GenericKind::LIFETIME:
+         {
+           auto &lifetime_param
+             = static_cast<HIR::LifetimeParam &> (*generic_param);
+           context->intern_and_insert_lifetime (
+             lifetime_param.get_lifetime ());
+         }
+         break;
+
        case HIR::GenericParam::GenericKind::CONST:
          // FIXME: Skipping Lifetime and Const completely until better
          // handling.
diff --git a/gcc/testsuite/rust/compile/issues/4912.rs 
b/gcc/testsuite/rust/compile/issues/4912.rs
new file mode 100644
index 000000000000..4c3571331918
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issues/4912.rs
@@ -0,0 +1,11 @@
+#![feature(no_core, lang_items)]
+#![no_core]
+
+#[lang = "sized"]
+pub trait Sized {}
+
+pub trait Searcher<'a> {}
+
+pub trait ReverseSearcher<'a>: Searcher<'a> {}
+
+fn main() {}

Reply via email to