quick doc: don't generate qNames for local classes (IDEA-184455)

This commit is contained in:
Anna.Kozlova
2018-01-02 17:49:11 +01:00
parent b3ca7c3219
commit b8f21ba9ba
4 changed files with 20 additions and 1 deletions
@@ -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();
}
@@ -0,0 +1,2 @@
<html><head><base href="placeholder"> <style type="text/css"> #error { background-color: #eeeeee; margin-bottom: 10px; } p { margin: 5px 0; } </style></head><body><PRE>class <b>Foo</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></PRE></body></html>
@@ -0,0 +1,8 @@
class Test {
Object obj = new Object() {
class Foo {
}
Foo x;
};
}
@@ -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);