| //@ normalize-stderr: "assoc_type_predicates\[[^\]]+\]" -> "assoc_type_predicates[HASH]" |
| |
| #![feature(rustc_attrs)] |
| #![feature(supertrait_item_shadowing)] |
| #![allow(dead_code)] |
| |
| trait A { |
| type Assoc; |
| } |
| impl<T> A for T { |
| type Assoc = i8; |
| } |
| |
| trait B: A { |
| type Assoc; |
| } |
| impl<T> B for T { |
| type Assoc = i16; |
| } |
| |
| trait C: B {} |
| impl<T> C for T {} |
| |
| #[rustc_dump_predicates] |
| fn a_bound<T: A<Assoc = i8>>() {} |
| //~^ ERROR rustc_dump_predicates |
| //~| NOTE TraitPredicate(<T as std::marker::Sized> |
| //~| NOTE TraitPredicate(<T as A> |
| //~| NOTE A::Assoc |
| |
| #[rustc_dump_predicates] |
| fn b_bound<T: B<Assoc = i16>>() {} |
| //~^ ERROR rustc_dump_predicates |
| //~| NOTE TraitPredicate(<T as std::marker::Sized> |
| //~| NOTE TraitPredicate(<T as B> |
| //~| NOTE B::Assoc |
| |
| #[rustc_dump_predicates] |
| fn c_bound<T: C<Assoc = i16>>() {} |
| //~^ ERROR rustc_dump_predicates |
| //~| NOTE TraitPredicate(<T as std::marker::Sized> |
| //~| NOTE TraitPredicate(<T as C> |
| //~| NOTE B::Assoc |
| |
| fn main() {} |