From db006a346f4d212e024c22415e8c5e7fd7d68b91 Mon Sep 17 00:00:00 2001 From: Louis Vignier Date: Mon, 16 Feb 2026 22:45:56 +0100 Subject: [PATCH] IDEA-366205 javadoc: render nested inline tags correctly #IDEA-366205 Fixed GitOrigin-RevId: 2631db8b40057419d9774e328a8bc28f213a8ac4 --- .../codeInsight/javadoc/JavaDocInfoGenerator.java | 5 +++++ .../codeInsight/javadocIG/seeTagWithNestedLink.html | 1 + .../codeInsight/javadocIG/seeTagWithNestedLink.java | 8 ++++++++ .../javadocIG/seeTagWithNestedLinkMarkdown.html | 1 + .../javadocIG/seeTagWithNestedLinkMarkdown.java | 6 ++++++ .../codeInsight/javadoc/JavaDocInfoGeneratorTest.java | 4 ++++ 6 files changed, 25 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.java create mode 100644 java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.java diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index f0591daf6e6d..4a2e190a19d8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -2531,6 +2531,11 @@ public class JavaDocInfoGenerator { element.accept(new PsiRecursiveElementWalkingVisitor() { @Override public void visitElement(@NotNull PsiElement element) { + if (element instanceof PsiInlineDocTag inlineDocTag) { + generateValue(buffer, new PsiElement[] {inlineDocTag}, ourEmptyElementsProvider); + return; + } + super.visitElement(element); if (element instanceof PsiWhiteSpace || element instanceof PsiJavaToken || diff --git a/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.html b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.html new file mode 100644 index 000000000000..7166e2d524d2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.html @@ -0,0 +1 @@ +
class Test

See Also:

regular text - code: code { more code } - value: 3.142

\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.java b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.java new file mode 100644 index 000000000000..305a794e3ff7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLink.java @@ -0,0 +1,8 @@ +import java.lang.String; + +/** + * @see java.lang.String regular text - code: {@code code { more code }} - value: {@value %.3f PI} + */ +class Test { + public static final double PI = 3.14159; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.html b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.html new file mode 100644 index 000000000000..d64e1d681e10 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.html @@ -0,0 +1 @@ +
class Test

See Also:

regular text - link: String - link with label: myLabel - code: code { more code } - value: 3.142

\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.java b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.java new file mode 100644 index 000000000000..27181b5442ce --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/seeTagWithNestedLinkMarkdown.java @@ -0,0 +1,6 @@ +import java.lang.String; + +/// @see java.lang.String regular text - link: {@link String} - link with label: {@link String myLabel} - code: {@code code { more code }} - value: {@value %.3f PI} +class Test { + public static final double PI = 3.14159; +} \ 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 1a01f7b543b6..19349a2827a8 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 @@ -46,6 +46,7 @@ import com.intellij.testFramework.DumbModeTestUtils; import com.intellij.testFramework.IdeaTestUtil; import com.intellij.testFramework.IndexingTestUtil; import com.intellij.testFramework.PsiTestUtil; +import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.fixtures.MavenDependencyUtil; import com.intellij.util.lang.JavaVersion; import com.intellij.util.ui.UIUtil; @@ -57,6 +58,7 @@ import java.io.IOException; import java.util.Collections; import java.util.List; +@TestDataPath("$CONTENT_ROOT/testData/codeInsight/javadocIG/") public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase { private static final String TEST_DATA_FOLDER = "/codeInsight/javadocIG/"; @@ -239,6 +241,8 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase { public void testPreTagStrictBeforeCode(){ doTestClass(); } public void testSeeTagWithLabel() { doTestClass(); } public void testSeeTagWithLabelMarkdown() { doTestClass(); } + public void testSeeTagWithNestedLink() { doTestClass(); } + public void testSeeTagWithNestedLinkMarkdown() { doTestClass(); } public void testLinkInParamDescriptionMarkdown() { doTestAtCaret(); } public void testAllTags() { doTestAtCaret(); } public void testAllTagsMarkdown() { doTestAtCaret(); }