// Projections cover type parameters if they normalize to a (local) type that covers them.
// This ensures that we don't perform an overly strict check on
// projections like in closed PR #100555 which did a syntactic
// check for type parameters in projections without normalizing
// first which would've lead to real-word regressions.

//@ check-pass
//@ revisions: classic next
//@[next] compile-flags: -Znext-solver

//@ aux-crate:foreign=parametrized-trait.rs
//@ edition:2021

trait Project { type Output; }

impl<T> Project for Wrapper<T> {
    type Output = Local;
}

struct Wrapper<T>(T);
struct Local;

impl<T> foreign::Trait1<Local, T> for <Wrapper<T> as Project>::Output {}

fn main() {}
