blob: 4627dfd2b780822da2cee2682ca04318a955269f [file] [log] [blame]
// Check that the user gets an error if they omit a binding from an
// object type.
pub trait Foo {
type A;
type B;
fn boo(&self) -> <Self as Foo>::A;
}
struct Bar;
impl Foo for isize {
type A = usize;
type B = char;
fn boo(&self) -> usize {
42
}
}
pub fn main() {
let a = &42isize as &dyn Foo<A=usize, B=char>;
let b = &42isize as &dyn Foo<A=usize>;
//~^ ERROR the value of the associated type `B` (from trait `Foo`) must be specified
let c = &42isize as &dyn Foo<B=char>;
//~^ ERROR the value of the associated type `A` (from trait `Foo`) must be specified
let d = &42isize as &dyn Foo;
//~^ ERROR the value of the associated types `A` (from trait `Foo`), `B` (from trait
}