diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index ab1f8b074935..c8e8756b010e 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -306,6 +306,9 @@ public final class PsiUtil extends PsiUtilCore { PsiElement codeBlock = null; if (variable instanceof PsiParameter) { PsiElement declarationScope = ((PsiParameter)variable).getDeclarationScope(); + if (variable instanceof PsiPatternVariable) { + return declarationScope; + } if (declarationScope instanceof PsiCatchSection) { codeBlock = ((PsiCatchSection)declarationScope).getCatchBlock(); } diff --git a/java/java-tests/testData/refactoring/inlinePatternVariable/InNestedCondition.java b/java/java-tests/testData/refactoring/inlinePatternVariable/InNestedCondition.java new file mode 100644 index 000000000000..4e826eaa9bd0 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlinePatternVariable/InNestedCondition.java @@ -0,0 +1,7 @@ +class Test { + void test(Object obj) { + if (Math.random() > 0.5 || (obj instanceof String s && s.isEmpty())) { + System.out.println(); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlinePatternVariable/InNestedCondition.java.after b/java/java-tests/testData/refactoring/inlinePatternVariable/InNestedCondition.java.after new file mode 100644 index 000000000000..7d3e1bde93b6 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlinePatternVariable/InNestedCondition.java.after @@ -0,0 +1,7 @@ +class Test { + void test(Object obj) { + if (Math.random() > 0.5 || (obj instanceof String && ((String) obj).isEmpty())) { + System.out.println(); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlinePatternVariableTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlinePatternVariableTest.java index 3fbac3d5f5c7..cc13416657c8 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlinePatternVariableTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlinePatternVariableTest.java @@ -22,6 +22,7 @@ public class InlinePatternVariableTest extends LightJavaCodeInsightTestCase { public void testSimple() { doTest(); } public void testSimpleAtRef() { doTest(); } public void testTernary() { doTest(); } + public void testInNestedCondition() { doTest(); } @Override protected @NotNull LightProjectDescriptor getProjectDescriptor() {