//@ check-pass // Make sure we don't prefer a subtrait that we would've otherwise eliminated // in `consider_probe` during method probing. #![feature(supertrait_item_shadowing)] #![allow(dead_code)] struct W(T); trait Upstream { fn hello(&self) {} } impl Upstream for T {} trait Downstream: Upstream { fn hello(&self) {} } impl Downstream for W where T: Foo {} trait Foo {} fn main() { let x = W(1i32); x.hello(); }