diff options
| author | reddevilmidzy <midzy0228@gmail.com> | 2025-05-02 15:53:51 +0900 |
|---|---|---|
| committer | reddevilmidzy <midzy0228@gmail.com> | 2025-05-02 15:53:51 +0900 |
| commit | a9cd0a9f03c9737274170db0a1a421183b63b66f (patch) | |
| tree | d1d0103e750599522c530967494e25a43abfa07c | |
| parent | 3350c1eb3fd8fe1bee1ed4c76944d707bd256876 (diff) | |
| download | rust-a9cd0a9f03c9737274170db0a1a421183b63b66f.tar.gz rust-a9cd0a9f03c9737274170db0a1a421183b63b66f.zip | |
Add regression test for 133065
| -rw-r--r-- | tests/ui/traits/trait-impl-self-mismatch.rs | 19 | ||||
| -rw-r--r-- | tests/ui/traits/trait-impl-self-mismatch.stderr | 12 |
2 files changed, 31 insertions, 0 deletions
diff --git a/tests/ui/traits/trait-impl-self-mismatch.rs b/tests/ui/traits/trait-impl-self-mismatch.rs new file mode 100644 index 00000000000..54226cf2c9a --- /dev/null +++ b/tests/ui/traits/trait-impl-self-mismatch.rs @@ -0,0 +1,19 @@ +//@compile-flags: -Zvalidate-mir -Zinline-mir -Zinline-mir-threshold=300 + +//! Ensure that a trait method implemented with the wrong signature +//! correctly triggers a compile error and not an ICE. +//! Regression test for <https://github.com/rust-lang/rust/issues/133065>. + +trait Bar { + fn bar(&self) {} +} + +impl<T> Bar for T { + fn bar() { //~ ERROR method `bar` has a `&self` declaration in the trait, but not in the impl + let _ = "Hello".bytes().nth(3); + } +} + +fn main() { + ().bar(); +} diff --git a/tests/ui/traits/trait-impl-self-mismatch.stderr b/tests/ui/traits/trait-impl-self-mismatch.stderr new file mode 100644 index 00000000000..4ee06787c7d --- /dev/null +++ b/tests/ui/traits/trait-impl-self-mismatch.stderr @@ -0,0 +1,12 @@ +error[E0186]: method `bar` has a `&self` declaration in the trait, but not in the impl + --> $DIR/trait-impl-self-mismatch.rs:12:5 + | +LL | fn bar(&self) {} + | ------------- `&self` used in trait +... +LL | fn bar() { + | ^^^^^^^^ expected `&self` in impl + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0186`. |
