From 180db12dfecd2726356788ce9db544be915bbd0c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 13 Apr 2022 20:17:45 +0200 Subject: [PATCH] [javadoc] don't strip java.lang from subpackages (IDEA-292028) GitOrigin-RevId: a978c31780b5345dfdbd51610cae43ac7f035960 --- .../com/intellij/codeInsight/javadoc/JavaDocUtil.java | 10 ++++++---- .../codeInsight/javadocIG/reflectConstructor.html | 5 +++++ .../codeInsight/javadocIG/reflectConstructor.java | 5 +++++ .../codeInsight/javadoc/JavaDocInfoGeneratorTest.java | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/reflectConstructor.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 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();