// This test demonstrates an ICE that may occur when we try to resolve the instance // of a impl that has different generics than the trait it's implementing. This ensures // we first check that the args are compatible before resolving the body, just like // we do in projection before substituting a GAT. // // Regression test for issue #125877. //@ compile-flags: -Znext-solver #![feature(const_trait_impl, effects)] //~^ ERROR feature has been removed #[const_trait] trait Main { fn compute() -> u32; } impl const Main for () { fn compute<'x>() -> u32 { //~^ ERROR associated function `compute` has 0 type parameters but its trait declaration has 1 type parameter 0 } } #[const_trait] trait Aux {} impl const Aux for () {} fn main() { const _: u32 = <()>::compute::<()>(); }