Use lifetimes on type-alias-impl-trait used in function signatures to infer output type lifetimes
This commit is contained in:
parent
c51871c469
commit
d63f82e1ef
2 changed files with 18 additions and 1 deletions
|
@ -1349,7 +1349,7 @@ impl<'tcx> TypeVisitor<'tcx> for LateBoundRegionsCollector {
|
||||||
// ignore the inputs to a projection, as they may not appear
|
// ignore the inputs to a projection, as they may not appear
|
||||||
// in the normalized form
|
// in the normalized form
|
||||||
if self.just_constrained {
|
if self.just_constrained {
|
||||||
if let ty::Projection(..) | ty::Opaque(..) = t.kind() {
|
if let ty::Projection(..) = t.kind() {
|
||||||
return ControlFlow::CONTINUE;
|
return ControlFlow::CONTINUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
17
src/test/ui/type-alias-impl-trait/constrain_inputs.rs
Normal file
17
src/test/ui/type-alias-impl-trait/constrain_inputs.rs
Normal 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() {}
|
Loading…
Add table
Add a link
Reference in a new issue