From b8f21ba9baa52d76eb046c48890116095959b505 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 2 Jan 2018 17:09:12 +0100 Subject: [PATCH] quick doc: don't generate qNames for local classes (IDEA-184455) --- .../src/com/intellij/codeInsight/javadoc/JavaDocUtil.java | 3 ++- .../codeInsight/javadocIG/localClassInsideAnonymous.html | 2 ++ .../codeInsight/javadocIG/localClassInsideAnonymous.java | 8 ++++++++ .../codeInsight/javadoc/JavaDocInfoGeneratorTest.java | 8 ++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.java diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java index 6c5f46c47a30..ec8cf784ad08 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocUtil.java @@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.javadoc.PsiDocComment; +import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; @@ -261,7 +262,7 @@ public class JavaDocUtil { shortName = "null"; } PsiClass containingClass = aClass.getContainingClass(); - while (containingClass != null && containingClass.isPhysical()) { + while (containingClass != null && containingClass.isPhysical() && !PsiUtil.isLocalOrAnonymousClass(containingClass)) { shortName = containingClass.getName() + "." + shortName; containingClass = containingClass.getContainingClass(); } diff --git a/java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.html b/java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.html new file mode 100644 index 000000000000..1aea5b9c6065 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.html @@ -0,0 +1,2 @@ +
class Foo
+extends Object
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.java b/java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.java new file mode 100644 index 000000000000..1160a1f77546 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/localClassInsideAnonymous.java @@ -0,0 +1,8 @@ +class Test { + Object obj = new Object() { + class Foo { + } + + Foo x; + }; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavaDocInfoGeneratorTest.java index 362352685e42..eb2c7d97ab5a 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -225,6 +225,14 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { doTestLambdaParameter(); } + public void testLocalClassInsideAnonymous() throws Exception { + PsiClass testClass = getTestClass(); + PsiExpression initializer = testClass.getFields()[0].getInitializer(); + assertInstanceOf(initializer, PsiNewExpression.class); + PsiClass localClass = ((PsiNewExpression)initializer).getAnonymousClass().getInnerClasses()[0]; + verifyJavaDoc(localClass); + } + private void doTestClass() throws Exception { PsiClass psiClass = getTestClass(); verifyJavaDoc(psiClass);