// This test demonstrates a limitation of the trait solver. // Basically, one might think that `T` was covered by the projection since the // latter appears to normalize to a local type. However, since we instantiate the // constituent types of the self type of impls with fresh infer vars and try to // normalize them during orphan checking, we wind up trying to normalize a // projection whose self type is an infer var which unconditionally fails due to // ambiguity. //@ revisions: classic next //@[next] compile-flags: -Znext-solver //@ check-pass //@ compile-flags: --crate-type=lib //@ aux-crate:foreign=parametrized-trait.rs //@ edition:2021 trait Project { type Output; } impl Project for T { type Output = Local; } struct Local; impl foreign::Trait1 for ::Output {} //~^ WARNING type parameter `T` must be covered by another type //~| WARNING this was previously accepted by the compiler fn main() {}