//@ revisions: current next //@[next] compile-flags: -Znext-solver //@ ignore-compare-mode-next-solver (explicit revisions) //@[current] check-pass // Regression test for trait-system-refactor-initiative#205. Avoid // constraining other impl arguments when applying blanket impls. // FIXME(-Znext-solver): This currently incompletely constrains the // argument of `opaque: Trait` using the blanket impl of trait. // Ideally we don't do that. trait Trait {} impl Trait for T {} impl Trait for u64 {} fn impls_trait, U>(_: U) -> T { todo!() } fn foo() -> impl Sized { let x = Default::default(); if false { return impls_trait::<_, _>(x); } let _: u32 = x; //[next]~^ ERROR mismatched types 1u64 } fn main() {}