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 bf3960ff4d3c..1996f089d06e 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 @@ -1,4 +1,4 @@ -// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.javadoc; import com.intellij.openapi.diagnostic.Logger; @@ -30,6 +30,7 @@ public final class JavaDocUtil { private static final Logger LOG = Logger.getInstance(JavaDocUtil.class); @NonNls private static final Pattern ourTypePattern = Pattern.compile("[ ]+[^ ^\\[^\\]]"); + private static final String JAVA_LANG = "java.lang."; private JavaDocUtil() { } @@ -303,9 +304,10 @@ public final class JavaDocUtil { catch (IndexNotReadyException e) { LOG.debug(e); } - return manager.areElementsEquivalent(aClass, resolvedClass) - ? shortName - : StringUtil.trimStart(qName, "java.lang."); + if (manager.areElementsEquivalent(aClass, resolvedClass)) { + return shortName; + } + return JAVA_LANG.length() + shortName.length() == qName.length() ? StringUtil.trimStart(qName, JAVA_LANG) : qName; } public static String getLabelText(Project project, PsiManager manager, String refText, PsiElement context) { diff --git a/java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.html b/java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.html new file mode 100644 index 000000000000..3912ed17a6b1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.html @@ -0,0 +1,5 @@ +
 java.lang.Class<T>
@CallerSensitive 
+@NotNull 
+@Contract(pure = true) 
+public java.lang.reflect.Constructor<?>[] getDeclaredConstructors()
+throws SecurityException

Throws:

SecurityException

 < java 10 >
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.java b/java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.java new file mode 100644 index 000000000000..fd45c8733375 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.java @@ -0,0 +1,5 @@ +class Test { + void constructors(Class clazz) { + System.out.println(Arrays.toString(clazz.getDeclaredConstructors())); + } +} \ 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 e434df299fa8..6f9293657f86 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 @@ -127,6 +127,7 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase { public void testUnknownInlineMultilineTag() { doTestClass(); } public void testUnknownTag() { doTestMethod(); } public void testUnknownClassTag() { doTestClass(); } + public void testReflectConstructor() { useJava10(); doTestAtCaret(); } public void testRepeatableAnnotations() { useJava8();