From bcec85aa4fd3d9141283b8d0f2af6b5e489d709e Mon Sep 17 00:00:00 2001 From: Louis Vignier Date: Fri, 6 Jun 2025 18:25:59 +0200 Subject: [PATCH] [javadoc] Mark links as data elements #IDEA-365686 Fixed GitOrigin-RevId: 791da00a46f9d0982ed939feb132737ad48746c8 --- .../intellij/psi/impl/source/javadoc/PsiDocTagImpl.java | 6 +++--- .../javadocIG/linkInParamDescriptionMarkdown.html | 2 ++ .../javadocIG/linkInParamDescriptionMarkdown.java | 9 +++++++++ .../codeInsight/javadoc/JavaDocInfoGeneratorTest.java | 1 + 4 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java index 08209c7716bc..551294958845 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java @@ -1,4 +1,4 @@ -// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.psi.impl.source.javadoc; import com.intellij.lang.ASTNode; @@ -22,8 +22,8 @@ public class PsiDocTagImpl extends CompositePsiElement implements PsiDocTag, Con private static final TokenSet TAG_VALUE_BIT_SET = TokenSet.create( DOC_TAG_VALUE_ELEMENT, DOC_METHOD_OR_FIELD_REF, DOC_PARAMETER_REF); private static final TokenSet VALUE_BIT_SET = TokenSet.orSet(TAG_VALUE_BIT_SET, TokenSet.create( - DOC_TAG_VALUE_TOKEN, JAVA_CODE_REFERENCE, DOC_COMMENT_DATA, DOC_INLINE_TAG, DOC_REFERENCE_HOLDER, DOC_SHARP, DOC_LBRACKET, DOC_RBRACKET, - DOC_LPAREN, DOC_RPAREN, DOC_CODE_FENCE, DOC_INLINE_CODE_FENCE, DOC_MARKDOWN_CODE_BLOCK, DOC_COMMA)); + DOC_TAG_VALUE_TOKEN, JAVA_CODE_REFERENCE, DOC_COMMENT_DATA, DOC_INLINE_TAG, DOC_REFERENCE_HOLDER, DOC_MARKDOWN_REFERENCE_LINK, + DOC_SHARP, DOC_LBRACKET, DOC_RBRACKET, DOC_LPAREN, DOC_RPAREN, DOC_CODE_FENCE, DOC_INLINE_CODE_FENCE, DOC_MARKDOWN_CODE_BLOCK, DOC_COMMA)); public PsiDocTagImpl() { super(DOC_TAG); diff --git a/java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.html b/java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.html new file mode 100644 index 000000000000..c95f3407a425 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.html @@ -0,0 +1,2 @@ +
 Test
int foo(
int a, + int b
)

Params:

a – link to java.lang.String
b – link with a label

Returns:

return label with a link java.lang.String

\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.java b/java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.java new file mode 100644 index 000000000000..913a32461c40 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/linkInParamDescriptionMarkdown.java @@ -0,0 +1,9 @@ +class Test { + + /// @param a link to [java.lang.String] + /// @param b link with a [label][java.lang.String] + /// @return return label with a link [java.lang.String] + int foo(int a, int b) { return 0; } + + void foo2() {} +} \ 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 1406db1109bd..22842c1ddade 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 @@ -211,6 +211,7 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase { public void testPreTagStrictBeforeCode(){ doTestClass(); } public void testSeeTagWithLabel() { doTestClass(); } public void testSeeTagWithLabelMarkdown() { doTestClass(); } + public void testLinkInParamDescriptionMarkdown() { doTestAtCaret(); } public void testRepeatableAnnotations() { useJava8();