blob: ec17e0b093b384bf5dee2a5c4b0560c0d51145d2 [file] [log] [blame]
// This is a non-regression test for issue #116657, where NLL and `-Zpolonius=next` computed
// different loan scopes when a member constraint was not ultimately applied.
// revisions: nll polonius
// [polonius] compile-flags: -Zpolonius=next
#![feature(impl_trait_in_assoc_type)]
trait Callable {
type Output;
fn call(x: Self) -> Self::Output;
}
trait PlusOne {}
impl<'a> PlusOne for &'a mut i32 {}
impl<T: PlusOne> Callable for T {
//[nll]~^ ERROR not all trait items implemented
//[polonius]~^^ ERROR not all trait items implemented
type Output = impl PlusOne;
//[nll]~^ ERROR unconstrained opaque type
//[polonius]~^^ ERROR unconstrained opaque type
}
fn test<'a>(y: &'a mut i32) -> impl PlusOne {
<&mut i32 as Callable>::call(y)
//[nll]~^ ERROR hidden type for `impl PlusOne` captures lifetime
//[polonius]~^^ ERROR hidden type for `impl PlusOne` captures lifetime
}
fn main() {}