From c8f6e03c1570200dbb99587fb257d371aa7447b3 Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Tue, 9 Apr 2024 10:19:48 +0000 Subject: [PATCH] Add regression test --- tests/ui/wf/conflicting-impls.rs | 22 +++++++++++++++ tests/ui/wf/conflicting-impls.stderr | 41 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 tests/ui/wf/conflicting-impls.rs create mode 100644 tests/ui/wf/conflicting-impls.stderr diff --git a/tests/ui/wf/conflicting-impls.rs b/tests/ui/wf/conflicting-impls.rs new file mode 100644 index 00000000000..c387199a8bf --- /dev/null +++ b/tests/ui/wf/conflicting-impls.rs @@ -0,0 +1,22 @@ +//@ edition: 2021 + +struct Ty; + +impl TryFrom for u8 { + type Error = Ty; + fn try_from(_: Ty) -> Result { + //~^ ERROR type annotations needed + loop {} + } +} + +impl TryFrom for u8 { + //~^ ERROR conflicting implementations of trait + type Error = Ty; + fn try_from(_: Ty) -> Result { + //~^ ERROR type annotations needed + loop {} + } +} + +fn main() {} diff --git a/tests/ui/wf/conflicting-impls.stderr b/tests/ui/wf/conflicting-impls.stderr new file mode 100644 index 00000000000..69f48f69bfb --- /dev/null +++ b/tests/ui/wf/conflicting-impls.stderr @@ -0,0 +1,41 @@ +error[E0119]: conflicting implementations of trait `TryFrom` for type `u8` + --> $DIR/conflicting-impls.rs:12:1 + | +LL | impl TryFrom for u8 { + | ----------------------- first implementation here +... +LL | impl TryFrom for u8 { + | ^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `u8` + +error[E0282]: type annotations needed + --> $DIR/conflicting-impls.rs:7:5 + | +LL | fn try_from(_: Ty) -> Result { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type + | +note: the requirement `_ <: _` appears on the `impl`'s method `try_from` but not on the corresponding trait's method + --> $SRC_DIR/core/src/convert/mod.rs:LL:COL + | + = note: in this trait + ::: $SRC_DIR/core/src/convert/mod.rs:LL:COL + | + = note: this trait's method doesn't have the requirement `_ <: _` + +error[E0282]: type annotations needed + --> $DIR/conflicting-impls.rs:14:5 + | +LL | fn try_from(_: Ty) -> Result { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type + | +note: the requirement `_ <: _` appears on the `impl`'s method `try_from` but not on the corresponding trait's method + --> $SRC_DIR/core/src/convert/mod.rs:LL:COL + | + = note: in this trait + ::: $SRC_DIR/core/src/convert/mod.rs:LL:COL + | + = note: this trait's method doesn't have the requirement `_ <: _` + +error: aborting due to 3 previous errors + +Some errors have detailed explanations: E0119, E0282. +For more information about an error, try `rustc --explain E0119`.