| //@ 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>(T); | |
| trait Upstream { | |
| fn hello(&self) {} | |
| } | |
| impl<T> Upstream for T {} | |
| trait Downstream: Upstream { | |
| fn hello(&self) {} | |
| } | |
| impl<T> Downstream for W<T> where T: Foo {} | |
| trait Foo {} | |
| fn main() { | |
| let x = W(1i32); | |
| x.hello(); | |
| } |