records: quick javadoc (IDEA-229844)

GitOrigin-RevId: e2b6635e4183f63969fa210d42a44721f9fecdf8
This commit is contained in:
Anna Kozlova
2020-04-29 09:15:17 +00:00
committed by intellij-monorepo-bot
parent 580a5c69f5
commit fb015d184a
5 changed files with 34 additions and 1 deletions
@@ -489,6 +489,7 @@ public class JavaDocInfoGenerator {
if (rendered) {
generateAuthorAndVersionSections(buffer, comment);
}
generateRecordParametersSection(buffer, aClass, comment);
generateTypeParametersSection(buffer, aClass, rendered);
}
else {
@@ -501,12 +502,27 @@ public class JavaDocInfoGenerator {
buffer.append(DocumentationMarkup.SECTIONS_END);
}
private void generateRecordParametersSection(StringBuilder buffer, PsiClass recordClass, PsiDocComment comment) {
if (!recordClass.isRecord() || comment == null) return;
PsiDocTag[] localTags = comment.findTagsByName("param");
List<ParamInfo> collectedTags = new ArrayList<>();
for (PsiRecordComponent component : recordClass.getRecordComponents()) {
PsiDocTag localTag = getTagByName(localTags, component.getName());
if (localTag != null) {
collectedTags.add(new ParamInfo(component.getName(), localTag, ourEmptyProvider));
}
}
generateParametersSection(buffer, CodeInsightBundle.message("javadoc.parameters"), collectedTags);
}
private static boolean generateClassSignature(StringBuilder buffer, PsiClass aClass, SignaturePlace place) {
boolean generateLink = place == SignaturePlace.Javadoc;
generateAnnotations(buffer, aClass, place, true);
generateModifiers(buffer, aClass, false);
buffer.append(JavaBundle.message(aClass.isInterface() ? "java.terms.interface"
: aClass.isEnum() ? "java.terms.enum" : "java.terms.class"));
: aClass.isEnum() ? "java.terms.enum"
: aClass.isRecord() ? "java.terms.record" : "java.terms.class"));
buffer.append(' ');
String refText = JavaDocUtil.getReferenceText(aClass.getProject(), aClass);
if (refText == null) {
@@ -0,0 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>record <b>Test</b>
extends <font color=red>java.lang.Record</font></pre></div><div class='content'>
main comment
</div><table class='sections'><p><tr><td valign='top' class='section'><p>Params:</td><td valign='top'>test &ndash; simple description</td></table>
@@ -0,0 +1,5 @@
/**
* main comment
* @param test simple description
*/
record Test(int test) {}
@@ -19,6 +19,7 @@ import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.rt.execution.junit.FileComparisonFailure;
@@ -54,6 +55,11 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
return IdeaTestUtil.getMockJdk(JavaVersion.compose(myJdkVersion));
}
@Override
protected @NotNull LanguageLevel getProjectLanguageLevel() {
return LanguageLevel.JDK_14_PREVIEW;
}
public void testSimpleField() { doTestField(); }
public void testFieldValue() { doTestField(); }
public void testValueInMethod() { doTestMethod(); }
@@ -86,6 +92,7 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
public void testFieldInitializedWithSizedArray() { doTestField(); }
public void testDoubleLt() { doTestClass(); }
public void testNoSpaceAfterTagName() { doTestClass(); }
public void testRecordParameters() { doTestClass(); } //j.l.Record is unresolved as there is no mock jdk 14 yet
public void testLambdaParameter() { doTestLambdaParameter(); }
public void testLocalClassInsideAnonymous() { doTestAtCaret(); }
public void testPackageInfoFromComment() { doTestPackageInfo("some"); }
@@ -834,6 +834,7 @@ java.preview.features.notification.title=Java Preview Features
java.preview.features.warning=When Java {0} would be released, support for {1} (Preview) language level may be dropped
java.terms.annotation.interface=@interface
java.terms.class=class
java.terms.record=record
java.terms.constructor=constructor
java.terms.enum=enum
java.terms.exception=exception