From: Philip Herron <[email protected]>
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]>
Tested on x86_64-pc-linux-gnu.
---
gcc/rust/typecheck/rust-hir-trait-resolve.cc | 10 ++++++++++
gcc/testsuite/rust/compile/issues/4912.rs | 11 +++++++++++
2 files changed, 21 insertions(+)
create mode 100644 gcc/testsuite/rust/compile/issues/4912.rs
diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.cc
b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
index c80899979c2..b694521533d 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 00000000000..4c357133191
--- /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() {}
--
2.55.0