diff options
Diffstat (limited to 'tests/ui/methods')
| -rw-r--r-- | tests/ui/methods/trait-method-resolution-over-inherent-22684.rs | 19 | ||||
| -rw-r--r-- | tests/ui/methods/trait-method-resolution-over-inherent-22684.stderr | 11 |
2 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/methods/trait-method-resolution-over-inherent-22684.rs b/tests/ui/methods/trait-method-resolution-over-inherent-22684.rs new file mode 100644 index 00000000000..9f317b576e6 --- /dev/null +++ b/tests/ui/methods/trait-method-resolution-over-inherent-22684.rs @@ -0,0 +1,19 @@ +// https://github.com/rust-lang/rust/issues/22684 +mod foo { + pub struct Foo; + impl Foo { + fn bar(&self) {} + } + + pub trait Baz { + fn bar(&self) -> bool { true } + } + impl Baz for Foo {} +} + +fn main() { + use foo::Baz; + + // Check that `bar` resolves to the trait method, not the inherent impl method. + let _: () = foo::Foo.bar(); //~ ERROR mismatched types +} diff --git a/tests/ui/methods/trait-method-resolution-over-inherent-22684.stderr b/tests/ui/methods/trait-method-resolution-over-inherent-22684.stderr new file mode 100644 index 00000000000..0ab7701fa9e --- /dev/null +++ b/tests/ui/methods/trait-method-resolution-over-inherent-22684.stderr @@ -0,0 +1,11 @@ +error[E0308]: mismatched types + --> $DIR/trait-method-resolution-over-inherent-22684.rs:18:17 + | +LL | let _: () = foo::Foo.bar(); + | -- ^^^^^^^^^^^^^^ expected `()`, found `bool` + | | + | expected due to this + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0308`. |
