mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
IDEA-130011 (javadoc asterisks stripped from generated doc info)
This commit is contained in:
@@ -1436,23 +1436,35 @@ public class JavaDocInfoGenerator {
|
||||
}
|
||||
|
||||
private static String createLinkText(final PsiElement[] tagElements) {
|
||||
int predictOffset = tagElements.length > 0
|
||||
? tagElements[0].getTextOffset() + tagElements[0].getText().length()
|
||||
: 0;
|
||||
StringBuilder buffer1 = new StringBuilder();
|
||||
int predictOffset = tagElements.length > 0 ? tagElements[0].getTextOffset() + tagElements[0].getText().length() : 0;
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
for (int j = 0; j < tagElements.length; j++) {
|
||||
PsiElement tagElement = tagElements[j];
|
||||
|
||||
if (tagElement.getTextOffset() > predictOffset) buffer1.append(" ");
|
||||
if (tagElement.getTextOffset() > predictOffset) buffer.append(" ");
|
||||
predictOffset = tagElement.getTextOffset() + tagElement.getText().length();
|
||||
|
||||
buffer1.append(tagElement.getText());
|
||||
collectElementText(buffer, tagElement);
|
||||
|
||||
if (j < tagElements.length - 1) {
|
||||
buffer1.append(" ");
|
||||
buffer.append(" ");
|
||||
}
|
||||
}
|
||||
return buffer1.toString().trim();
|
||||
return buffer.toString().trim();
|
||||
}
|
||||
|
||||
private static void collectElementText(final StringBuilder buffer, PsiElement element) {
|
||||
element.accept(new PsiRecursiveElementWalkingVisitor() {
|
||||
@Override
|
||||
public void visitElement(PsiElement element) {
|
||||
super.visitElement(element);
|
||||
if (element instanceof PsiWhiteSpace ||
|
||||
element instanceof PsiJavaToken ||
|
||||
element instanceof PsiDocToken && ((PsiDocToken)element).getTokenType() != JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS) {
|
||||
buffer.append(element.getText());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.documentation.DocumentationManager
|
||||
import com.intellij.codeInsight.navigation.CtrlMouseHandler
|
||||
import com.intellij.lang.java.JavaDocumentationProvider
|
||||
import com.intellij.psi.PsiExpressionList
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||
|
||||
@@ -147,6 +148,41 @@ class JavaDocumentationTest extends LightCodeInsightFixtureTestCase {
|
||||
assert doc == "private void m ()"
|
||||
}
|
||||
|
||||
public void testAsterisksFiltering() {
|
||||
configure """\
|
||||
class C {
|
||||
/**
|
||||
* For example, {@link String#String(byte[],
|
||||
* int, int,
|
||||
* String)}.
|
||||
*/
|
||||
public void <caret>m() { }
|
||||
}""".stripIndent()
|
||||
|
||||
def method = PsiTreeUtil.getParentOfType(myFixture.file.findElementAt(myFixture.editor.caretModel.offset), PsiMethod.class)
|
||||
def doc = new JavaDocumentationProvider().generateDoc(method, null)
|
||||
|
||||
def expected =
|
||||
"<html><head>" +
|
||||
" <style type=\"text/css\">" +
|
||||
" #error {" +
|
||||
" background-color: #eeeeee;" +
|
||||
" margin-bottom: 10px;" +
|
||||
" }" +
|
||||
" p {" +
|
||||
" margin: 5px 0;" +
|
||||
" }" +
|
||||
" </style>" +
|
||||
"</head><body>" +
|
||||
"<small><b><a href=\"psi_element://C\"><code>C</code></a></b></small>" +
|
||||
"<PRE>public void <b>m</b>()</PRE>\n " +
|
||||
"For example, <a href=\"psi_element://java.lang.String#String(byte[], int, int, java.lang.String)\">" +
|
||||
"<code>String.String(byte[], int, int, String)</code>" +
|
||||
"</a>.</body></html>"
|
||||
|
||||
assert doc == expected
|
||||
}
|
||||
|
||||
private void configure(String text) {
|
||||
myFixture.configureByText 'a.java', text
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user