blob: c91b8de39f52ea84905ee60b503d101368c5f560 [file] [log] [blame]
#![feature(associated_type_defaults)]
// Tests that a trait with one defaulted and one non-defaulted assoc. type behaves properly.
trait Trait {
type Foo = u8;
type Bar;
}
// `Bar` must be specified
impl Trait for () {}
//~^ error: not all trait items implemented, missing: `Bar`
impl Trait for bool {
//~^ error: not all trait items implemented, missing: `Bar`
type Foo = ();
}
impl Trait for u8 {
type Bar = ();
}
impl Trait for u16 {
type Foo = String;
type Bar = bool;
}
fn main() {
let _: <u8 as Trait>::Foo = 0u8;
let _: <u8 as Trait>::Bar = ();
let _: <u16 as Trait>::Foo = String::new();
let _: <u16 as Trait>::Bar = true;
}