From e02c5b5930c2c9ba3e5423fe12e2ef0155017297 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 30 May 2024 20:31:36 +0200 Subject: Merging upstream version 1.74.1+dfsg1. Signed-off-by: Daniel Baumann --- tests/ui/match/issue-72896-non-partial-eq-const.rs | 24 ++++++++++++++++++++++ .../match/issue-72896-non-partial-eq-const.stderr | 23 +++++++++++++++++++++ tests/ui/match/issue-72896.rs | 23 --------------------- tests/ui/match/match_non_exhaustive.stderr | 3 ++- 4 files changed, 49 insertions(+), 24 deletions(-) create mode 100644 tests/ui/match/issue-72896-non-partial-eq-const.rs create mode 100644 tests/ui/match/issue-72896-non-partial-eq-const.stderr delete mode 100644 tests/ui/match/issue-72896.rs (limited to 'tests/ui/match') diff --git a/tests/ui/match/issue-72896-non-partial-eq-const.rs b/tests/ui/match/issue-72896-non-partial-eq-const.rs new file mode 100644 index 000000000..a3095f0be --- /dev/null +++ b/tests/ui/match/issue-72896-non-partial-eq-const.rs @@ -0,0 +1,24 @@ +// run-pass +trait EnumSetType { + type Repr; +} + +enum Enum8 { } +impl EnumSetType for Enum8 { + type Repr = u8; +} + +#[derive(PartialEq, Eq)] +struct EnumSet { + __enumset_underlying: T::Repr, +} + +const CONST_SET: EnumSet = EnumSet { __enumset_underlying: 3 }; + +fn main() { + match CONST_SET { + CONST_SET => { /* ok */ } //~WARN: must implement `PartialEq` + //~| previously accepted + _ => panic!("match fell through?"), + } +} diff --git a/tests/ui/match/issue-72896-non-partial-eq-const.stderr b/tests/ui/match/issue-72896-non-partial-eq-const.stderr new file mode 100644 index 000000000..a7fc0cfc0 --- /dev/null +++ b/tests/ui/match/issue-72896-non-partial-eq-const.stderr @@ -0,0 +1,23 @@ +warning: to use a constant of type `EnumSet` in a pattern, the type must implement `PartialEq` + --> $DIR/issue-72896-non-partial-eq-const.rs:20:9 + | +LL | CONST_SET => { /* ok */ } + | ^^^^^^^^^ + | + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #116122 + = note: `#[warn(const_patterns_without_partial_eq)]` on by default + +warning: 1 warning emitted + +Future incompatibility report: Future breakage diagnostic: +warning: to use a constant of type `EnumSet` in a pattern, the type must implement `PartialEq` + --> $DIR/issue-72896-non-partial-eq-const.rs:20:9 + | +LL | CONST_SET => { /* ok */ } + | ^^^^^^^^^ + | + = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! + = note: for more information, see issue #116122 + = note: `#[warn(const_patterns_without_partial_eq)]` on by default + diff --git a/tests/ui/match/issue-72896.rs b/tests/ui/match/issue-72896.rs deleted file mode 100644 index 3a8b82037..000000000 --- a/tests/ui/match/issue-72896.rs +++ /dev/null @@ -1,23 +0,0 @@ -// run-pass -trait EnumSetType { - type Repr; -} - -enum Enum8 { } -impl EnumSetType for Enum8 { - type Repr = u8; -} - -#[derive(PartialEq, Eq)] -struct EnumSet { - __enumset_underlying: T::Repr, -} - -const CONST_SET: EnumSet = EnumSet { __enumset_underlying: 3 }; - -fn main() { - match CONST_SET { - CONST_SET => { /* ok */ } - _ => panic!("match fell through?"), - } -} diff --git a/tests/ui/match/match_non_exhaustive.stderr b/tests/ui/match/match_non_exhaustive.stderr index 46ee8d517..7b8bdfe00 100644 --- a/tests/ui/match/match_non_exhaustive.stderr +++ b/tests/ui/match/match_non_exhaustive.stderr @@ -45,7 +45,8 @@ note: `E2` defined here | LL | pub enum E2 { A, B } | ^^^^^^^^^^^ - = note: the matched value is of type `E2`, which is marked as non-exhaustive + = note: the matched value is of type `E2` + = note: `E2` is marked as non-exhaustive, so a wildcard `_` is necessary to match exhaustively help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown | LL | match e2 { E2::A => (), E2::B => (), _ => todo!() }; -- cgit v1.2.3