From 808760e6ecc2597f07b25ee32f98bdbac7636628 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 1 Jul 2019 10:56:12 +0200 Subject: [PATCH] [java] 'yield' statements support in the 'duplicated switch branches' inspection GitOrigin-RevId: 02c6103423343552dee71943186e576dc06561ce --- .../DuplicateBranchesInSwitchInspection.java | 3 ++- .../intellij/psi/impl/source/tree/ElementType.java | 3 ++- .../CaseLabelsExpression.java | 8 ++++---- .../CaseLabelsExpressionDefaultFirst.java | 6 +++--- .../CaseLabelsExpressionDefaultLast.java | 6 +++--- .../CaseLabelsExpressionDifferentComments.java | 8 ++++---- .../CaseLabelsExpressionSameComments.java | 8 ++++---- .../DuplicateBranchesInEnhancedSwitchTest.kt | 11 ++--------- 8 files changed, 24 insertions(+), 29 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java b/java/java-impl/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java index 9b208d60baa9..b3e7ba1f91a4 100644 --- a/java/java-impl/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java @@ -708,6 +708,7 @@ public class DuplicateBranchesInSwitchInspection extends LocalInspectionTool { private static boolean isSimpleExit(@Nullable PsiStatement statement) { if (statement instanceof PsiBreakStatement || + statement instanceof PsiYieldStatement || statement instanceof PsiContinueStatement || statement instanceof PsiThrowStatement) { return true; @@ -935,4 +936,4 @@ public class DuplicateBranchesInSwitchInspection extends LocalInspectionTool { tracker.deleteAndRestoreComments(myRuleToDelete.myLabel); } } -} +} \ No newline at end of file diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/ElementType.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/ElementType.java index 1475d91e3653..0faaf45851d1 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/ElementType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/ElementType.java @@ -52,7 +52,8 @@ public interface ElementType extends JavaTokenType, JavaDocTokenType, JavaElemen TokenSet JAVA_STATEMENT_BIT_SET = TokenSet.create( EMPTY_STATEMENT, BLOCK_STATEMENT, EXPRESSION_STATEMENT, EXPRESSION_LIST_STATEMENT, DECLARATION_STATEMENT, IF_STATEMENT, WHILE_STATEMENT, FOR_STATEMENT, FOREACH_STATEMENT, DO_WHILE_STATEMENT, SWITCH_STATEMENT, SWITCH_LABEL_STATEMENT, BREAK_STATEMENT, - CONTINUE_STATEMENT, RETURN_STATEMENT, THROW_STATEMENT, SYNCHRONIZED_STATEMENT, TRY_STATEMENT, LABELED_STATEMENT, ASSERT_STATEMENT); + CONTINUE_STATEMENT, RETURN_STATEMENT, THROW_STATEMENT, SYNCHRONIZED_STATEMENT, TRY_STATEMENT, LABELED_STATEMENT, ASSERT_STATEMENT, + YIELD_STATEMENT); TokenSet JAVA_MODULE_STATEMENT_BIT_SET = TokenSet.create( REQUIRES_STATEMENT, EXPORTS_STATEMENT, OPENS_STATEMENT, USES_STATEMENT, PROVIDES_STATEMENT); diff --git a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpression.java b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpression.java index df6d8b91435a..ffdbe88f9133 100644 --- a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpression.java +++ b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpression.java @@ -2,13 +2,13 @@ class C { void test(int n) { String s = switch (n) { case 1: - break "a"; + yield "a"; case 2: - break "b"; + yield "b"; case 3: - break "a"; + yield "a"; default: - break ""; + yield ""; }; } } \ No newline at end of file diff --git a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultFirst.java b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultFirst.java index d0ce32d5bda4..75164abd96f4 100644 --- a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultFirst.java +++ b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultFirst.java @@ -3,11 +3,11 @@ class C { String s = switch (n) { default: case 1: - break "a"; + yield "a"; case 2: - break "b"; + yield "b"; case 3: - break "a"; + yield "a"; }; } } \ No newline at end of file diff --git a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultLast.java b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultLast.java index 70f28327bfa1..e80f56b00796 100644 --- a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultLast.java +++ b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDefaultLast.java @@ -2,12 +2,12 @@ class C { void test(int n) { String s = switch (n) { case 1: - break "a"; + yield "a"; case 2: - break "b"; + yield "b"; case 3: default: - break "a"; + yield "a"; }; } } \ No newline at end of file diff --git a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDifferentComments.java b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDifferentComments.java index bbd4d17dd8d7..c699bb8e085b 100644 --- a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDifferentComments.java +++ b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionDifferentComments.java @@ -2,13 +2,13 @@ class C { void test(int n) { String s = switch (n) { case 1: - break "a"; // one comment + yield "a"; // one comment case 2: - break "b"; + yield "b"; case 3: - break "a"; // another comment + yield "a"; // another comment default: - break ""; + yield ""; }; } } \ No newline at end of file diff --git a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionSameComments.java b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionSameComments.java index 5f55aff25d39..32ceb4ddeec9 100644 --- a/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionSameComments.java +++ b/java/java-tests/testData/inspection/duplicateBranchesInEnhancedSwitch/CaseLabelsExpressionSameComments.java @@ -2,13 +2,13 @@ class C { void test(int n) { String s = switch (n) { case 1: - break "a"; // same comment + yield "a"; // same comment case 2: - break "b"; + yield "b"; case 3: - break "a"; // same comment + yield "a"; // same comment default: - break ""; + yield ""; }; } } \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInEnhancedSwitchTest.kt b/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInEnhancedSwitchTest.kt index 080ede9281df..01b84fc52b31 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInEnhancedSwitchTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DuplicateBranchesInEnhancedSwitchTest.kt @@ -10,16 +10,8 @@ import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase * @author Pavel.Dolgov */ class DuplicateBranchesInEnhancedSwitchTest : LightJavaCodeInsightFixtureTestCase() { - val inspection = DuplicateBranchesInSwitchInspection() - - override fun setUp() { - super.setUp() - myFixture.enableInspections(inspection) - } - override fun getBasePath() = JavaTestUtil.getRelativeJavaTestDataPath() + "/inspection/duplicateBranchesInEnhancedSwitch" - - override fun getProjectDescriptor(): LightProjectDescriptor = JAVA_12 + override fun getProjectDescriptor(): LightProjectDescriptor = JAVA_13 fun testSimpleExpression() = doTest() fun testSimpleStatement() = doTest() @@ -35,6 +27,7 @@ class DuplicateBranchesInEnhancedSwitchTest : LightJavaCodeInsightFixtureTestCas fun testCaseLabelsExpressionSameComments() = doTest() private fun doTest() { + myFixture.enableInspections(DuplicateBranchesInSwitchInspection()) myFixture.testHighlighting("${getTestName(false)}.java") } } \ No newline at end of file