rust/tests/ui/traits/next-solver/env-shadows-impls/discard-impls-shadowed-by-env-2.rs

31 lines
735 B
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//@ revisions: current next
//@ ignore-compare-mode-next-solver (explicit revisions)
//@[next] compile-flags: -Znext-solver
//@ check-pass
#![allow(warnings)]
trait Trait<U> {
type Assoc;
}
impl<T> Trait<u64> for T {
type Assoc = T;
}
fn lazy_init<T: Trait<U>, U>() -> (T, <T as Trait<U>>::Assoc) {
todo!()
}
fn foo<T: Trait<u32, Assoc = T>>(x: T) {
// When considering impl candidates to be equally valid as env candidates
// this ends up being ambiguous as `U` can be both `u32´ and `u64` here.
//
// This is acceptable breakage but we should still note that it's
// theoretically breaking.
let (delayed, mut proj) = lazy_init::<_, _>();
proj = x;
let _: T = delayed;
}
fn main() {}