//@ known-bug: #137049 //@ compile-flags: --crate-type=lib #![feature(type_alias_impl_trait)] use std::marker::PhantomData; trait Project1 { type Assoc1; } impl Project1 for T { type Assoc1 = (); } trait Project2 { type Assoc2; } impl> Project2 for PhantomData { type Assoc2 = (); } type Alias = impl Project2; #[define_opaque(Alias)] fn constrain() -> Alias { PhantomData:: } struct AdtConstructor( as Project2>::Assoc2);