fix: not insert missing lifetime for ConstParamTy

This commit is contained in:
bohan 2023-08-08 14:20:22 +08:00
parent 8e7fd55131
commit 078b942fef
4 changed files with 31 additions and 7 deletions

View File

@ -2404,7 +2404,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
should_continue = suggest(err, false, span, message, sugg);
}
}
LifetimeRibKind::Item => break,
LifetimeRibKind::Item | LifetimeRibKind::ConstParamTy => break,
_ => {}
}
if !should_continue {
@ -2510,7 +2510,9 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
.lifetime_ribs
.iter()
.rev()
.take_while(|rib| !matches!(rib.kind, LifetimeRibKind::Item))
.take_while(|rib| {
!matches!(rib.kind, LifetimeRibKind::Item | LifetimeRibKind::ConstParamTy)
})
.flat_map(|rib| rib.bindings.iter())
.map(|(&ident, &res)| (ident, res))
.filter(|(ident, _)| ident.name != kw::UnderscoreLifetime)

View File

@ -0,0 +1,9 @@
// https://github.com/rust-lang/rust/issues/113462
struct S2<'b>(&'b ());
struct S<'a, const N: S2>(&'a ());
//~^ ERROR missing lifetime specifier [E0106]
//~| ERROR `S2<'_>` is forbidden as the type of a const generic parameter
fn main() {}

View File

@ -0,0 +1,18 @@
error[E0106]: missing lifetime specifier
--> $DIR/lifetime-in-const-param.rs:5:23
|
LL | struct S<'a, const N: S2>(&'a ());
| ^^ expected named lifetime parameter
error: `S2<'_>` is forbidden as the type of a const generic parameter
--> $DIR/lifetime-in-const-param.rs:5:23
|
LL | struct S<'a, const N: S2>(&'a ());
| ^^
|
= note: the only supported types are integers, `bool` and `char`
= help: more complex types are supported with `#![feature(adt_const_params)]`
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0106`.

View File

@ -3,11 +3,6 @@ error[E0106]: missing lifetime specifier
|
LL | fn d<const C: S>() {}
| ^ expected named lifetime parameter
|
help: consider introducing a named lifetime parameter
|
LL | fn d<'a, const C: S<'a>>() {}
| +++ ++++
error[E0770]: the type of const parameters must not depend on other generic parameters
--> $DIR/unusual-rib-combinations.rs:29:22