From c76e1b4108fcae6cc208414dea079fcb345e80e5 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 29 Jan 2020 13:08:13 +0700 Subject: [PATCH] Introduce pattern variable: fixed when occurrence inside another local var declaration GitOrigin-RevId: fe52fb94fcac26bee951df0f6aaa2e8b32fba95d --- ...VariableDeclarationUsedInLocalJava14Preview.after.java | 8 ++++++++ ...atternVariableDeclarationUsedInLocalJava14Preview.java | 8 ++++++++ .../intellij/java/refactoring/IntroduceVariableTest.java | 1 + .../src/com/siyeh/ig/psiutils/InstanceOfUtils.java | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.after.java create mode 100644 java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.java diff --git a/java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.after.java b/java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.after.java new file mode 100644 index 000000000000..32a3271cfff2 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.after.java @@ -0,0 +1,8 @@ +class A { + void test(Object obj) { + if (obj instanceof String temp) { + String s = temp.trim(); + System.out.println("Found"); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.java b/java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.java new file mode 100644 index 000000000000..c6e0070d88b9 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/PatternVariableDeclarationUsedInLocalJava14Preview.java @@ -0,0 +1,8 @@ +class A { + void test(Object obj) { + if (obj instanceof String) { + String s = ((String)obj).trim(); + System.out.println("Found"); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java index b3322e1c7281..a6ec1d4f39b9 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java @@ -135,6 +135,7 @@ public class IntroduceVariableTest extends LightJavaCodeInsightTestCase { doTest("temp", true, false, false, "boolean"); } public void testPatternVariableDeclarationJava14Preview() { doTest("temp", true, false, false, JAVA_LANG_STRING);} + public void testPatternVariableDeclarationUsedInLocalJava14Preview() { doTest("temp", true, false, false, JAVA_LANG_STRING);} public void testPatternVariableDeclarationAfterIfJava14Preview() { doTest("temp", true, false, false, JAVA_LANG_STRING);} public void testNonPatternDeclarationJava14Preview() { doTest("temp", true, false, false, JAVA_LANG_STRING);} diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java index 13f366ff7584..ceea98230266 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java @@ -179,7 +179,7 @@ public class InstanceOfUtils { } } if ((context instanceof PsiExpression && !(context instanceof PsiLambdaExpression)) || - context instanceof PsiExpressionList) { + context instanceof PsiExpressionList || context instanceof PsiLocalVariable) { context = context.getParent(); continue; }