[java-highlighting] Don't provide the "Move switch branch '...' before '...'" quick-fix when labels dominate each other

(IDEA-27229)

GitOrigin-RevId: 12445a0a68c4a4d3f99a92cdabbb8a6288c16c6f
This commit is contained in:
Andrey.Cherkasov
2021-10-18 21:31:42 +03:00
committed by intellij-monorepo-bot
parent 23fbe72cac
commit 94d6143fef
3 changed files with 29 additions and 1 deletions

View File

@@ -688,7 +688,11 @@ public class SwitchBlockHighlightingModel {
}
alreadyDominatedLabels.forEach((overWhom, who) -> {
HighlightInfo info = createError(overWhom, JavaErrorBundle.message("switch.dominance.of.preceding.label", who.getText()));
QuickFixAction.registerQuickFixAction(info, getFixFactory().createMoveSwitchBranchUpFix(who, overWhom));
PsiPattern overWhomPattern = ObjectUtils.tryCast(overWhom, PsiPattern.class);
PsiPattern whoPattern = ObjectUtils.tryCast(who, PsiPattern.class);
if (whoPattern == null || !JavaPsiPatternUtil.dominates(overWhomPattern, whoPattern)) {
QuickFixAction.registerQuickFixAction(info, getFixFactory().createMoveSwitchBranchUpFix(who, overWhom));
}
QuickFixAction.registerQuickFixAction(info, getFixFactory().createDeleteSwitchLabelFix(overWhom));
results.add(info);
});

View File

@@ -0,0 +1,12 @@
// "Move switch branch 'List i' before 'List n'" "false"
import java.util.List;
class Main {
void test(Object o) {
String str = switch (o) {
case List n -> "List";
case List i<caret> -> "List";
default -> "default";
};
}
}

View File

@@ -0,0 +1,12 @@
// "Move switch branch 'List n && 42 == 42' before 'List n'" "false"
import java.util.List;
class Main {
void test(Object o) {
String str = switch (o) {
case List n -> "List";
case List n && 42 == 42<caret> -> "List n && 42 == 42";
default -> "default";
};
}
}