From 620b2c353f9799148caff6ef0be57ab9a984d1b8 Mon Sep 17 00:00:00 2001 From: "Roman.Ivanov" Date: Thu, 20 Feb 2020 15:35:27 +0700 Subject: [PATCH] EnhancedSwitchMigrationInspection: proper condition for non-exhaustive switch GitOrigin-RevId: 7e0310220f13821a87cc0e231d12f403af65b4e1 --- .../codeInspection/EnhancedSwitchMigrationInspection.java | 7 ++++--- .../afterSwitchWithVariableInitializedNonExhaustive.java | 2 +- .../beforeSwitchWithVariableInitializedNonExhaustive.java | 2 +- .../beforeSwitchWithVariableNonExhaustive.java | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java b/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java index a71f435c3e03..fd43b007d5c3 100644 --- a/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java @@ -480,11 +480,12 @@ public class EnhancedSwitchMigrationInspection extends AbstractBaseJavaLocalInsp } if (assignedVariable == null || !hasAssignedBranch) return null; boolean isRightAfterDeclaration = isRightAfterDeclaration(anchor, assignedVariable); - if (!wasDefault || !isExhaustive) { + if (!wasDefault) { SwitchExpressionBranch defaultBranch = getVariableAssigningDefaultBranch(assignedVariable, isRightAfterDeclaration, statement); - if (defaultBranch == null) { - } else { + if (defaultBranch != null) { newBranches.add(defaultBranch); + } else if (!isExhaustive) { + return null; } } return new SwitchExistingVariableReplacer(assignedVariable, statement, expressionBeingSwitched, newBranches, isRightAfterDeclaration); diff --git a/java/java-tests/testData/inspection/switchExpressionMigration/afterSwitchWithVariableInitializedNonExhaustive.java b/java/java-tests/testData/inspection/switchExpressionMigration/afterSwitchWithVariableInitializedNonExhaustive.java index 139a196aac95..2f03f56e6665 100644 --- a/java/java-tests/testData/inspection/switchExpressionMigration/afterSwitchWithVariableInitializedNonExhaustive.java +++ b/java/java-tests/testData/inspection/switchExpressionMigration/afterSwitchWithVariableInitializedNonExhaustive.java @@ -2,7 +2,7 @@ import java.util.*; class SwitchExpressionMigration { - private static void m() { + private static void m(String s) { int result = switch (s) { case "a" -> 1; case "b" -> 2; diff --git a/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableInitializedNonExhaustive.java b/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableInitializedNonExhaustive.java index c07dc395315a..4fb5fa9cd772 100644 --- a/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableInitializedNonExhaustive.java +++ b/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableInitializedNonExhaustive.java @@ -2,7 +2,7 @@ import java.util.*; class SwitchExpressionMigration { - private static void m() { + private static void m(String s) { int result = 0; switch(s) { case "a": result = 1; break; diff --git a/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableNonExhaustive.java b/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableNonExhaustive.java index f47e229023dd..84a16156c6a6 100644 --- a/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableNonExhaustive.java +++ b/java/java-tests/testData/inspection/switchExpressionMigration/beforeSwitchWithVariableNonExhaustive.java @@ -2,7 +2,7 @@ import java.util.*; class SwitchExpressionMigration { - private static void m() { + private static void m(String s) { int result; switch(s) { case "a": result = 1; break;