summaryrefslogtreecommitdiffstats
path: root/tests/ui/nll/polonius/location-insensitive-scopes-issue-116657.rs
blob: ec17e0b093b384bf5dee2a5c4b0560c0d51145d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 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() {}