diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2025-07-19 21:18:14 +0200 | 
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2025-07-20 18:27:30 +0200 | 
| commit | 9b01de20e10376d379ae32baa6a315d8e30cb351 (patch) | |
| tree | 146d8535eec3612d51f0318528d248dd0847f66f /compiler/rustc_pattern_analysis/tests/exhaustiveness.rs | |
| parent | 2bb00741d463143a10e632bb118d4ed336dbb75f (diff) | |
| download | rust-9b01de20e10376d379ae32baa6a315d8e30cb351.tar.gz rust-9b01de20e10376d379ae32baa6a315d8e30cb351.zip  | |
List all the variants of non-exhaustive enums in exhaustive mode
Diffstat (limited to 'compiler/rustc_pattern_analysis/tests/exhaustiveness.rs')
| -rw-r--r-- | compiler/rustc_pattern_analysis/tests/exhaustiveness.rs | 22 | 
1 files changed, 20 insertions, 2 deletions
diff --git a/compiler/rustc_pattern_analysis/tests/exhaustiveness.rs b/compiler/rustc_pattern_analysis/tests/exhaustiveness.rs index 961693f79c3..14ca0d057f0 100644 --- a/compiler/rustc_pattern_analysis/tests/exhaustiveness.rs +++ b/compiler/rustc_pattern_analysis/tests/exhaustiveness.rs @@ -117,7 +117,7 @@ fn test_nested() { #[test] fn test_witnesses() { // TY = Option<bool> - const TY: Ty = Ty::Enum(&[Ty::Bool, Ty::Tuple(&[])]); + const TY: Ty = Ty::Enum(&[Ty::Bool, UNIT]); // ty = (Option<bool>, Option<bool>) let ty = Ty::Tuple(&[TY, TY]); assert_witnesses(AllOfThem, ty, vec![], vec!["(_, _)"]); @@ -158,12 +158,30 @@ fn test_witnesses() { ), vec!["(_, Enum::Variant0(true))", "(_, Enum::Variant1(_))"], ); + + let ty = Ty::NonExhaustiveEnum(&[UNIT, UNIT, UNIT]); + assert_witnesses( + OnlySome, + ty, + pats!(ty; + Variant.0, + ), + vec!["_"], + ); + assert_witnesses( + AllOfThem, + ty, + pats!(ty; + Variant.0, + ), + vec!["Enum::Variant1(_)", "Enum::Variant2(_)", "_"], + ); } #[test] fn test_empty() { // `TY = Result<bool, !>` - const TY: Ty = Ty::Enum(&[Ty::Bool, Ty::Enum(&[])]); + const TY: Ty = Ty::Enum(&[Ty::Bool, NEVER]); assert_exhaustive(pats!(TY; Variant.0, ));  | 
