1
Fork 0

Use lifetimes on type-alias-impl-trait used in function signatures to infer output type lifetimes

This commit is contained in:
Oli Scherer 2022-05-10 14:50:31 +00:00
parent c51871c469
commit d63f82e1ef
2 changed files with 18 additions and 1 deletions

View file

@ -1349,7 +1349,7 @@ impl<'tcx> TypeVisitor<'tcx> for LateBoundRegionsCollector {
// ignore the inputs to a projection, as they may not appear
// in the normalized form
if self.just_constrained {
if let ty::Projection(..) | ty::Opaque(..) = t.kind() {
if let ty::Projection(..) = t.kind() {
return ControlFlow::CONTINUE;
}
}

View file

@ -0,0 +1,17 @@
// check-pass
#![feature(type_alias_impl_trait)]
mod foo {
type Ty<'a> = impl Sized;
fn defining(s: &str) -> Ty<'_> { s }
fn execute(ty: Ty<'_>) -> &str { todo!() }
}
mod bar {
type Ty<'a> = impl FnOnce() -> &'a str;
fn defining(s: &str) -> Ty<'_> { move || s }
fn execute(ty: Ty<'_>) -> &str { ty() }
}
fn main() {}