Change:
<!-- [31mICE[0m: Rustc '' 'error: internal compiler error: unexpected ambiguity: Canonical { value: ParamEnvAnd { paramenv: ParamEnv { callerbounds: [Binder { value: TraitPredicate(<T as std::marker::Sized, polarity:Positive), boundvars: [] }], reveal: All }, value: AliasTy { args: [T/, T/], defid: DefId(0:15 ~ D12C4C72A7C9302C8C215614593AF30FFE4489DB9D3A3FF5D8A63A89757A8415[3791]::Trait::Assoc) } }, maxuniverse: U0, variables: [] } Canonical { value: QueryResponse { varvalues: CanonicalVarValues { varvalues: [] }, regionconstraints: QueryRegionConstraints { outlives: [], memberconstraints: [] }, certainty: Ambiguous, opaquetypes: [], value: NormalizationResult { normalizedty: ^0 } }, maxuniverse: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }', 'error: internal compiler error: unexpected ambiguity: Canonical { value: ParamEnvAnd { paramenv: ParamEnv { callerbounds: [Binder { value: TraitPredicate(<T as std::marker::Sized, polarity:Positive), boundvars: [] }], reveal: All }, value: AliasTy { args: [T/, T/], defid: DefId(0:15 ~ D12C4C72A7C9302C8C215614593AF30FFE4489DB9D3A3FF5D8A63A89757A8415[3791]::Trait::Assoc) } }, maxuniverse: U0, variables: [] } Canonical { value: QueryResponse { varvalues: CanonicalVarValues { varvalues: [] }, regionconstraints: QueryRegionConstraints { outlives: [], memberconstraints: [] }, certainty: Ambiguous, opaquetypes: [], value: NormalizationResult { normalizedty: ^0 } }, maxuniverse: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }' File: --auto-reduced (treereduce-rust): original: Version information ` Command: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongProgram output</strong</summary<p</p</details<!-- query stack: error: internal compiler error: unexpected ambiguity: Canonical { value: ParamEnvAnd { paramenv: ParamEnv { callerbounds: [Binder { value: TraitPredicate(<T as std::marker::Sized, polarity:Positive), boundvars: [] }], reveal: All }, value: AliasTy { args: [T/, T/], defid: DefId(0:15 ~ mvce[8437]::Trait::Assoc) } }, maxuniverse: U0, variables: [] } Canonical { value: QueryResponse { varvalues: CanonicalVarValues { varvalues: [] }, regionconstraints: QueryRegionConstraints { outlives: [], memberconstraints: [] }, certainty: Ambiguous, opaquetypes: [], value: NormalizationResult { normalizedty: ^0 } }, maxuniverse: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] } --
Apparently this regressed in ? weird..
still crashing :thinking:
uhm... how? the corresponding crashes test now passes
yeh, its weird.. my first guess would be that there are some rustflags that passed by default to uitests that "prevent" the ice, but skipping them, such as doing still crashes them? something like debuginfo, or crate-type=something ?
this test only ICEs during codegen, so it passes with cargo build. see the discussion in the compiler team meeting https://rust-

Discussion:
return false; } <del> // Avoid using the master cache during coherence and just rely </del> <ins> // Avoid using the global cache during coherence and just rely </ins> // on the local cache. This effectively disables caching // during coherence. It is really just a simplification to // avoid us having to fear that coherence results "pollute"

return false; } <ins> // Avoid using the global cache when we're defining opaque types // as their hidden type may impact the result of candidate selection. if !self.infcx.defining_opaque_types().is_empty() { return false; } </ins> // Otherwise, we can use the global cache. true }

<del> //@ known-bug: #119272 #![feature(type_alias_impl_trait)] mod defining_scope { use super::*; pub type Alias<T> = impl Sized; pub fn cast<T>(x: Container<Alias<T>, T>) -> Container<T, T> { x } } struct Container<T: Trait<U>, U> { x: <T as Trait<U>>::Assoc, } trait Trait<T> { type Assoc; } impl<T> Trait<T> for T { type Assoc = Box<u32>; } impl<T> Trait<T> for defining_scope::Alias<T> { type Assoc = usize; } fn main() {} </del>

<ins> //! used to ICE: #119272 //@ check-pass #![feature(type_alias_impl_trait)] mod defining_scope { use super::*; pub type Alias<T> = impl Sized; pub fn cast<T>(x: Container<Alias<T>, T>) -> Container<T, T> { x } } struct Container<T: Trait<U>, U> { x: <T as Trait<U>>::Assoc, } trait Trait<T> { type Assoc; } impl<T> Trait<T> for T { type Assoc = Box<u32>; } impl<T> Trait<T> for defining_scope::Alias<T> { type Assoc = usize; } fn main() {} </ins>