54 lines
1.3 KiB
Rust
54 lines
1.3 KiB
Rust
// This tests issue #79683: note in the error message that the trait is
|
|
// explicitly unimplemented instead of suggesting to implement it.
|
|
|
|
#![feature(negative_impls)]
|
|
|
|
struct Qux;
|
|
//~^ NOTE method `clone` not found for this
|
|
//~^^ NOTE method `foo` not found for this
|
|
|
|
impl !Clone for Qux {}
|
|
|
|
trait Bar {
|
|
fn bar(&self);
|
|
}
|
|
|
|
impl !Bar for u32 {}
|
|
|
|
trait Foo {
|
|
fn foo(&self);
|
|
}
|
|
//~^^^ NOTE `Foo` defines an item `foo`, perhaps you need to implement it
|
|
|
|
trait FooBar {
|
|
fn foo(&self);
|
|
}
|
|
|
|
impl !Foo for Qux {}
|
|
|
|
impl !FooBar for Qux {}
|
|
|
|
impl !FooBar for u32 {}
|
|
|
|
fn main() {
|
|
Qux.clone();
|
|
//~^ ERROR no method named `clone` found for struct `Qux`
|
|
//~| NOTE method not found in `Qux`
|
|
//~| NOTE `Clone` defines an item `clone`, but is explicitly unimplemented
|
|
|
|
0_u32.bar();
|
|
//~^ ERROR no method named `bar` found for type `u32`
|
|
//~| NOTE method not found in `u32`
|
|
//~| NOTE `Bar` defines an item `bar`, but is explicitly unimplemented
|
|
|
|
Qux.foo();
|
|
//~^ ERROR no method named `foo` found for struct `Qux`
|
|
//~| NOTE method not found in `Qux`
|
|
//~| NOTE the following traits define an item `foo`, but are explicitly unimplemented
|
|
|
|
0_u32.foo();
|
|
//~^ ERROR no method named `foo` found for type `u32`
|
|
//~| NOTE method not found in `u32`
|
|
//~| NOTE `FooBar` defines an item `foo`, but is explicitly unimplemented
|
|
}
|