From 292055d29609bd447f2c1ab31f7dc023f91a28fd Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Fri, 15 Apr 2016 19:43:37 +0200 Subject: [PATCH] shorten outer class ref in instanceof check fixed (IDEA-154823) --- .../codeStyle/JavaReferenceAdjuster.java | 8 +++++ .../tree/java/ShortenClassReferencesTest.java | 30 +++++++++++-------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java index a87f61e75602..cd8f3f774784 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaReferenceAdjuster.java @@ -265,6 +265,14 @@ public class JavaReferenceAdjuster implements ReferenceAdjuster { if (psiReference instanceof PsiJavaCodeReferenceElement) { PsiElement parent = psiReference.getParent(); if (parent instanceof PsiNewExpression || parent.getParent() instanceof PsiNewExpression) return true; + + if (parent instanceof PsiTypeElement && + parent.getParent() instanceof PsiInstanceOfExpression) { + final PsiClass containingClass = refClass.getContainingClass(); + if (containingClass != null && containingClass.hasTypeParameters()) { + return false; + } + } } return helper.resolveReferencedVariable(referenceText, psiReference) == null; } diff --git a/java/java-tests/testSrc/com/intellij/psi/impl/source/tree/java/ShortenClassReferencesTest.java b/java/java-tests/testSrc/com/intellij/psi/impl/source/tree/java/ShortenClassReferencesTest.java index 4554f93fb20d..c4887c452d23 100644 --- a/java/java-tests/testSrc/com/intellij/psi/impl/source/tree/java/ShortenClassReferencesTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/impl/source/tree/java/ShortenClassReferencesTest.java @@ -73,21 +73,25 @@ public class ShortenClassReferencesTest extends LightCodeInsightFixtureTestCase } } + public void testOuterClassReferenceInInstanceof() throws Exception { + myFixture.configureByText("a.java", "class Outer {class Inner {} {boolean b = new Inner() instanceof Outer.Inner;}}\n" + + "class Outer1 {class Inner {} {boolean b = new Inner() instanceof Outer1.Inner;}}"); + doShortenRefs(); + myFixture.checkResult("class Outer {class Inner {} {boolean b = new Inner() instanceof Outer.Inner;}}\n" + + "class Outer1 {class Inner {} {boolean b = new Inner() instanceof Inner;}}"); + } + private void doTest() { myFixture.configureByFile(getTestName(false) + ".java"); - CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() { - @Override - public void run() { - WriteCommandAction.runWriteCommandAction(null, new Runnable() { - @Override - public void run() { - JavaCodeStyleManager.getInstance(getProject()).shortenClassReferences(myFixture.getFile()); - PostprocessReformattingAspect.getInstance(getProject()).doPostponedFormatting(); - PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); - } - }); - } - }, "", ""); + doShortenRefs(); myFixture.checkResultByFile(getTestName(false) + "_after.java"); } + + private void doShortenRefs() { + CommandProcessor.getInstance().executeCommand(getProject(), () -> WriteCommandAction.runWriteCommandAction(null, () -> { + JavaCodeStyleManager.getInstance(getProject()).shortenClassReferences(myFixture.getFile()); + PostprocessReformattingAspect.getInstance(getProject()).doPostponedFormatting(); + PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); + }), "", ""); + } }