| //! Check that the method call does not constrain the RPIT to `i32`, even though | |
| //! `i32` is the only type that satisfies the RPIT's trait bounds. | |
| //@ revisions: current next | |
| //@[next] compile-flags: -Znext-solver | |
| //@[current] check-pass | |
| trait Trait {} | |
| impl Trait for i32 {} | |
| struct Bar<T>(T); | |
| impl Bar<u32> { | |
| fn bar(self) {} | |
| } | |
| impl<T: Trait> Bar<T> { | |
| fn bar(self) {} | |
| } | |
| fn foo(x: bool) -> Bar<impl Trait> { | |
| if x { | |
| let x = foo(false); | |
| x.bar(); | |
| //[next]~^ ERROR: multiple applicable items in scope | |
| } | |
| Bar(42_i32) | |
| } | |
| fn main() {} |