diff options
| author | Jeroen Vannevel <jer_vannevel@outlook.com> | 2022-01-10 18:46:47 +0000 |
|---|---|---|
| committer | Jeroen Vannevel <jer_vannevel@outlook.com> | 2022-01-14 01:32:10 +0000 |
| commit | 5675e0cd409ab4d3ca0c1717e7ec41825d4a3315 (patch) | |
| tree | c37de4e3db60f096637f4328747c98742a70f1f7 | |
| parent | 130f11f27087fb722d3f5c578886e29fa2863272 (diff) | |
| download | rust-5675e0cd409ab4d3ca0c1717e7ec41825d4a3315.tar.gz rust-5675e0cd409ab4d3ca0c1717e7ec41825d4a3315.zip | |
test cases with more branches
| -rw-r--r-- | crates/ide_assists/src/handlers/merge_match_arms.rs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/crates/ide_assists/src/handlers/merge_match_arms.rs b/crates/ide_assists/src/handlers/merge_match_arms.rs index b61edc8964b..8983aada34a 100644 --- a/crates/ide_assists/src/handlers/merge_match_arms.rs +++ b/crates/ide_assists/src/handlers/merge_match_arms.rs @@ -328,4 +328,62 @@ fn func() { "#, ); } + + #[test] + fn merge_match_arms_same_type_subsequent_arm_with_different_type_in_other() { + check_assist( + merge_match_arms, + r#" +enum MyEnum { + OptionA(f32), + OptionB(f32), + OptionC(f64) +} + +fn func(e: MyEnum) { + match e { + MyEnum::OptionA(x) => $0x.classify(), + MyEnum::OptionB(x) => x.classify(), + MyEnum::OptionC(x) => x.classify(), + }; +} +"#, + r#" +enum MyEnum { + OptionA(f32), + OptionB(f32), + OptionC(f64) +} + +fn func(e: MyEnum) { + match e { + MyEnum::OptionA(x) | MyEnum::OptionB(x) => x.classify(), + MyEnum::OptionC(x) => x.classify(), + }; +} +"#, + ); + } + + #[test] + fn merge_match_arms_same_type_skip_arm_with_different_type_in_between() { + check_assist_not_applicable( + merge_match_arms, + r#" +enum MyEnum { + OptionA(f32), + OptionB(f64), + OptionC(f32) +} + +fn func(e: MyEnum) { + match e { + MyEnum::OptionA(x) => $0x.classify(), + MyEnum::OptionB(x) => x.classify(), + MyEnum::OptionC(x) => x.classify(), + }; +} +"#, + ); + } } |
