IDEA-366205 javadoc: render nested inline tags correctly

#IDEA-366205 Fixed

GitOrigin-RevId: 2631db8b40057419d9774e328a8bc28f213a8ac4
This commit is contained in:
Louis Vignier
2026-02-17 00:08:34 +00:00
committed by intellij-monorepo-bot
parent 7131433668
commit db006a346f
6 changed files with 25 additions and 0 deletions
@@ -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 ||
@@ -0,0 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Test</span></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://java.lang.String">regular text - code: <code><span style="">code&#32;{&#32;more&#32;code&#32;}</span></code> - value: <a href="psi_element://Test#PI">3.142</a></a></td></table>
@@ -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;
}
@@ -0,0 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Test</span></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://java.lang.String">regular text - link: <a href="psi_element://java.lang.String"><code><span style="color:#0000ff;">String</span></code></a> - link with label: <a href="psi_element://java.lang.String"><code>myLabel</code></a> - code: <code><span style="">code { more code }</span></code> - value: <a href="psi_element://Test#PI">3.142</a></a></td></table>
@@ -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;
}
@@ -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(); }