2019-06-12 10:18:32 -05:00
|
|
|
// check-pass
|
2017-09-25 18:49:34 -05:00
|
|
|
|
|
|
|
#![feature(decl_macro, associated_type_defaults)]
|
2019-06-12 10:18:32 -05:00
|
|
|
|
2017-09-25 18:49:34 -05:00
|
|
|
trait Base {
|
|
|
|
type AssocTy;
|
|
|
|
fn f();
|
|
|
|
}
|
|
|
|
trait Derived: Base {
|
|
|
|
fn g();
|
|
|
|
}
|
|
|
|
|
|
|
|
macro mac() {
|
2020-02-10 10:39:10 -06:00
|
|
|
type A = dyn Base<AssocTy = u8>;
|
|
|
|
type B = dyn Derived<AssocTy = u8>;
|
2017-09-25 18:49:34 -05:00
|
|
|
|
|
|
|
impl Base for u8 {
|
|
|
|
type AssocTy = u8;
|
|
|
|
fn f() {
|
|
|
|
let _: Self::AssocTy;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
impl Derived for u8 {
|
|
|
|
fn g() {
|
|
|
|
let _: Self::AssocTy;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn h<T: Base, U: Derived>() {
|
|
|
|
let _: T::AssocTy;
|
|
|
|
let _: U::AssocTy;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mac!();
|
|
|
|
|
2018-10-31 07:08:01 -05:00
|
|
|
fn main() {}
|