[javadoc] Implemented syntax highlighting for javadocs

GitOrigin-RevId: 4544b607c251f14c294cbf6b25d689c7350f6f01
This commit is contained in:
Alexander Bashkirov
2021-09-02 16:02:19 +00:00
committed by intellij-monorepo-bot
parent 7b6b2db8a6
commit 6552646d41
125 changed files with 1080 additions and 578 deletions
@@ -80,7 +80,7 @@ public final class HighlightNamesUtil {
return false;
}
private static boolean isStaticallyImported(@NotNull PsiElement elementToHighlight) {
public static boolean isStaticallyImported(@NotNull PsiElement elementToHighlight) {
PsiReferenceExpression referenceExpression = PsiTreeUtil.getParentOfType(elementToHighlight, PsiReferenceExpression.class);
if (referenceExpression != null) {
JavaResolveResult result = referenceExpression.advancedResolve(false);
@@ -92,7 +92,7 @@ public abstract class NonCodeAnnotationsLineMarkerProvider extends LineMarkerPro
String tooltip = XmlStringUtil.wrapInHtml(
NonCodeAnnotationGenerator.getNonCodeHeaderAvalable(nonCodeAnnotations) + CommonXmlStrings.NBSP + JavaBundle.message("non.code.annotations.explanation.full.signature") + "<p>\n" +
JavaDocInfoGenerator.generateSignature(owner));
new JavaDocInfoGenerator(owner.getProject(), owner, false).generateSignature(owner));
return new LineMarkerInfo<>(element, element.getTextRange(), AllIcons.Gutter.ExtAnnotation, __ -> tooltip, MyIconGutterHandler.INSTANCE,
GutterIconRenderer.Alignment.RIGHT);
}
@@ -3,12 +3,13 @@ package com.intellij.codeInsight.javadoc;
import com.intellij.codeInsight.AnnotationTargetUtil;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.ide.highlighter.JavaHighlightingColors;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil;
import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.psi.*;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.xml.util.XmlStringUtil;
import one.util.streamex.StreamEx;
import org.intellij.lang.annotations.Flow;
import org.jetbrains.annotations.NotNull;
@@ -18,6 +19,9 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil.appendStyledSpan;
import static com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil.getStyledSpan;
public final class AnnotationDocGenerator {
private static final Logger LOG = Logger.getInstance(AnnotationDocGenerator.class);
@NotNull private final PsiAnnotation myAnnotation;
@@ -85,12 +89,19 @@ public final class AnnotationDocGenerator {
boolean generateLink = format != AnnotationFormat.ToolTip;
boolean forceShortNames = format != AnnotationFormat.JavaDocComplete;
buffer.append("@");
if (red) {
buffer.append("@");
} else {
appendStyledSpan(buffer, JavaHighlightingColors.ANNOTATION_NAME_ATTRIBUTES, "@");
}
String name = forceShortNames ? myNameReference.getReferenceName() : myNameReference.getText();
if (type != null && generateLink) {
JavaDocInfoGenerator.generateLink(buffer, myTargetClass, name, format == AnnotationFormat.JavaDocComplete);
} else {
buffer.append(name);
String styledName = getStyledSpan(JavaHighlightingColors.ANNOTATION_NAME_ATTRIBUTES, name);
new JavaDocInfoGenerator(myContext.getProject(), null, format != AnnotationFormat.JavaDocComplete)
.generateLink(buffer, myTargetClass, styledName, format == AnnotationFormat.JavaDocComplete);
}
else if (!red && name != null) {
appendStyledSpan(buffer, JavaHighlightingColors.ANNOTATION_NAME_ATTRIBUTES, name);
}
if (red) buffer.append("</font>");
@@ -102,34 +113,36 @@ public final class AnnotationDocGenerator {
private void generateAnnotationAttributes(StringBuilder buffer, boolean generateLink) {
final PsiNameValuePair[] attributes = myAnnotation.getParameterList().getAttributes();
if (attributes.length > 0) {
buffer.append("(");
appendStyledSpan(buffer, JavaHighlightingColors.PARENTHESES, "(");
boolean first = true;
for (PsiNameValuePair pair : attributes) {
if (!first) buffer.append(",&nbsp;");
if (!first) appendStyledSpan(buffer, JavaHighlightingColors.COMMA, ",&nbsp;");
first = false;
generateAnnotationAttribute(buffer, generateLink, pair);
}
buffer.append(")");
appendStyledSpan(buffer, JavaHighlightingColors.PARENTHESES, ")");
}
}
private static void generateAnnotationAttribute(StringBuilder buffer, boolean generateLink, PsiNameValuePair pair) {
final String name = pair.getName();
if (name != null) {
buffer.append(name);
buffer.append(" = ");
appendStyledSpan(buffer, JavaHighlightingColors.ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES, name);
appendStyledSpan(buffer, JavaHighlightingColors.OPERATION_SIGN, " = ");
}
final PsiAnnotationMemberValue value = pair.getValue();
if (value != null) {
if (value instanceof PsiArrayInitializerMemberValue) {
buffer.append("{");
appendStyledSpan(buffer, JavaHighlightingColors.BRACES, "{");
boolean firstMember = true;
for(PsiAnnotationMemberValue memberValue:((PsiArrayInitializerMemberValue)value).getInitializers()) {
if (!firstMember) buffer.append(",");
if (!firstMember) {
appendStyledSpan(buffer, JavaHighlightingColors.COMMA, ",");
}
firstMember = false;
appendLinkOrText(buffer, memberValue, generateLink);
}
buffer.append("}");
appendStyledSpan(buffer, JavaHighlightingColors.BRACES, "}");
}
else {
appendLinkOrText(buffer, value, generateLink);
@@ -161,12 +174,17 @@ public final class AnnotationDocGenerator {
else {
if (aClass != null) text = aClass.getQualifiedName() + '#' + field.getName();
}
JavaDocInfoGenerator.generateLink(buffer, text, aClass != null? aClass.getName() + '.' + field.getName():null, memberValue, false);
new JavaDocInfoGenerator(field.getProject(), null, true)
.generateLink(buffer, text, aClass != null? aClass.getName() + '.' + field.getName():null, memberValue, false);
return;
}
}
buffer.append(XmlStringUtil.escapeString(memberValue.getText()));
HtmlSyntaxInfoUtil.appendHighlightedByLexerAndEncodedAsHtmlCodeSnippet(
buffer,
memberValue.getProject(),
memberValue.getLanguage(),
memberValue.getText());
}
public static List<AnnotationDocGenerator> getAnnotationsToShow(@NotNull PsiAnnotationOwner owner, @NotNull PsiElement context) {
@@ -12,8 +12,8 @@ import java.awt.*;
/**
* @author spleaner
*/
public final class ColorUtil {
private ColorUtil() {
public final class JavaDocColorUtil {
private JavaDocColorUtil() {
}
public static String generatePreviewHtml(@NotNull final Color color) {
@@ -116,7 +116,8 @@ public class JavaDocExternalFilter extends AbstractExternalFilter {
PsiClass aClass = ((PsiMethod)element).getContainingClass();
if (aClass != null) {
String qName = aClass.getQualifiedName();
return pair(qName, qName + JavaDocInfoGenerator.generateTypeParameters(aClass, true));
return pair(qName, qName + new JavaDocInfoGenerator(aClass.getProject(), null, false)
.generateTypeParameters(aClass, true));
}
return null;
}
File diff suppressed because it is too large Load Diff
@@ -5,18 +5,28 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class JavaDocInfoGeneratorFactory {
public static JavaDocInfoGeneratorFactory getInstance() {
return ApplicationManager.getApplication().getService(JavaDocInfoGeneratorFactory.class);
}
protected JavaDocInfoGenerator createImpl(Project project, PsiElement element) {
return new JavaDocInfoGenerator(project, element);
protected JavaDocInfoGenerator createImpl(@NotNull Project project, @Nullable PsiElement element) {
return new JavaDocInfoGenerator(project, element, false);
}
protected JavaDocInfoGenerator createImpl(@NotNull Project project, @Nullable PsiElement element, boolean isGenerationForRenderedDoc) {
return new JavaDocInfoGenerator(project, element, isGenerationForRenderedDoc);
}
@NotNull
public static JavaDocInfoGenerator create(Project project, PsiElement element) {
return getInstance().createImpl(project, element);
public static JavaDocInfoGenerator create(@NotNull Project project, @Nullable PsiElement element) {
return getInstance().createImpl(project, element, false);
}
@NotNull
public static JavaDocInfoGenerator create(@NotNull Project project, @Nullable PsiElement element, boolean isGenerationForRenderedDoc) {
return getInstance().createImpl(project, element, isGenerationForRenderedDoc);
}
}
@@ -13,6 +13,7 @@ import com.intellij.codeInsight.javadoc.JavaDocExternalFilter;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory;
import com.intellij.codeInsight.javadoc.JavaDocUtil;
import com.intellij.ide.highlighter.JavaHighlightingColors;
import com.intellij.ide.util.PackageUtil;
import com.intellij.java.JavaBundle;
import com.intellij.lang.CodeDocumentationAwareCommenter;
@@ -23,6 +24,7 @@ import com.intellij.lang.documentation.DocumentationMarkup;
import com.intellij.lang.documentation.ExternalDocumentationProvider;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.IndexNotReadyException;
@@ -59,6 +61,7 @@ import org.jetbrains.builtInWebServer.BuiltInWebBrowserUrlProviderKt;
import java.util.*;
import java.util.function.Consumer;
import static com.intellij.openapi.editor.richcopy.HtmlSyntaxInfoUtil.*;
import static com.intellij.util.ObjectUtils.notNull;
/**
@@ -132,19 +135,13 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
JavaDocInfoGenerator.appendExpressionValue(buffer, initializer);
PsiExpression constantInitializer = JavaDocInfoGenerator.calcInitializerExpression(variable);
if (constantInitializer != null) {
buffer.append(DocumentationMarkup.GRAYED_START);
JavaDocInfoGenerator.appendExpressionValue(buffer, constantInitializer);
buffer.append(DocumentationMarkup.GRAYED_END);
}
}
}
private static void generateModifiers(StringBuilder buffer, PsiModifierListOwner element) {
String modifiers = PsiFormatUtil.formatModifiers(element, PsiFormatUtilBase.JAVADOC_MODIFIERS_ONLY);
if (modifiers.length() > 0) {
buffer.append(modifiers);
buffer.append(" ");
}
JavaDocInfoGenerator.generateModifiers(buffer, element, false);
}
private static @NlsSafe String generatePackageInfo(PsiPackage aPackage) {
@@ -199,9 +196,9 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
aClass.isEnum() ? PsiKeyword.ENUM :
aClass.isRecord() ? PsiKeyword.RECORD :
PsiKeyword.CLASS;
buffer.append(classString).append(" ");
appendStyledSpan(buffer, JavaHighlightingColors.KEYWORD, classString).append(" ");
buffer.append(JavaDocUtil.getShortestClassName(aClass, aClass));
appendStyledSpan(buffer, JavaDocInfoGenerator.getClassTextAttributes(aClass), JavaDocUtil.getShortestClassName(aClass, aClass));
generateTypeParameters(aClass, buffer);
@@ -218,16 +215,16 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
public static void writeImplements(PsiClass aClass, StringBuilder buffer, PsiClassType[] refs) {
if (refs.length > 0) {
newLine(buffer);
buffer.append("implements "); // <- Groovy keyword
appendStyledSpan(buffer, JavaHighlightingColors.KEYWORD, "implements "); // <- Groovy keyword
writeTypeRefs(aClass, buffer, refs);
}
}
public static void writeExtends(PsiClass aClass, StringBuilder buffer, PsiClassType[] refs) {
if (refs.length > 0 || !aClass.isInterface() && !CommonClassNames.JAVA_LANG_OBJECT.equals(aClass.getQualifiedName())) {
buffer.append(" extends "); // <- Groovy keyword
appendStyledSpan(buffer, JavaHighlightingColors.KEYWORD, " extends "); // <- Groovy keyword
if (refs.length == 0) {
buffer.append("Object");
appendStyledSpan(buffer, JavaHighlightingColors.CLASS_NAME_ATTRIBUTES, "Object");
}
else {
writeTypeRefs(aClass, buffer, refs);
@@ -237,10 +234,11 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
private static void writeTypeRefs(PsiClass aClass, StringBuilder buffer, PsiClassType[] refs) {
for (int i = 0; i < refs.length; i++) {
JavaDocInfoGenerator.generateType(buffer, refs[i], aClass, false, true);
new JavaDocInfoGenerator(aClass.getProject(), null, false)
.generateType(buffer, refs[i], aClass, false, true);
if (i < refs.length - 1) {
buffer.append(", ");
appendStyledSpan(buffer, JavaHighlightingColors.COMMA, ", ");
}
}
}
@@ -249,7 +247,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
if (typeParameterOwner.hasTypeParameters()) {
PsiTypeParameter[] params = typeParameterOwner.getTypeParameters();
buffer.append("&lt;");
appendStyledSpan(buffer, JavaHighlightingColors.OPERATION_SIGN, "&lt;");
for (int i = 0; i < params.length; i++) {
PsiTypeParameter p = params[i];
@@ -258,23 +256,24 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
PsiClassType[] refs = p.getExtendsList().getReferencedTypes();
if (refs.length > 0) {
buffer.append(" extends "); // <- Groovy keyword
appendStyledSpan(buffer, JavaHighlightingColors.KEYWORD, " extends "); // <- Groovy keyword
for (int j = 0; j < refs.length; j++) {
JavaDocInfoGenerator.generateType(buffer, refs[j], typeParameterOwner, false, true);
new JavaDocInfoGenerator(typeParameterOwner.getProject(), null, false)
.generateType(buffer, refs[j], typeParameterOwner, false, true);
if (j < refs.length - 1) {
buffer.append(" & ");
appendStyledSpan(buffer, JavaHighlightingColors.OPERATION_SIGN, " & ");
}
}
}
if (i < params.length - 1) {
buffer.append(", ");
appendStyledSpan(buffer, JavaHighlightingColors.COMMA, ", ");
}
}
buffer.append("&gt;");
appendStyledSpan(buffer, JavaHighlightingColors.OPERATION_SIGN, "&gt;");
}
}
@@ -288,7 +287,8 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
generateOrderEntryAndPackageInfo(buffer, parentClass);
}
buffer.append(JavaDocUtil.getShortestClassName(parentClass, method));
appendStyledSpan(
buffer, JavaDocInfoGenerator.getClassTextAttributes(parentClass), JavaDocUtil.getShortestClassName(parentClass, method));
newLine(buffer);
}
@@ -298,42 +298,45 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
generateTypeParameters(method, buffer);
if (method.getReturnType() != null) {
JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(method.getReturnType()), method, false, true);
new JavaDocInfoGenerator(method.getProject(), null, false)
.generateType(buffer, substitutor.substitute(method.getReturnType()), method, false, true);
buffer.append(" ");
}
buffer.append(method.getName());
appendStyledSpan(buffer, JavaDocInfoGenerator.getMethodDeclarationTextAttributes(method), method.getName());
buffer.append("(");
appendStyledSpan(buffer, JavaHighlightingColors.PARENTHESES, "(");
PsiParameter[] params = method.getParameterList().getParameters();
for (int i = 0; i < params.length; i++) {
PsiParameter param = params[i];
JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(param.getType()), method, false, true);
new JavaDocInfoGenerator(method.getProject(), null, false)
.generateType(buffer, substitutor.substitute(param.getType()), method, false, true);
buffer.append(" ");
buffer.append(param.getName());
appendStyledSpan(buffer, JavaHighlightingColors.PARAMETER_ATTRIBUTES, param.getName());
if (i < params.length - 1) {
buffer.append(", ");
appendStyledSpan(buffer, JavaHighlightingColors.COMMA, ", ");
}
}
buffer.append(")");
appendStyledSpan(buffer, JavaHighlightingColors.PARENTHESES, ")");
PsiClassType[] refs = method.getThrowsList().getReferencedTypes();
if (refs.length > 0) {
newLine(buffer);
buffer.append(" throws ");
appendStyledSpan(buffer, JavaHighlightingColors.KEYWORD, " throws ");
for (int i = 0; i < refs.length; i++) {
PsiClass throwsClass = refs[i].resolve();
if (throwsClass != null) {
buffer.append(JavaDocUtil.getShortestClassName(throwsClass, method));
appendStyledSpan(buffer, JavaDocInfoGenerator.getClassTextAttributes(throwsClass),
JavaDocUtil.getShortestClassName(throwsClass, method));
}
else {
buffer.append(refs[i].getPresentableText());
}
if (i < refs.length - 1) {
buffer.append(", ");
appendStyledSpan(buffer, JavaHighlightingColors.COMMA, ", ");
}
}
}
@@ -346,16 +349,18 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
PsiClass parentClass = field.getContainingClass();
if (parentClass != null && !(parentClass instanceof PsiAnonymousClass)) {
buffer.append(JavaDocUtil.getShortestClassName(parentClass, field));
appendStyledSpan(
buffer, JavaDocInfoGenerator.getClassTextAttributes(parentClass), JavaDocUtil.getShortestClassName(parentClass, field));
newLine(buffer);
}
JavaDocInfoGenerator.generateTooltipAnnotations(field, buffer);
generateModifiers(buffer, field);
JavaDocInfoGenerator.generateType(buffer, substitutor.substitute(field.getType()), field, false, true);
new JavaDocInfoGenerator(field.getProject(), null, false)
.generateType(buffer, substitutor.substitute(field.getType()), field, false, true);
buffer.append(" ");
buffer.append(field.getName());
appendStyledSpan(buffer, JavaDocInfoGenerator.getFieldTextAttributes(field), field.getName());
generateInitializer(buffer, field);
@@ -368,11 +373,12 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
generateModifiers(buffer, variable);
JavaDocInfoGenerator.generateType(buffer, variable.getType(), variable, false, true);
new JavaDocInfoGenerator(variable.getProject(), null, false)
.generateType(buffer, variable.getType(), variable, false, true);
buffer.append(" ");
buffer.append(variable.getName());
appendStyledSpan(buffer, JavaHighlightingColors.LOCAL_VARIABLE_ATTRIBUTES, variable.getName());
generateInitializer(buffer, variable);
return buffer.toString();
@@ -385,7 +391,9 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
VirtualFile file = PsiImplUtil.getModuleVirtualFile(module);
generateOrderEntryInfo(sb, file, module.getProject());
sb.append(PsiKeyword.MODULE).append(' ').append(module.getName());
appendStyledSpan(sb, JavaHighlightingColors.KEYWORD, PsiKeyword.MODULE);
sb.append(' ');
appendStyledSpan(sb, JavaHighlightingColors.CLASS_NAME_ATTRIBUTES, module.getName());
return sb.toString();
}
@@ -587,7 +595,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
public @Nls @Nullable String generateRenderedDoc(@NotNull PsiDocCommentBase comment) {
PsiElement target = comment.getOwner();
if (target == null) target = comment;
JavaDocInfoGenerator generator = JavaDocInfoGeneratorFactory.create(target.getProject(), target);
JavaDocInfoGenerator generator = JavaDocInfoGeneratorFactory.create(target.getProject(), target, true);
return JavaDocExternalFilter.filterInternalDocInfo(generator.generateRenderedDocInfo());
}
@@ -648,7 +656,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
@Nullable
public static String generateExternalJavadoc(@NotNull final PsiElement element, @Nullable List<String> docURLs) {
final JavaDocInfoGenerator javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(element.getProject(), element);
final JavaDocInfoGenerator javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(element.getProject(), element, false);
return generateExternalJavadoc(javaDocInfoGenerator, docURLs);
}
@@ -1 +1 @@
<a href="psi_element://java.lang.String">String</a> item
<span style="color:#000000;"><a href="psi_element://java.lang.String">String</a></span> <span style="color:#000000;">item</span>
@@ -1 +1 @@
<a href="psi_element://java.lang.String">String</a> a = &quot;aaa&quot;
<span style="color:#000000;"><a href="psi_element://java.lang.String">String</a></span> <span style="color:#000000;">a</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"aaa"</span>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br><font color=red>@Nullable</font>&nbsp;
@<a href="psi_element://java.lang.Deprecated"><code>Deprecated</code></a>&nbsp;
public <a href="psi_element://java.lang.String"><code>String</code></a> <b>field</b> = null</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><font color=red>@</font>&nbsp;
<span style="color:#808000;">@</span><a href="psi_element://java.lang.Deprecated"><code style='font-size:96%;'><span style="color:#808000;">Deprecated</span></code></a>&nbsp;
<span style="color:#000080;font-weight:bold;">public</span> <a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a> <span style="color:#660e7a;font-weight:bold;">field</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">null</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><table class='sections'></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br>public&nbsp;void&nbsp;<b>foo</b>(@<a href="psi_element://java.lang.Deprecated"><code>Deprecated</code></a>&nbsp;<a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;s,
@<a href="psi_element://java.lang.Deprecated"><code>Deprecated</code></a>&nbsp;<a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;p)</pre></div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="color:#808000;">@</span><a href="psi_element://java.lang.Deprecated"><code style='font-size:96%;'><span style="color:#808000;">Deprecated</span></code></a>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="">s</span><span style="">,
</span> <span style="color:#808000;">@</span><a href="psi_element://java.lang.Deprecated"><code style='font-size:96%;'><span style="color:#808000;">Deprecated</span></code></a>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="">p</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><table class='sections'><p></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>public&nbsp;void&nbsp;<b>foo</b>()</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From interface:</td><td valign='top'><p><a href="psi_element://Foo"><code>Foo</code></a><br>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From interface:</td><td valign='top'><p><a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a><br>
some javadoc
</td><tr><td valign='top' class='section'><p>Specified by:</td><td valign='top'><p><a href="psi_element://Foo#foo()"><code>foo</code></a> in interface <a href="psi_element://Foo"><code>Foo</code></a></td></table>
</td><tr><td valign='top' class='section'><p>Specified by:</td><td valign='top'><p><a href="psi_element://Foo#foo()"><code><span style="color:#000000;">foo</span></code></a> in interface <a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br>public&nbsp;void&nbsp;<b>foo</b>()</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>API Note:</td><td valign='top'><p> my api note </td><tr><td valign='top' class='section'><p>Implementation Requirements:</td><td valign='top'><p> my impl spec </td><tr><td valign='top' class='section'><p>Implementation Note:</td><td valign='top'><p> my impl note</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>API Note:</td><td valign='top'><p> my api note </td><tr><td valign='top' class='section'><p>Implementation<br>Requirements:</td><td valign='top'><p> my impl spec </td><tr><td valign='top' class='section'><p>Implementation<br>Note:</td><td valign='top'><p> my impl note</td></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>MethodTypeParam</b>&lt;T&gt;
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;T&gt; &ndash; type param</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">MethodTypeParam</span><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;<span style="color:#20999d;">T</span>&gt; &ndash; type param</td></table>
@@ -1 +1 @@
[&lt; java 1.7 &gt;] java.util<br/> public class ArrayList&lt;E&gt; extends <a href="psi_element://java.util.AbstractList">AbstractList</a>&lt;E&gt;<br/> implements <a href="psi_element://java.util.List">List</a>&lt;E&gt;, <a href="psi_element://java.util.RandomAccess">RandomAccess</a>, <a href="psi_element://java.lang.Cloneable">Cloneable</a>, <a href="psi_element://java.io.Serializable">Serializable</a>
[&lt; java 1.7 &gt;] <a href="psi_element://java.util">java.util</a><br/> <span style="color:#000080;font-weight:bold;">public</span> <span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">ArrayList</span><span style="">&lt;</span>E<span style="">&gt;</span><span style="color:#000080;font-weight:bold;"> extends </span><span style="color:#000000;"><a href="psi_element://java.util.AbstractList">AbstractList</a></span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span><br/> <span style="color:#000080;font-weight:bold;">implements </span><span style="color:#000000;"><a href="psi_element://java.util.List">List</a></span><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span><span style="">, </span><span style="color:#000000;"><a href="psi_element://java.util.RandomAccess">RandomAccess</a></span><span style="">, </span><span style="color:#000000;"><a href="psi_element://java.lang.Cloneable">Cloneable</a></span><span style="">, </span><span style="color:#000000;"><a href="psi_element://java.io.Serializable">Serializable</a></span>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>@<a href="psi_element://Bar"><code>Bar</code></a>(<a href="psi_element://Baz#CONST"><code>Baz.CONST</code></a>,&nbsp;value = {<a href="psi_element://Baz#CONST"><code>Baz.CONST</code></a>})&nbsp;
class <b>Foo</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#808000;">@</span><a href="psi_element://Bar"><code style='font-size:96%;'><span style="color:#808000;">Bar</span></code></a><span style="">(</span><a href="psi_element://Baz#CONST"><code style='font-size:96%;'><span style="color:#000000;">Baz</span><span style="">.</span><span style="color:#660e7a;font-style:italic;">CONST</span></code></a><span style="">,&nbsp;</span><span style="">value</span><span style=""> = </span><span style="">{</span><a href="psi_element://Baz#CONST"><code style='font-size:96%;'><span style="color:#000000;">Baz</span><span style="">.</span><span style="color:#660e7a;font-style:italic;">CONST</span></code></a><span style="">}</span><span style="">)</span>&nbsp;
<span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Foo</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><table class='sections'></table>
@@ -1,11 +1,5 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Foo"><code>Foo</code></a><br>int <b>foo</b></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;font-weight:bold;">foo</span><br><span class='grayed'>defined in </span><a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></pre></div><div class='content'>
<pre>
<code>
class Clazzz {
def f[U](u: U) {}
val a = 1
}
</code>
<code><span style=""><span style="color:#000080;font-weight:bold;">class&#32;</span><span style="">Clazzz&#32;{</span><span style="">&#32;&#32;def&#32;f[U](u:&#32;U)&#32;{}</span><span style=""></span><span style="">&#32;&#32;val&#32;a&#32;=&#32;</span><span style="color:#0000ff;">1</span><span style="">}</span></span></code>
</pre>
</div><table class='sections'><p></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br>public <a href="psi_element://java.lang.String"><code>String</code></a> <b>field</b> = foo(&quot;&quot;, &quot;&quot;)</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a> <span style="color:#660e7a;font-weight:bold;">field</span><span style=""> = </span><span style="color:#000000;">foo</span><span style="">(</span><span style="color:#008000;font-weight:bold;">""</span><span style="">, </span><span style="color:#008000;font-weight:bold;">""</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br>public static final int <b>field</b> = 1 + 1<span class='grayed'> = 2</span></pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static final</span> <span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;">field</span><span style=""> = </span><span style="color:#0000ff;">1&#32;</span><span style="">+&#32;</span><span style="color:#0000ff;">1</span><span class='grayed'><span style=""> = </span><span style="color:#0000ff;">2</span></span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><table class='sections'></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://FooBar"><code>FooBar</code></a><br>public&nbsp;<a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;<b>getMyFoo</b>()</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From field:</td><td valign='top'><p><a href="psi_element://FooBar#myFoo"><code>myFoo</code></a><br>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#000000;">getMyFoo</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://FooBar"><code><span style="color:#000000;">FooBar</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From field:</td><td valign='top'><p><a href="psi_element://FooBar#myFoo"><code><span style="color:#660e7a;font-weight:bold;">myFoo</span></code></a><br>
foo bar baz
</td></table>
@@ -1,6 +1,6 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>java.lang<br>public final class <b>String</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a>
implements <a href="psi_element://java.io.Serializable"><code>java.io.Serializable</code></a>,&nbsp;<a href="psi_element://java.lang.Comparable"><code>Comparable</code></a>&lt;<a href="psi_element://java.lang.String"><code>String</code></a>&gt;,&nbsp;<a href="psi_element://java.lang.CharSequence"><code>CharSequence</code></a></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public final</span> <span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">String</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>
<span style="color:#000080;font-weight:bold;">implements </span><a href="psi_element://java.io.Serializable"><code><span style="color:#000000;">java.io.Serializable</span></code></a><span style="">,</span>&nbsp;<a href="psi_element://java.lang.Comparable"><code><span style="color:#000000;">Comparable</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span><span style="">,</span>&nbsp;<a href="psi_element://java.lang.CharSequence"><code><span style="color:#000000;">CharSequence</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://java.lang"><code><span style="color:#000000;">java.lang</span></code></a></pre></div><div class='content'>
The <code>String</code> class represents character strings. All
string literals in Java programs, such as <code>"abc"</code>, are
implemented as instances of this class.
@@ -30,7 +30,7 @@ implements <a href="psi_element://java.io.Serializable"><code>java.io.Serializab
searching strings, for extracting substrings, and for creating a
copy of a string with all characters translated to uppercase or to
lowercase. Case mapping is based on the Unicode Standard version
specified by the <a href="psi_element://java.lang.Character"><code>Character</code></a> class.
specified by the <a href="psi_element://java.lang.Character"><code><span style="color:#000000;">Character</span></code></a> class.
<p>
The Java language provides special support for the string
concatenation operator (&nbsp;+&nbsp;), and for conversion of
@@ -44,7 +44,7 @@ implements <a href="psi_element://java.io.Serializable"><code>java.io.Serializab
<i>The Java Language Specification</i>.
<p> Unless otherwise noted, passing a <tt>null</tt> argument to a constructor
or method in this class will cause a <a href="psi_element://java.lang.NullPointerException"><code>NullPointerException</code></a> to be
or method in this class will cause a <a href="psi_element://java.lang.NullPointerException"><code><span style="color:#000000;">NullPointerException</span></code></a> to be
thrown.
<p>A <code>String</code> represents a string in the UTF-16 format
@@ -58,7 +58,4 @@ implements <a href="psi_element://java.io.Serializable"><code>java.io.Serializab
Unicode code points (i.e., characters), in addition to those for
dealing with Unicode code units (i.e., <code>char</code> values).
</div><table class='sections'><p><tr><td valign='top' class='section'><p>Since:</td><td valign='top'><p>JDK1.0</td><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://java.lang.Object#toString()"><code>Object.toString()</code></a>,
<a href="psi_element://java.lang.StringBuffer"><code>StringBuffer</code></a>,
<a href="psi_element://java.lang.StringBuilder"><code>StringBuilder</code></a>,
<font color=red>java.nio.charset.Charset</font></td></table>
</div><table class='sections'><p><tr><td valign='top' class='section'><p>Since:</td><td valign='top'><p>JDK1.0</td><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://java.lang.Object#toString()"><code><span style="color:#000000;">Object</span><span style="">.</span><span style="color:#000000;">toString</span><span style="">()</span></code></a>,<br><a href="psi_element://java.lang.StringBuffer"><code><span style="color:#000000;">StringBuffer</span></code></a>,<br><a href="psi_element://java.lang.StringBuilder"><code><span style="color:#000000;">StringBuilder</span></code></a>,<br><font color=red>java.nio.charset.Charset</font></td></table>
@@ -1,8 +1,8 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://java.util.List"><code>java.util.List&lt;E&gt;</code></a><br>@<a href="psi_element://org.jetbrains.annotations.Contract"><code>Contract</code></a>(pure = true)&nbsp;
public abstract&nbsp;boolean&nbsp;<b>contains</b>(<a href="psi_element://java.lang.Object"><code>Object</code></a>&nbsp;o)</pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code style='font-size:96%;'><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span>&nbsp;
<span style="color:#000080;font-weight:bold;">public abstract</span>&nbsp;<span style="color:#000080;font-weight:bold;">boolean</span>&nbsp;<span style="color:#000000;">contains</span><span style="">(</span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="">o</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://java.util.List"><code><span style="color:#000000;">java.util.List<span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span></span></code></a></pre></div><div class='content'>
Returns <tt>true</tt> if this list contains the specified element.
More formally, returns <tt>true</tt> if and only if this list contains
at least one element <tt>e</tt> such that
<tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.equals(e))</tt>.
<p></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code>contains</code></a> in interface <a href="psi_element://java.util.Collection"><code>Collection</code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'>o &ndash; element whose presence in this list is to be tested </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><tt>true</tt> if this list contains the specified element </td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.ClassCastException"><code>ClassCastException</code></a> &ndash; if the type of the specified element is incompatible with this list (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>) <p><a href="psi_element://java.lang.NullPointerException"><code>NullPointerException</code></a> &ndash; if the specified element is null and this list does not permit null elements (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>)</td><tr><td valign='top' class='section'><p>External<br> annotations:</td><td valign='top'><p>@<a href="psi_element://org.jetbrains.annotations.Contract">org.jetbrains.annotations.Contract</a>(pure = true)</td></table><div class='bottom'><icon src='AllIcons.Nodes.PpLibFolder'>&nbsp;&lt; java 1.7 ></div>
</div><table class='sections'><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://java.util.Collection"><code><span style="color:#000000;">Collection</span></code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><span style="">o</span> &ndash; element whose presence in this list is to be tested </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><tt>true</tt> if this list contains the specified element </td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.ClassCastException"><code><span style="color:#000000;">ClassCastException</span></code></a> &ndash; if the type of the specified element is incompatible with this list (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>) <p><a href="psi_element://java.lang.NullPointerException"><code><span style="color:#000000;">NullPointerException</span></code></a> &ndash; if the specified element is null and this list does not permit null elements (<a href="psi_element://java.util.Collection###optional-restrictions">optional</a>)</td><tr><td valign='top' class='section'><p>External<br> annotations:</td><td valign='top'><p><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><span style="color:#808000;">org.jetbrains.annotations.Contract</span></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></td></table><div class='bottom'><icon src='AllIcons.Nodes.PpLibFolder'>&nbsp;&lt; java 1.7 ></div>
@@ -1,8 +1,8 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://My"><code>My</code></a><br><i>@<a href="psi_element://org.jetbrains.annotations.Contract"><code>Contract</code></a>(pure = true)</i>&nbsp;
boolean&nbsp;<b>contains</b>(<a href="psi_element://java.lang.Object"><code>Object</code></a>&nbsp;o)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From interface:</td><td valign='top'><p><a href="psi_element://java.util.Collection"><code>java.util.Collection</code></a><br>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code style='font-size:96%;'><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i>&nbsp;
<span style="color:#000080;font-weight:bold;">boolean</span>&nbsp;<span style="color:#000000;">contains</span><span style="">(</span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="">o</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://My"><code><span style="color:#000000;">My</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From interface:</td><td valign='top'><p><a href="psi_element://java.util.Collection"><code><span style="color:#000000;">java.util.Collection</span></code></a><br>
Returns <tt>true</tt> if this collection contains the specified element.
More formally, returns <tt>true</tt> if and only if this collection
contains at least one element <tt>e</tt> such that
<tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.equals(e))</tt>.
</td><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code>contains</code></a> in interface <a href="psi_element://java.util.Collection"><code>Collection</code></a><br><a href="psi_element://I#contains(java.lang.Object)"><code>contains</code></a> in interface <a href="psi_element://I"><code>I</code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'>o &ndash; element whose presence in this collection is to be tested </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><tt>true</tt> if this collection contains the specified element </td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.ClassCastException"><code>ClassCastException</code></a> &ndash; if the type of the specified element is incompatible with this collection (<a href="psi_element://My###optional-restrictions">optional</a>) <p><a href="psi_element://java.lang.NullPointerException"><code>NullPointerException</code></a> &ndash; if the specified element is null and this collection does not permit null elements (<a href="psi_element://My###optional-restrictions">optional</a>)</td><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i>@<a href="psi_element://org.jetbrains.annotations.Contract">org.jetbrains.annotations.Contract</a>(pure = true)</i></td></table>
</td><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://java.util.Collection#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://java.util.Collection"><code><span style="color:#000000;">Collection</span></code></a><br><a href="psi_element://I#contains(java.lang.Object)"><code><span style="color:#000000;">contains</span></code></a> in interface <a href="psi_element://I"><code><span style="color:#000000;">I</span></code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><span style="">o</span> &ndash; element whose presence in this collection is to be tested </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><tt>true</tt> if this collection contains the specified element </td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.lang.ClassCastException"><code><span style="color:#000000;">ClassCastException</span></code></a> &ndash; if the type of the specified element is incompatible with this collection (<a href="psi_element://My###optional-restrictions">optional</a>) <p><a href="psi_element://java.lang.NullPointerException"><code><span style="color:#000000;">NullPointerException</span></code></a> &ndash; if the specified element is null and this collection does not permit null elements (<a href="psi_element://My###optional-restrictions">optional</a>)</td><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><span style="color:#808000;">org.jetbrains.annotations.Contract</span></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i></td></table>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>C</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">C</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'>
a &lt;&lt; b
</div><table class='sections'><p></table>
@@ -1,5 +1,5 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>C</b>
extends java.lang.Object</pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">C</span>
<span style="color:#000080;font-weight:bold;">extends </span>java.lang.Object</pre></div><div class='content'>
some text
</div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p>System.out</td></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://E"><code>E</code></a><br><a href="psi_element://E"><code>E</code></a> <b>A</b>
Enum constant ordinal: 0</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a> <span style="color:#660e7a;">A</span><br><span class='grayed'>defined in </span><a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a>
<span class='grayed'>Enum constant ordinal: 0</span></pre></div><table class='sections'></table>
@@ -1 +1 @@
<a href="psi_element://E">E</a><br/> <a href="psi_element://E">E</a> A<br/>Enum constant ordinal: 0
<span style="color:#000000;"><a href="psi_element://E">E</a></span><br/> <span style="color:#000000;"><a href="psi_element://E">E</a></span> <span style="color:#660e7a;">A</span><br/><span class='grayed'>Enum constant ordinal: 0</span>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://En"><code>En</code></a><br><i>@<a href="psi_element://org.jetbrains.annotations.Contract"><code>Contract</code></a>(value = &quot;_ -&gt; param1&quot;,&nbsp;pure = true)</i>&nbsp;
static&nbsp;int&nbsp;<b>valueOf</b>(int&nbsp;i)</pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code style='font-size:96%;'><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">value</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"_&#32;-&gt;&#32;param1"</span><span style="">,&nbsp;</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i>&nbsp;
<span style="color:#000080;font-weight:bold;">static</span>&nbsp;<span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="color:#000000;">valueOf</span><span style="">(</span><span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="">i</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://En"><code><span style="color:#000000;">En</span></code></a></pre></div><div class='content'>
myjavadoc
<p></div><table class='sections'><p><tr><td valign='top' class='section'><p>Params:</td><td valign='top'>i &ndash; </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p></td><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i>@<a href="psi_element://org.jetbrains.annotations.Contract">org.jetbrains.annotations.Contract</a>(value = &quot;_ -&gt; param1&quot;,&nbsp;pure = true)</i></td></table>
</div><table class='sections'><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><span style="">i</span> &ndash; </td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p></td><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><span style="color:#808000;">org.jetbrains.annotations.Contract</span></a><span style="">(</span><span style="">value</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"_&#32;-&gt;&#32;param1"</span><span style="">,&nbsp;</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i></td></table>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Pattern</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Pattern</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'>
\W \n
</div><table class='sections'><p></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Foo"><code>Foo</code></a><br>int <b>foo</b></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;font-weight:bold;">foo</span><br><span class='grayed'>defined in </span><a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></pre></div><div class='content'>
&amp;gt; is &gt; &amp;lt; is &lt; &amp;quot; is &quot;
</div><table class='sections'><p></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static&nbsp;void&nbsp;<b>JAVADOC_ME</b>()</pre></div><div class='content'> The value of B is <a href="psi_element://A#B">"a&lt;b"</a>. <p></div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">JAVADOC_ME</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><div class='content'> The value of B is <a href="psi_element://A#B">"a&lt;b"</a>. </div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static int[] <b>x</b> = new int[]{1, 2, 3}</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span> <span style="color:#000080;font-weight:bold;">int</span><span style="">[]</span> <span style="color:#660e7a;font-style:italic;">x</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">new </span><span style="color:#000080;font-weight:bold;">int</span><span style="">[]</span><span style="">{</span><span style="color:#0000ff;">1</span><span style="">,&#32;</span><span style="color:#0000ff;">2</span><span style="">,&#32;</span><span style="color:#0000ff;">3</span><span style="">}</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static <font color=red>java.util.function.Consumer&lt;Integer&gt;</font> <b>F</b> = i -&gt; System.out.println(i)</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span> <font color=red>java.util.function.Consumer&lt;Integer&gt;</font> <span style="color:#660e7a;font-style:italic;">F</span><span style=""> = </span><span style="">i&#32;-&gt;&#32;System.out.println(i)</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static int[] <b>x</b> = new int[1]</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span> <span style="color:#000080;font-weight:bold;">int</span><span style="">[]</span> <span style="color:#660e7a;font-style:italic;">x</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">new </span><span style="color:#000080;font-weight:bold;">int</span><span style="">[<span style="color:#0000ff;">1</span><span style="">]</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static int <b>JAVADOC_ME</b> = 23</pre></div><div class='content'> The value of the field is 23. </div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span> <span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;font-style:italic;">JAVADOC_ME</span><span style=""> = </span><span style="color:#0000ff;">23</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><div class='content'> The value of the field is 23. </div><table class='sections'><p></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>htmlLink</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'> <a href="psi_element://other">link</a> </div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">htmlLink</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'> <a href="psi_element://other">link</a> </div><table class='sections'><p></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>pack<br>class <b>htmlLinkDeep</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'> <a href="psi_element://other">link</a> </div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">htmlLinkDeep</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://pack"><code><span style="color:#000000;">pack</span></code></a></pre></div><div class='content'> <a href="psi_element://other">link</a> </div><table class='sections'><p></table>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>pack<br>class <b>A</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">A</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://pack"><code><span style="color:#000000;">pack</span></code></a></pre></div><div class='content'>
<a href="psi_element://pack###section2">link</a>
</div><table class='sections'><p></table>
@@ -1,5 +1,5 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Test</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
<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>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'>
<a name="section1">section one</a>
text
<a href="psi_element://Test###section1">link up</a>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Idea4780"><code>Idea4780</code></a><br>public&nbsp;<a href="psi_element://java.lang.Object"><code>Object</code></a>&nbsp;<b>read</b>()
throws&nbsp;<a href="psi_element://java.io.IOException"><code>IOException</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.io.IOException"><code>IOException</code></a> &ndash; if an I/O error occurs while reading. <p><a href="psi_element://java.io.EOFException"><code>EOFException</code></a> &ndash; if this source is already closed when the <code>read()</code> is called, or is closed during the <code>read()</code>. <p><font color=red>InterruptedIOException</font> &ndash; if the reading thread is interrupted.</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="color:#000000;">read</span><span style="">(</span><span style="">)</span>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<a href="psi_element://java.io.IOException"><code><span style="color:#000000;">IOException</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://Idea4780"><code><span style="color:#000000;">Idea4780</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.io.IOException"><code><span style="color:#000000;">IOException</span></code></a> &ndash; if an I/O error occurs while reading. <p><a href="psi_element://java.io.EOFException"><code><span style="color:#000000;">EOFException</span></code></a> &ndash; if this source is already closed when the <code>read()</code> is called, or is closed during the <code>read()</code>. <p><font color=red>InterruptedIOException</font> &ndash; if the reading thread is interrupted.</td></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://InheritedDocInThrows"><code>InheritedDocInThrows</code></a><br>void&nbsp;<b>foo</b>()
throws&nbsp;<a href="psi_element://java.io.IOException"><code>IOException</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://A#foo()"><code>foo</code></a> in class <a href="psi_element://A"><code>A</code></a></td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.io.IOException"><code>IOException</code></a> &ndash; la-la-la</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<a href="psi_element://java.io.IOException"><code><span style="color:#000000;">IOException</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://InheritedDocInThrows"><code><span style="color:#000000;">InheritedDocInThrows</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://A#foo()"><code><span style="color:#000000;">foo</span></code></a> in class <a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.io.IOException"><code><span style="color:#000000;">IOException</span></code></a> &ndash; la-la-la</td></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://InheritedDocInThrows1"><code>InheritedDocInThrows1</code></a><br>void&nbsp;<b>foo</b>()
throws&nbsp;<a href="psi_element://java.io.IOException"><code>IOException</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://A#foo()"><code>foo</code></a> in class <a href="psi_element://A"><code>A</code></a></td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.io.IOException"><code>IOException</code></a> &ndash; comment</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<a href="psi_element://java.io.IOException"><code><span style="color:#000000;">IOException</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://InheritedDocInThrows1"><code><span style="color:#000000;">InheritedDocInThrows1</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://A#foo()"><code><span style="color:#000000;">foo</span></code></a> in class <a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://java.io.IOException"><code><span style="color:#000000;">IOException</span></code></a> &ndash; comment</td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://java.lang.String"><code>String</code></a> <b>s</b></pre></div><div class='content'>s &ndash; String parameter.</div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a> <span style="color:#000000;">s</span></pre></div><div class='content'><span style="">s</span> &ndash; String parameter.</div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public <a href="psi_element://java.lang.String"><code>String</code></a> <b>strings</b> = &quot;A&lt;BLANK&gt;B&quot;</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a> <span style="color:#660e7a;font-weight:bold;">strings</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"A&lt;BLANK&gt;B"</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public <a href="psi_element://java.util.List"><code>List</code></a>&lt;<a href="psi_element://java.lang.String"><code>String</code></a>&gt; <b>strings</b> = new <a href="psi_element://java.util.ArrayList"><code>ArrayList</code></a>&lt;<a href="psi_element://java.lang.String"><code>String</code></a>&gt;(new <a href="psi_element://java.util.ArrayList"><code>ArrayList</code></a>&lt;<a href="psi_element://java.lang.Integer"><code>Integer</code></a>&gt;(), Collections.singleton(new <a href="psi_element://java.util.ArrayList"><code>ArrayList</code></a>&lt;<a href="psi_element://java.lang.Double"><code>Double</code></a>&gt;()))</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span> <span style="color:#660e7a;font-weight:bold;">strings</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">new </span><a href="psi_element://java.util.ArrayList"><code><span style="color:#000000;">ArrayList</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span><span style="">(</span><span style="color:#000080;font-weight:bold;">new </span><a href="psi_element://java.util.ArrayList"><code><span style="color:#000000;">ArrayList</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.Integer"><code><span style="color:#000000;">Integer</span></code></a><span style="">&gt;</span><span style="">(</span><span style="">)</span><span style="">, </span><span style="color:#000000;">Collections.singleton</span><span style="">(</span><span style="color:#000080;font-weight:bold;">new </span><a href="psi_element://java.util.ArrayList"><code><span style="color:#000000;">ArrayList</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.Double"><code><span style="color:#000000;">Double</span></code></a><span style="">&gt;</span><span style="">(</span><span style="">)</span><span style="">)</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br>public int <b>field</b> = anotherField</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;font-weight:bold;">field</span><span style=""> = </span><span style="">anotherField</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>int <b>a</b></pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#000000;">a</span></pre></div><table class='sections'></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Test</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'> <pre>abc</pre> </div><table class='sections'><p></table>
<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>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'> <pre>abc</pre> </div><table class='sections'><p></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Foo"><code>Foo</code></a><br>int <b>foo</b></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;font-weight:bold;">foo</span><br><span class='grayed'>defined in </span><a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></pre></div><div class='content'>
foo&lt;&gt;
</div><table class='sections'><p></table>
@@ -1,9 +1,6 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Foo</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Foo</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'>
<pre>
<code>
{@literal @Inject}
public class Foo
</code>
<code><span style=""><span style="">{@literal&#32;@Inject}</span><span style="color:#000080;font-weight:bold;">public&#32;class&#32;</span><span style="">Foo</span></span></code>
</pre>
</div><table class='sections'><p></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre>class <b>Foo</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div>
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Foo</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Bar"><code>Bar</code></a><br>void&nbsp;<b>m</b>(int&nbsp;bar)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://Foo#m(int)"><code>m</code></a> in class <a href="psi_element://Foo"><code>Foo</code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'>bar &ndash; description</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">m</span><span style="">(</span><span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="">bar</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Bar"><code><span style="color:#000000;">Bar</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://Foo#m(int)"><code><span style="color:#000000;">m</span></code></a> in class <a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></td><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><span style="">bar</span> &ndash; description</td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Bar"><code>Bar</code></a><br>&lt;U&gt;&nbsp;void&nbsp;<b>m</b>(U&nbsp;u)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://Foo#m(java.lang.Object)"><code>m</code></a> in class <a href="psi_element://Foo"><code>Foo</code></a></td><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;U&gt; &ndash; description</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="">&lt;</span><span style="color:#20999d;">U</span><span style="">&gt;</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">m</span><span style="">(</span><span style="color:#20999d;">U</span>&nbsp;<span style="">u</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Bar"><code><span style="color:#000000;">Bar</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Overrides:</td><td valign='top'><p><a href="psi_element://Foo#m(java.lang.Object)"><code><span style="color:#000000;">m</span></code></a> in class <a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></td><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;<span style="color:#20999d;">U</span>&gt; &ndash; description</td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public byte[] <b>bytes</b> = &quot;&amp;amp;&quot;.getBytes()</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <span style="color:#000080;font-weight:bold;">byte</span><span style="">[]</span> <span style="color:#660e7a;font-weight:bold;">bytes</span><span style=""> = </span><span style="color:#000000;">&quot;&amp;amp;&quot;.getBytes</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><table class='sections'></table>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Producer"><code>Producer&lt;T&gt;</code></a><br>&lt;E extends <a href="psi_element://java.lang.Exception"><code>Exception</code></a>&gt;&nbsp;<font color=red>@Anno</font>&nbsp;<a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;<b>drainTo</b>(<a href="psi_element://Consumer"><code>Consumer</code></a>&lt;? super T, E&gt;&nbsp;consumer,
<a href="psi_element://java.lang.Object"><code>Object</code></a>&nbsp;someParameter)
throws&nbsp;<a href="psi_element://E"><code>E</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://E"><code>E</code></a></td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="">&lt;</span><span style="color:#20999d;">E</span><span style="color:#000080;font-weight:bold;"> extends </span><a href="psi_element://java.lang.Exception"><code><span style="color:#000000;">Exception</span></code></a><span style="">&gt;</span>&nbsp;<font color=red>@</font>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#000000;">drainTo</span><span style="">(</span><a href="psi_element://Consumer"><code><span style="color:#000000;">Consumer</span></code></a><span style="">&lt;</span><span style="">?</span><span style="color:#000080;font-weight:bold;"> super </span><span style="color:#20999d;">T</span><span style="">, </span><span style="color:#20999d;">E</span><span style="">&gt;</span>&nbsp;<span style="">consumer</span><span style="">,
</span> <a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="">someParameter</span><span style="">)</span>
<span style="color:#000080;font-weight:bold;">throws</span>&nbsp;<a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a><br><span class='grayed'>defined in </span><a href="psi_element://Producer"><code><span style="color:#000000;">Producer<span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span></span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a></td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://MethodTypeParam"><code>MethodTypeParam</code></a><br>&lt;T&gt;&nbsp;void&nbsp;<b>foo</b>(T&nbsp;t)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;T&gt; &ndash; type param</td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="color:#20999d;">T</span>&nbsp;<span style="">t</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://MethodTypeParam"><code><span style="color:#000000;">MethodTypeParam</span></code></a></pre></div><table class='sections'><p></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Test</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'> <pre>a bc</pre> </div><table class='sections'><p></table>
<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>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'> <pre>a bc</pre> </div><table class='sections'><p></table>
@@ -1,2 +1,2 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Foo</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'> foobar </div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Foo</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'> foobar </div><table class='sections'><p></table>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test</code></a><br>public <a href="psi_element://java.lang.String"><code>String</code></a> <b>field</b> = null</pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a> <span style="color:#660e7a;font-weight:bold;">field</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">null</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div><div class='content'>
<pre>
foo
<p></p>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>int <b>i</b></pre></div><div class='content'>i &ndash; input</div>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">int</span> <span style="color:#000000;">i</span></pre></div><div class='content'><span style="">i</span> &ndash; input</div>
@@ -1,4 +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'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">record</span> <span style="color:#000000;">Test</span>
<span style="color:#000080;font-weight:bold;">extends </span><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>
</div><table class='sections'><p><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><span style="">test</span> &ndash; simple description</td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static int <b>JAVADOC_ME</b></pre></div><div class='content'> Test </div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span> <span style="color:#000080;font-weight:bold;">int</span> <span style="color:#660e7a;font-style:italic;">JAVADOC_ME</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><div class='content'> Test </div><table class='sections'><p></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test&lt;E extends <a href="psi_element://java.lang.Number"><code>Number</code></a>&gt;</code></a><br>E&nbsp;<b>remove</b>(<a href="psi_element://java.lang.Integer"><code>Integer</code></a>&nbsp;idx)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://TestImpl#remove(java.lang.Number)"><code>TestImpl.remove(Number)</code></a></td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#20999d;">E</span>&nbsp;<span style="color:#000000;">remove</span><span style="">(</span><a href="psi_element://java.lang.Integer"><code><span style="color:#000000;">Integer</span></code></a>&nbsp;<span style="">idx</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test<span style="">&lt;</span><span style="color:#20999d;">E</span><span style="color:#000080;font-weight:bold;"> extends </span><a href="psi_element://java.lang.Number"><code><span style="color:#000000;">Number</span></code></a><span style="">&gt;</span></span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://TestImpl#remove(java.lang.Number)"><code><span style="color:#000000;">TestImpl</span><span style="">.</span><span style="color:#000000;">remove</span><span style="">(Number)</span></code></a></td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://Test"><code>Test&lt;E&gt;</code></a><br>E&nbsp;<b>remove</b>(int&nbsp;idx)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://TestImpl#remove(int)"><code>TestImpl.remove(int)</code></a></td></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#20999d;">E</span>&nbsp;<span style="color:#000000;">remove</span><span style="">(</span><span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="">idx</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test<span style="">&lt;</span><span style="color:#20999d;">E</span><span style="">&gt;</span></span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="psi_element://TestImpl#remove(int)"><code><span style="color:#000000;">TestImpl</span><span style="">.</span><span style="color:#000000;">remove</span><span style="">(</span><span style="color:#000080;font-weight:bold;">int</span><span style="">)</span></code></a></td></table>
@@ -1,5 +1,5 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://E"><code>E</code></a><br><i>@<a href="psi_element://org.jetbrains.annotations.Contract"><code>Contract</code></a>(value = &quot; -&gt; new&quot;,&nbsp;pure = true)</i>&nbsp;
public static&nbsp;<a href="psi_element://E"><code>E</code></a>[]&nbsp;<b>values</b>()</pre></div><div class='content'>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code style='font-size:96%;'><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">value</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"&#32;-&gt;&#32;new"</span><span style="">,&nbsp;</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i>&nbsp;
<span style="color:#000080;font-weight:bold;">public static</span>&nbsp;<a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a><span style="">[]</span>&nbsp;<span style="color:#000000;">values</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://E"><code><span style="color:#000000;">E</span></code></a></pre></div><div class='content'>
Returns an array containing the constants of this enum
type, in the order they're declared. This method may be
used to iterate over the constants as follows:
@@ -8,4 +8,4 @@ public static&nbsp;<a href="psi_element://E"><code>E</code></a>[]&nbsp;<b>values
System.out.println(c);
</pre>
<p></div><table class='sections'><p><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p>an array containing the constants of this enum type, in the order they're declared</td><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i>@<a href="psi_element://org.jetbrains.annotations.Contract">org.jetbrains.annotations.Contract</a>(value = &quot; -&gt; new&quot;,&nbsp;pure = true)</i></td></table>
</div><table class='sections'><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p>an array containing the constants of this enum type, in the order they're declared</td><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><span style="color:#808000;">org.jetbrains.annotations.Contract</span></a><span style="">(</span><span style="">value</span><span style=""> = </span><span style="color:#008000;font-weight:bold;">"&#32;-&gt;&#32;new"</span><span style="">,&nbsp;</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i></td></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><a href="psi_element://Test"><code>Test</code></a><br>public&nbsp;&lt;@<a href="psi_element://Test.Foo"><code>Foo</code></a>(1)&nbsp;T extends @<a href="psi_element://Test.Foo"><code>Foo</code></a>(2)&nbsp;<a href="psi_element://java.lang.CharSequence"><code>CharSequence</code></a> & @<a href="psi_element://Test.Foo"><code>Foo</code></a>(3)&nbsp;<a href="psi_element://java.lang.Cloneable"><code>Cloneable</code></a>&gt;&nbsp;@<a href="psi_element://Test.Foo"><code>Foo</code></a>(4)&nbsp;<a href="psi_element://java.util.List"><code>List</code></a>&lt;@<a href="psi_element://Test.Foo"><code>Foo</code></a>(5)&nbsp;? super @<a href="psi_element://Test.Foo"><code>Foo</code></a>(6)&nbsp;T&gt;&nbsp;<b>bar</b>()</pre></div>
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;<span style="color:#20999d;">T</span><span style="color:#000080;font-weight:bold;"> extends </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.CharSequence"><code><span style="color:#000000;">CharSequence</span></code></a><span style=""> & </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">3</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.Cloneable"><code><span style="color:#000000;">Cloneable</span></code></a><span style="">&gt;</span>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">4</span><span style="">)</span>&nbsp;<a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">5</span><span style="">)</span>&nbsp;<span style="">?</span><span style="color:#000080;font-weight:bold;"> super </span><span style="color:#808000;">@</span><a href="psi_element://Test.Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">6</span><span style="">)</span>&nbsp;<span style="color:#20999d;">T</span><span style="">&gt;</span>&nbsp;<span style="color:#000000;">bar</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><a href="psi_element://Test"><code>Test</code></a><br>public&nbsp;@<a href="psi_element://Foo"><code>Foo</code></a>(1)&nbsp;<a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;@<a href="psi_element://Foo"><code>Foo</code></a>(2)&nbsp;[]&nbsp;<b>foo</b>()</pre></div>
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#808000;">@</span><a href="psi_element://Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<span style="">[]</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Test"><code><span style="color:#000000;">Test</span></code></a></pre></div>
@@ -1,3 +1,3 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>@<a href="psi_element://Foo"><code>Foo</code></a>(1)&nbsp;
class <b>Test</b>
extends @<a href="psi_element://Foo"><code>Foo</code></a>(2)&nbsp;<a href="psi_element://java.util.List"><code>List</code></a>&lt;@<a href="psi_element://Foo"><code>Foo</code></a>(3)&nbsp;<a href="psi_element://java.lang.String"><code>String</code></a>&gt;</pre></div><table class='sections'></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#808000;">@</span><a href="psi_element://Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">1</span><span style="">)</span>&nbsp;
<span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">Test</span>
<span style="color:#000080;font-weight:bold;">extends </span><span style="color:#808000;">@</span><a href="psi_element://Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">2</span><span style="">)</span>&nbsp;<a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&lt;</span><span style="color:#808000;">@</span><a href="psi_element://Foo"><code style='font-size:96%;'><span style="color:#808000;">Foo</span></code></a><span style="">(</span><span style="color:#0000ff;">3</span><span style="">)</span>&nbsp;<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span></pre></div><table class='sections'></table>
@@ -1,4 +1,4 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre>class <b>Test</b>
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
<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>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'>
a@b c@d
</div><table class='sections'><p></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static&nbsp;void&nbsp;<b>JAVADOC_ME</b>()</pre></div><div class='content'> The value of A is <a href="psi_element://A#A">23</a>. <p></div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">JAVADOC_ME</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><div class='content'> The value of A is <a href="psi_element://A#A">23</a>. </div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition'><pre><a href="psi_element://A"><code>A</code></a><br>public static&nbsp;void&nbsp;<b>JAVADOC_ME</b>()</pre></div><div class='content'> The value of A is <a href="psi_element://A#A">23</a>. <p></div><table class='sections'><p></table>
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">public static</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">JAVADOC_ME</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a></pre></div><div class='content'> The value of A is <a href="psi_element://A#A">23</a>. </div><table class='sections'></table>
@@ -1 +1 @@
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><a href="psi_element://A"><code>A</code></a>&lt;<a href="psi_element://java.lang.String"><code>String</code></a>&gt; <b>a = new <a href="psi_element://A"><code>A</code></a>&lt;<a href="psi_element://java.lang.String"><code>String</code></a>&gt;()</b></pre></div>
<html><head><base href="placeholder"></head><body><div class='definition-only'><pre><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span> <span style="color:#000000;">a</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">new </span><a href="psi_element://A"><code><span style="color:#000000;">A</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span><span style="">(</span><span style="">)</span></pre></div>
@@ -75,7 +75,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
def doc = new JavaDocumentationProvider().generateDoc(exprList, null)
def expected =
"<div class='definition'><pre><a href=\"psi_element://Foo\"><code>Foo</code></a><br>void&nbsp;<b>doFoo</b>()</pre></div><table class='sections'><p></table>"
"<div class=\'definition\'><pre><span style=\"color:#000080;font-weight:bold;\">void</span>&nbsp;<span style=\"color:#000000;\">doFoo</span><span style=\"\">(</span><span style=\"\">)</span><br><span class=\'grayed\'>defined in </span><a href=\"psi_element://Foo\"><code><span style=\"color:#000000;\">Foo</span></code></a></pre></div><table class=\'sections\'><p></table>"
assert doc == expected
}
@@ -87,7 +87,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
class Foo {{
new Bar<String>().f<caret>oo();
}}""",
"Bar<br/> <a href=\"psi_element://java.util.List\">List</a>&lt;String&gt; foo(String param)")
"<span style=\"color:#000000;\"><a href=\"psi_element://Bar\">Bar</a></span><br/> <span style=\"color:#000000;\"><a href=\"psi_element://java.util.List\">List</a></span><span style=\"\">&lt;</span><span style=\"color:#000000;\">String</span><span style=\"\">&gt;</span> <span style=\"color:#000000;\">foo</span><span style=\"\">(</span><span style=\"color:#000000;\">String</span> <span style=\"\">param</span><span style=\"\">)</span>")
}
void testGenericField() {
@@ -97,7 +97,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
class Foo {{
new Bar<Integer>().fi<caret>eld
}}""",
"Bar<br/> Integer field")
"<span style=\"color:#000000;\"><a href=\"psi_element://Bar\">Bar</a></span><br/> <span style=\"color:#000000;\">Integer</span> <span style=\"color:#660e7a;font-weight:bold;\">field</span>")
}
void testMethodInAnonymousClass() {
@@ -112,7 +112,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
private void m() {}
}.run();
}}""",
"private void m()")
"<span style=\"color:#000080;font-weight:bold;\">private</span> <span style=\"color:#000080;font-weight:bold;\">void</span> <span style=\"color:#000000;\">m</span><span style=\"\">(</span><span style=\"\">)</span>")
}
void testAnnotationInCtrlHoverDoc() {
@@ -124,7 +124,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
}
@java.lang.annotation.Documented
@interface Anno {} """,
"<a href=\"psi_element://Foo\">Foo</a><br/> @Anno&nbsp;<br/>private void m()")
"<span style=\"color:#000000;\"><a href=\"psi_element://Foo\">Foo</a></span><br/> <span style=\"color:#808000;\">@</span><span style=\"color:#808000;\"><a href=\"psi_element://Anno\">Anno</a></span>&nbsp;<br/><span style=\"color:#000080;font-weight:bold;\">private</span> <span style=\"color:#000080;font-weight:bold;\">void</span> <span style=\"color:#000000;\">m</span><span style=\"\">(</span><span style=\"\">)</span>")
}
void testInnerClass() {
@@ -139,7 +139,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
class Outer {
class Inner {}
}""",
"<a href=\"psi_element://C\">C</a><br/> <a href=\"psi_element://Outer.Inner\">Outer.Inner</a> field")
"<span style=\"color:#000000;\"><a href=\"psi_element://C\">C</a></span><br/> <span style=\"color:#000000;\"><a href=\"psi_element://Outer.Inner\">Outer.Inner</a></span> <span style=\"color:#660e7a;font-weight:bold;\">field</span>")
}
void testAsterisksFiltering() {
@@ -157,9 +157,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
def doc = new JavaDocumentationProvider().generateDoc(method, null)
def expected =
"<div class='definition'><pre><a href=\"psi_element://C\"><code>C</code></a><br>public&nbsp;void&nbsp;<b>m</b>()</pre></div><div class='content'>\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>.\n" +
" <p></div><table class='sections'><p></table>"
"<div class=\'definition\'><pre><span style=\"color:#000080;font-weight:bold;\">public</span>&nbsp;<span style=\"color:#000080;font-weight:bold;\">void</span>&nbsp;<span style=\"color:#000000;\">m</span><span style=\"\">(</span><span style=\"\">)</span><br><span class=\'grayed\'>defined in </span><a href=\"psi_element://C\"><code><span style=\"color:#000000;\">C</span></code></a></pre></div><div class=\'content\'>\n For example, <a href=\"psi_element://java.lang.String#String(byte[], int, int, java.lang.String)\"><code><span style=\"color:#000000;\">String</span><span style=\"\">.</span><span style=\"color:#000000;\">String</span><span style=\"\">(</span><span style=\"color:#000080;font-weight:bold;\">byte</span><span style=\"\">[],&#32;</span><span style=\"color:#000080;font-weight:bold;\">int</span><span style=\"\">,&#32;</span><span style=\"color:#000080;font-weight:bold;\">int</span><span style=\"\">,&#32;String)</span></code></a>.\n </div><table class=\'sections\'></table>"
assert doc == expected
}
@@ -175,7 +173,7 @@ class JavaDocumentationTest extends LightJavaCodeInsightFixtureTestCase {
def doc = new JavaDocumentationProvider().generateDoc(method, null)
def expected =
"<div class='definition'><pre><a href=\"psi_element://C\"><code>C</code></a><br>public&nbsp;void&nbsp;<b>m</b>()</pre></div><div class='content'> Visit the \"<code>/login</code>\" URL. <p></div><table class='sections'><p></table>"
"<div class=\'definition\'><pre><span style=\"color:#000080;font-weight:bold;\">public</span>&nbsp;<span style=\"color:#000080;font-weight:bold;\">void</span>&nbsp;<span style=\"color:#000000;\">m</span><span style=\"\">(</span><span style=\"\">)</span><br><span class=\'grayed\'>defined in </span><a href=\"psi_element://C\"><code><span style=\"color:#000000;\">C</span></code></a></pre></div><div class=\'content\'> Visit the \"<code><span style=\"\"><span style=\"\">/login</span></span></code>\" URL. </div><table class=\'sections\'></table>"
assert doc == expected
}
@@ -219,9 +217,7 @@ class Bar {
def method = PsiTreeUtil.getParentOfType(myFixture.file.findElementAt(myFixture.editor.caretModel.offset), PsiMethod.class)
def doc = new JavaDocumentationProvider().generateDoc(method, null)
String expected = "<div class='definition'><pre><a href=\"psi_element://Bar\"><code>Bar</code></a><br>void&nbsp;<b>foo</b>()</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>From class:</td><td valign='top'><p><a href=\"psi_element://Foo\"><code>Foo</code></a><br>\n" +
" Some doc\n" +
" </td></table>"
String expected = "<div class=\'definition\'><pre><span style=\"color:#000080;font-weight:bold;\">void</span>&nbsp;<span style=\"color:#000000;\">foo</span><span style=\"\">(</span><span style=\"\">)</span><br><span class=\'grayed\'>defined in </span><a href=\"psi_element://Bar\"><code><span style=\"color:#000000;\">Bar</span></code></a></pre></div><table class=\'sections\'><p><tr><td valign=\'top\' class=\'section\'><p>From class:</td><td valign=\'top\'><p><a href=\"psi_element://Foo\"><code><span style=\"color:#000000;\">Foo</span></code></a><br>\n Some doc\n </td></table>"
assert doc == expected
}
@@ -116,11 +116,12 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
public void testRepeatableAnnotations() {
useJava8();
assertEquals("@R(&quot;a&quot;)&nbsp;\n" +
"@R(&quot;b&quot;)&nbsp;\n" +
"class <b>repeatableAnnotations</b>\n" +
"extends <a href=\"psi_element://java.lang.Object\"><code>Object</code></a>",
JavaDocInfoGenerator.generateSignature(getTestClass()));
assertEquals(
"<span style=\"color:#808000;\">@</span><span style=\"color:#808000;\">R</span><span style=\"\">(</span><span style=\"color:#008000;font-weight:bold;\">\"a\"</span><span style=\"\">)</span>&nbsp;\n" +
"<span style=\"color:#808000;\">@</span><span style=\"color:#808000;\">R</span><span style=\"\">(</span><span style=\"color:#008000;font-weight:bold;\">\"b\"</span><span style=\"\">)</span>&nbsp;\n" +
"<span style=\"color:#000080;font-weight:bold;\">class</span> <span style=\"color:#000000;\">repeatableAnnotations</span>\n" +
"<span style=\"color:#000080;font-weight:bold;\">extends </span><a href=\"psi_element://java.lang.Object\"><code><span style=\"color:#000000;\">Object</span></code></a>",
new JavaDocInfoGenerator(getProject(), getTestClass(), false).generateSignature(getTestClass()));
}
public void testAnonymousAndSuperJavadoc() {
@@ -12,12 +12,12 @@ class LightJavadocGeneratorTest : LightJavaCodeInsightFixtureTestCase() {
fun testPlainModule() = doTestModule(
"module M.N { }",
"<div class='definition'><pre>module <b>M.N</b></pre></div>")
"<div class='definition'><pre><span style=\"color:#000080;font-weight:bold;\">module </span><span style=\"color:#000000;\">M.N</span></pre></div>")
fun testDocumentedModule() = doTestModule(
"/** One humble module. */\n@Deprecated\nmodule M.N { }",
"<div class='definition'><pre>@<a href=\"psi_element://java.lang.Deprecated\"><code>Deprecated</code></a> \n" +
"module <b>M.N</b></pre></div><div class='content'> One humble module. </div>")
"<div class='definition'><pre><span style=\"color:#808000;\">@</span><a href=\"psi_element://java.lang.Deprecated\"><code style='font-size:96%;'><span style=\"color:#808000;\">Deprecated</span></code></a> \n" +
"<span style=\"color:#000080;font-weight:bold;\">module </span><span style=\"color:#000000;\">M.N</span></pre></div><div class='content'> One humble module. </div>")
fun testRootedClassLink() = doTestLink("{@docRoot}/java/lang/Character.html#unicode", "psi_element://java.lang.Character###unicode")
fun testRootedPackageLink() = doTestLink("{@docRoot}/java/util/package-summary.html", "psi_element://java.util")
@@ -38,7 +38,7 @@ class LightJavadocGeneratorTest : LightJavaCodeInsightFixtureTestCase() {
private fun doTestLink(link: String, expected: String) {
doTestClass(
"package a.b;\n/** A <a href=\"${link}\">link</a>. */\ninterface I { }",
"<div class='definition'><pre>a.b<br>interface <b>I</b></pre></div><div class='content'> A <a href=\"${expected}\">link</a>. </div>")
"<div class='definition'><pre><span style=\"color:#000080;font-weight:bold;\">interface</span> <span style=\"color:#000000;\">I</span><br><span class='grayed'>defined in </span><font color=red>a.b</font></pre></div><div class='content'> A <a href=\"${expected}\">link</a>. </div>")
}
private fun doTestClass(text: String, expected: String) {
@@ -47,7 +47,7 @@ class LightJavadocGeneratorTest : LightJavaCodeInsightFixtureTestCase() {
}
private fun generateDoc(element: PsiElement): String? =
JavaDocInfoGeneratorFactory.create(project, element).generateDocInfo(null)
JavaDocInfoGeneratorFactory.create(project, element, false).generateDocInfo(null)
?.replace("&nbsp;", " ")
?.substringBeforeLast("<table class='sections'><p></table>")
//</editor-fold>
@@ -106,15 +106,18 @@ public class BytecodeAnalysisIntegrationTest extends LightJavaCodeInsightFixture
checkHasGutter("org.apache.velocity.util.ExceptionUtils",
"<html><i>Inferred</i> annotations available. Full signature:<p>\n" +
"<b><i>@Contract('null,_,_->null')</i></b> \n" +
"Throwable <b>createWithCause</b>(Class,\n String,\n Throwable)</html>");
"<b><i><span style=\"color:#808000;\">@</span><span style=\"color:#808000;\">Contract</span><span style=\"\">(</span><span style=\"color:#008000;font-weight:bold;\">\"null,_,_->null\"</span><span style=\"\">)</span></i></b> \n" +
"<span style=\"color:#000000;\">Throwable</span> <span style=\"color:#000000;\">createWithCause</span><span style=\"\">(</span><span style=\"color:#000000;\">Class</span><span style=\"\">,\n" +
" </span> <span style=\"color:#000000;\">String</span><span style=\"\">,\n" +
" </span> <span style=\"color:#000000;\">Throwable</span><span style=\"\">)</span></html>");
}
public void testExternalAnnoGutter() {
checkHasGutter("java.lang.String",
"<html>External and <i>inferred</i> annotations available. Full signature:<p>\n" +
"<b><i>@Contract(pure = true)</i></b> \n" +
"<b>String</b>(<b>@NotNull</b> String)</html>");
"<html>External annotations available. Full signature:<p>\n" +
"<b><span style=\"color:#808000;\">@</span><span style=\"color:#808000;\">Contract</span><span style=\"\">(</span><span style=\"\">pure</span><span style=\"\"> = </span><span style=\"color:#000080;font-weight:bold;\">true</span><span style=\"\">)</span></b> \n" +
"<span style=\"color:#000000;\">String</span><span style=\"\">(</span><span style=\"color:#000080;font-weight:bold;\">char</span><span style=\"\">[]</span><span style=\"\">,\n" +
" </span> <span style=\"color:#000080;font-weight:bold;\">boolean</span><span style=\"\">)</span></html>");
}
private void checkHasGutter(String className, String expectedText) {
@@ -910,6 +910,7 @@ javadoc.deprecated=Deprecated
javadoc.description.copied.from.class=From class:
javadoc.description.copied.from.field=From field:
javadoc.description.copied.from.interface=From interface:
javadoc.generate.defined.in=defined in
javadoc.generate.arguments=&Other command line arguments:
javadoc.generate.exited=\n"javadoc" finished with exit code $EXIT_CODE$
javadoc.generate.heap.size=&Maximum heap size (Mb):
@@ -943,8 +944,8 @@ javadoc.since=Since:
javadoc.author=Author:
javadoc.version=Version:
javadoc.apiNote=API Note:
javadoc.implNote=Implementation Note:
javadoc.implSpec=Implementation Requirements:
javadoc.implNote=Implementation<br>Note:
javadoc.implSpec=Implementation<br>Requirements:
javadoc.type.parameters=Type parameters:
jrt.node.short=[JRT]
label.add.math.max.0.count.to.avoid.possible.semantics.change=Add Math.max(0, count) to avoid possible semantics change
@@ -10,13 +10,20 @@ public class DocumentationManagerUtil {
}
@SuppressWarnings({"HardCodedStringLiteral", "UnusedParameters"})
protected void createHyperlinkImpl(StringBuilder buffer, PsiElement refElement, String refText, String label, boolean plainLink) {
protected void createHyperlinkImpl(
StringBuilder buffer,
PsiElement refElement,
String refText,
String label,
boolean plainLink,
boolean isRendered
) {
buffer.append("<a href=\"");
buffer.append(DocumentationManagerProtocol.PSI_ELEMENT_PROTOCOL); // :-)
buffer.append(refText);
buffer.append("\">");
if (!plainLink) {
buffer.append("<code>");
buffer.append(isRendered ? "<code style='font-size:96%;'>" : "<code>");
}
buffer.append(label);
if (!plainLink) {
@@ -26,7 +33,21 @@ public class DocumentationManagerUtil {
}
public static void createHyperlink(StringBuilder buffer, String refText, String label, boolean plainLink) {
getInstance().createHyperlinkImpl(buffer, null, refText, label, plainLink);
getInstance().createHyperlinkImpl(buffer, null, refText, label, plainLink, false);
}
public static void createHyperlink(StringBuilder buffer, String refText, String label, boolean plainLink, boolean isRendered) {
getInstance().createHyperlinkImpl(buffer, null, refText, label, plainLink, isRendered);
}
public static void createHyperlink(
StringBuilder buffer,
PsiElement refElement,
String refText,
String label,
boolean plainLink
) {
getInstance().createHyperlinkImpl(buffer, refElement, refText, label, plainLink, false);
}
/**
@@ -38,7 +59,14 @@ public class DocumentationManagerUtil {
* @param label the label for the hyperlink
* @param plainLink if false, the label of the link is wrapped in the &lt;code&gt; tag.
*/
public static void createHyperlink(StringBuilder buffer, PsiElement refElement, String refText, String label, boolean plainLink) {
getInstance().createHyperlinkImpl(buffer, refElement, refText, label, plainLink);
public static void createHyperlink(
StringBuilder buffer,
PsiElement refElement,
String refText,
String label,
boolean plainLink,
boolean isRendered
) {
getInstance().createHyperlinkImpl(buffer, refElement, refText, label, plainLink, isRendered);
}
}
@@ -57,7 +57,7 @@ final class DocumentationHtmlEditorKit extends JBHtmlEditorKit {
String linkColor = ColorUtil.toHtmlColor(JBUI.CurrentTheme.Link.Foreground.ENABLED);
String borderColor = ColorUtil.toHtmlColor(UIUtil.getTooltipSeparatorColor());
String sectionColor = ColorUtil.toHtmlColor(SECTION_COLOR);
String editorFontStyle = "{font-family:\"" + EditorCssFontResolver.EDITOR_FONT_NAME_NO_LIGATURES_PLACEHOLDER + "\"; font-size: 96%;}";
String editorFontStyle = "{font-family:\"" + EditorCssFontResolver.EDITOR_FONT_NAME_NO_LIGATURES_PLACEHOLDER + "\";}";
StyleSheet styleSheet = editorKit.getStyleSheet();
styleSheet.addRule("tt" + editorFontStyle);
@@ -1410,7 +1410,7 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
}
public static void createHyperlink(StringBuilder buffer, String refText, String label, boolean plainLink) {
DocumentationManagerUtil.createHyperlink(buffer, refText, label, plainLink);
DocumentationManagerUtil.createHyperlink(buffer, refText, label, plainLink, false);
}
@Override
@@ -2,26 +2,109 @@
package com.intellij.openapi.editor.richcopy;
import com.intellij.ide.highlighter.HighlighterFactory;
import com.intellij.lang.Language;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.EditorColorsScheme;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.highlighter.EditorHighlighter;
import com.intellij.openapi.editor.markup.EffectType;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.editor.richcopy.model.SyntaxInfo;
import com.intellij.openapi.editor.richcopy.view.HtmlSyntaxInfoReader;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.HtmlChunk;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.ui.ColorUtil;
import kotlin.text.StringsKt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.io.IOException;
import java.util.Objects;
public final class HtmlSyntaxInfoUtil {
@Nullable
public static CharSequence getHtmlContent(@NotNull PsiFile file,
@NotNull CharSequence text,
@Nullable SyntaxInfoBuilder.RangeIterator ownRangeIterator,
@NotNull EditorColorsScheme schemeToUse,
int startOffset,
int endOffset) {
private HtmlSyntaxInfoUtil() { }
public static @NotNull String getStyledSpan(@Nullable String value, String @NotNull ... properties) {
return appendStyledSpan(new StringBuilder(), value, properties).toString();
}
public static @NotNull String getStyledSpan(@NotNull TextAttributesKey attributesKey, @Nullable String value) {
return appendStyledSpan(new StringBuilder(), attributesKey, value).toString();
}
public static @NotNull String getHighlightedByLexerAndEncodedAsHtmlCodeSnippet(
@NotNull Project project,
@NotNull Language language,
@Nullable String codeSnippet
) {
return appendHighlightedByLexerAndEncodedAsHtmlCodeSnippet(new StringBuilder(), project, language, codeSnippet).toString();
}
public static @NotNull StringBuilder appendStyledSpan(
@NotNull StringBuilder buffer,
@Nullable String value,
String @NotNull ... properties
) {
HtmlChunk.span().style(StringUtil.join(properties, ";"))
.addRaw(StringUtil.notNullize(value)) //NON-NLS
.appendTo(buffer);
return buffer;
}
public static @NotNull StringBuilder appendStyledSpan(
@NotNull StringBuilder buffer,
@NotNull TextAttributesKey attributesKey,
@Nullable String value
) {
appendStyledSpan(
buffer,
Objects.requireNonNull(EditorColorsManager.getInstance().getGlobalScheme().getAttributes(attributesKey)),
value);
return buffer;
}
public static @NotNull StringBuilder appendStyledSpan(
@NotNull StringBuilder buffer,
@NotNull TextAttributes attributes,
@Nullable String value
) {
createHtmlSpanBlockStyledAsTextAttributes(attributes)
.addRaw(StringUtil.notNullize(value)) //NON-NLS
.appendTo(buffer);
return buffer;
}
public static @NotNull StringBuilder appendHighlightedByLexerAndEncodedAsHtmlCodeSnippet(
@NotNull StringBuilder buffer,
@NotNull Project project,
@NotNull Language language,
@Nullable String codeSnippet
) {
codeSnippet = StringUtil.notNullize(codeSnippet);
String zeroIndentCode = StringsKt.trimIndent(codeSnippet).replace("\t", " ");
PsiFile fakePsiFile = PsiFileFactory.getInstance(project).createFileFromText(language, codeSnippet);
EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme();
if (!zeroIndentCode.isEmpty()) {
buffer.append(getHtmlContent(fakePsiFile, zeroIndentCode, null, scheme, 0, zeroIndentCode.length()));
}
return buffer;
}
public static @Nullable CharSequence getHtmlContent(
@NotNull PsiFile file,
@NotNull CharSequence text,
@Nullable SyntaxInfoBuilder.RangeIterator ownRangeIterator,
@NotNull EditorColorsScheme schemeToUse,
int startOffset,
int endOffset
) {
EditorHighlighter highlighter =
HighlighterFactory.createHighlighter(file.getViewProvider().getVirtualFile(), schemeToUse, file.getProject());
highlighter.setText(text);
@@ -35,11 +118,12 @@ public final class HtmlSyntaxInfoUtil {
return getHtmlContent(text, ownRangeIterator, schemeToUse, endOffset);
}
@Nullable
public static CharSequence getHtmlContent(@NotNull CharSequence text,
@NotNull SyntaxInfoBuilder.RangeIterator ownRangeIterator,
@NotNull EditorColorsScheme schemeToUse,
int stopOffset) {
public static @Nullable CharSequence getHtmlContent(
@NotNull CharSequence text,
@NotNull SyntaxInfoBuilder.RangeIterator ownRangeIterator,
@NotNull EditorColorsScheme schemeToUse,
int stopOffset
) {
SyntaxInfoBuilder.Context context = new SyntaxInfoBuilder.Context(text, schemeToUse, 0);
SyntaxInfoBuilder.MyMarkupIterator iterator = new SyntaxInfoBuilder.MyMarkupIterator(text, ownRangeIterator, schemeToUse);
@@ -60,20 +144,102 @@ public final class HtmlSyntaxInfoUtil {
return null;
}
private static @NotNull HtmlChunk.Element createHtmlSpanBlockStyledAsTextAttributes(@NotNull TextAttributes attributes) {
StringBuilder style = new StringBuilder();
Color foregroundColor = attributes.getForegroundColor();
Color backgroundColor = attributes.getBackgroundColor();
if (foregroundColor != null) appendProperty(style, "color", ColorUtil.toHtmlColor(foregroundColor));
if (backgroundColor != null) appendProperty(style, "background-color", ColorUtil.toHtmlColor(backgroundColor));
switch (attributes.getFontType()) {
case Font.BOLD:
appendProperty(style, "font-weight", "bold");
break;
case Font.ITALIC:
appendProperty(style, "font-style", "italic");
break;
}
EffectType effectType = attributes.getEffectType();
if (attributes.hasEffects() && effectType != null) {
switch (effectType) {
case LINE_UNDERSCORE:
appendProperty(style, "text-decoration-line", "underline");
break;
case WAVE_UNDERSCORE:
appendProperty(style, "text-decoration-line", "underline");
appendProperty(style, "text-decoration-style", "wavy");
break;
case BOLD_LINE_UNDERSCORE:
appendProperty(style, "text-decoration-line", "underline");
appendProperty(style, "text-decoration-thickness", "2px");
break;
case BOLD_DOTTED_LINE:
appendProperty(style, "text-decoration-line", "underline");
appendProperty(style, "text-decoration-thickness", "2px");
appendProperty(style, "text-decoration-style", "dotted");
break;
case STRIKEOUT:
appendProperty(style, "text-decoration-line", "line-through");
break;
case BOXED:
case SLIGHTLY_WIDER_BOX:
case SEARCH_MATCH:
appendProperty(style, "border", "1px solid");
break;
case ROUNDED_BOX:
appendProperty(style, "border", "1px solid");
appendProperty(style, "border-radius", "2px");
break;
}
}
Color effectColor = attributes.getEffectColor();
if (attributes.hasEffects() && effectType != null && effectColor != null) {
switch (effectType) {
case LINE_UNDERSCORE:
case WAVE_UNDERSCORE:
case BOLD_LINE_UNDERSCORE:
case BOLD_DOTTED_LINE:
case STRIKEOUT:
appendProperty(style, "text-decoration-color", ColorUtil.toHtmlColor(effectColor));
break;
case BOXED:
case ROUNDED_BOX:
case SEARCH_MATCH:
case SLIGHTLY_WIDER_BOX:
appendProperty(style, "border-color", ColorUtil.toHtmlColor(effectColor));
break;
}
}
return HtmlChunk.span().style(style.toString());
}
private static void appendProperty(@NotNull StringBuilder builder, @NotNull String name, @NotNull String value) {
builder.append(name);
builder.append(":");
builder.append(value);
builder.append(";");
}
private final static class SimpleHtmlSyntaxInfoReader extends HtmlSyntaxInfoReader {
private SimpleHtmlSyntaxInfoReader(SyntaxInfo info) {
super(info, 2);
}
@Override
protected void appendCloseTags() {
}
@Override
protected void appendStartTags() {
}
@Override
@@ -3,6 +3,7 @@ package com.intellij.util.ui;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.Pair;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
@@ -21,12 +22,15 @@ import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.*;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
public class JBHtmlEditorKit extends HTMLEditorKit {
private static final Logger LOG = Logger.getInstance(JBHtmlEditorKit.class);
static {
ourCommonStyle = StartupUiUtil.createStyleSheet(
"code { font-size: 100%; }" + // small by Swing's default
@@ -43,6 +47,7 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
);
StartupUiUtil.configureHtmlKitStylesheet();
}
private static final ViewFactory ourViewFactory = new JBHtmlFactory();
private static final StyleSheet ourCommonStyle;
private static final StyleSheet ourNoGapsBetweenParagraphsStyle;
@@ -83,7 +88,8 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
if (e.getEventType() == HyperlinkEvent.EventType.ENTERED) {
setUnderlined(true, element);
} else if (e.getEventType() == HyperlinkEvent.EventType.EXITED) {
}
else if (e.getEventType() == HyperlinkEvent.EventType.EXITED) {
setUnderlined(false, element);
}
}
@@ -93,12 +99,37 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
Object attribute = attributes.getAttribute(HTML.Tag.A);
if (attribute instanceof MutableAttributeSet) {
MutableAttributeSet a = (MutableAttributeSet)attribute;
Object href = a.getAttribute(HTML.Attribute.HREF);
Pair<Integer, Integer> aRange = findRangeOfParentTagWithGivenAttribute(element, href, HTML.Tag.A, HTML.Attribute.HREF);
a.addAttribute(CSS.Attribute.TEXT_DECORATION, underlined ? "underline" : "none");
((StyledDocument)element.getDocument()).setCharacterAttributes(element.getStartOffset(),
element.getEndOffset() - element.getStartOffset(),
a, false);
((StyledDocument)element.getDocument()).setCharacterAttributes(aRange.first, aRange.second - aRange.first, a, false);
}
}
/**
* There was a bug that if the anchor tag contained some span block, e.g.
* {@code <a><span>Objects.</span><span>equals()</span></a>} then only one block
* was underlined on mouse hover.
*
* <p>That was due to the receiver of the {@code HyperlinkEvent} was only one of child blocks
* and we need to properly find the range occupied by the whole parent.</p>
*/
private @NotNull Pair<Integer, Integer> findRangeOfParentTagWithGivenAttribute(
@NotNull Element element,
Object elementAttributeValue,
@NotNull HTML.Tag tag,
@NotNull HTML.Attribute attribute
) {
HtmlIteratorWrapper anchorTagIterator = new HtmlIteratorWrapper(((HTMLDocument)element.getDocument()).getIterator(tag));
return StreamSupport.stream(anchorTagIterator.spliterator(), false)
.filter(it -> Objects.equals(it.getAttributes().getAttribute(attribute), elementAttributeValue))
.filter(it -> it.getStartOffset() <= element.getStartOffset() && element.getStartOffset() <= it.getEndOffset())
.map(it -> new Pair<>(it.getStartOffset(), it.getEndOffset()))
.findFirst()
.orElse(new Pair<>(element.getStartOffset(), element.getEndOffset()));
}
};
}
@@ -202,7 +233,8 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
private static class MouseExitSupportLinkController extends HTMLEditorKit.LinkController {
@Override
public void mouseExited(@NotNull MouseEvent e) {
mouseMoved(new MouseEvent(e.getComponent(), e.getID(), e.getWhen(), e.getModifiersEx(), -1, -1, e.getClickCount(), e.isPopupTrigger(), e.getButton()));
mouseMoved(new MouseEvent(e.getComponent(), e.getID(), e.getWhen(), e.getModifiersEx(), -1, -1, e.getClickCount(), e.isPopupTrigger(),
e.getButton()));
}
}
@@ -265,13 +297,16 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
if (width < 0 && height < 0) {
this.width = myBufferedImage.getWidth();
this.height = myBufferedImage.getHeight();
} else if (width < 0) {
}
else if (width < 0) {
this.width = height * getAspectRatio();
this.height = height;
} else if (height < 0) {
}
else if (height < 0) {
this.width = width;
this.height = width / getAspectRatio();
} else {
}
else {
this.width = width;
this.height = height;
}
@@ -355,7 +390,7 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
@Override
public int viewToModel(float x, float y, Shape a, Position.Bias[] bias) {
Rectangle alloc = (Rectangle) a;
Rectangle alloc = (Rectangle)a;
if (x < alloc.x + alloc.width) {
bias[0] = Position.Bias.Forward;
return getStartOffset();
@@ -462,7 +497,7 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
private final ParserCallback delegate;
private int depth;
private CallbackWrapper(ParserCallback delegate) {this.delegate = delegate;}
private CallbackWrapper(ParserCallback delegate) { this.delegate = delegate; }
@Override
public void flush() throws BadLocationException {
@@ -523,4 +558,69 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
*/
@NotNull Font getFont(@NotNull Font defaultFont, @NotNull AttributeSet attributeSet);
}
/**
* Implements {@code java.lang.Iterable} for {@code HTMLDocument.Iterator}
*/
public static final class HtmlIteratorWrapper implements Iterable<HTMLDocument.Iterator> {
private final @NotNull HTMLDocument.Iterator myDelegate;
public HtmlIteratorWrapper(@NotNull HTMLDocument.Iterator delegate) {
myDelegate = delegate;
}
@NotNull
@Override
public Iterator<HTMLDocument.Iterator> iterator() {
return new Iterator<>() {
@Override
public boolean hasNext() {
return myDelegate.isValid();
}
@Override
public HTMLDocument.Iterator next() {
final AttributeSet attributeSet = myDelegate.getAttributes();
final int startOffset = myDelegate.getStartOffset();
final int endOffset = myDelegate.getEndOffset();
final HTML.Tag tag = myDelegate.getTag();
HTMLDocument.Iterator current = new HTMLDocument.Iterator() {
@Override
public AttributeSet getAttributes() {
return attributeSet;
}
@Override
public int getStartOffset() {
return startOffset;
}
@Override
public int getEndOffset() {
return endOffset;
}
@Override
public HTML.Tag getTag() {
return tag;
}
@Override
public void next() {
throw new IllegalStateException("Must not be called");
}
@Override
public boolean isValid() {
throw new IllegalStateException("Must not be called");
}
};
myDelegate.next();
return current;
}
};
}
}
}
@@ -2,6 +2,7 @@
package org.jetbrains.idea.devkit.themes;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory;
import com.intellij.ide.ui.UIThemeMetadata;
import com.intellij.json.psi.JsonProperty;
import com.intellij.lang.documentation.AbstractDocumentationProvider;
@@ -79,7 +80,7 @@ public class ThemeJsonDocumentationProvider extends AbstractDocumentationProvide
final PsiClassType type = JavaPsiFacade.getElementFactory(element.getProject()).createTypeByFQClassName(source);
StringBuilder typeBuilder = new StringBuilder();
JavaDocInfoGenerator.generateType(typeBuilder, type, element);
JavaDocInfoGeneratorFactory.create(element.getProject(), null, false).generateType(typeBuilder, type, element);
return typeBuilder.toString(); //NON-NLS
});
}
@@ -49,10 +49,10 @@ public class ExtensionPointDocumentationProviderTest extends LightJavaCodeInsigh
assertEquals(
"<div class=\"definition\"><pre><b>foo.bar</b><br/>" +
pluginXml +
"<div class='definition'><pre>bar<br>public class <b>MyExtensionPoint</b>\n" +
"extends <a href=\"psi_element://java.lang.Object\"><code>Object</code></a></pre></div><div class='content'>\n" +
"<div class='definition'><pre><span style=\"color:#000080;font-weight:bold;\">public</span> <span style=\"color:#000080;font-weight:bold;\">class</span> <span style=\"color:#000000;\">MyExtensionPoint</span>\n" +
"<span style=\"color:#000080;font-weight:bold;\">extends </span><a href=\"psi_element://java.lang.Object\"><code><span style=\"color:#000000;\">Object</span></code></a><br><span class='grayed'>defined in </span><a href=\"psi_element://bar\"><code><span style=\"color:#000000;\">bar</span></code></a></pre></div><div class='content'>\n" +
" MyExtensionPoint JavaDoc.\n" +
" </div><table class='sections'><p></table><table class=\"sections\"><tr><td class=\"section\" valign=\"top\"><p><a href=\"psi_element://bar.MyExtensionPoint#implementationClass\"><code>implementationClass</code></a></p></td><td valign=\"top\">String (required)</td></tr><tr><td class=\"section\" valign=\"top\"><p><a href=\"psi_element://bar.MyExtensionPoint#stringCanBeEmpty\"><code>stringCanBeEmpty</code></a></p></td><td valign=\"top\">String (required, empty allowed)</td></tr><tr><td class=\"section\" valign=\"top\"><p><a href=\"psi_element://bar.MyExtensionPoint#intValue\"><code>&lt;intValue&gt;</code></a></p></td><td valign=\"top\">Integer</td></tr><br/></table></pre></div><div class=\"content\"><a href=\"https://jb.gg/ipe?extensions=foo.bar\">Show Usages in IntelliJ Platform Explorer</a></div><div class=\"content\"><h2>Extension Point Implementation</h2><div class='definition'><pre>bar<br>public interface <b>MyExtension</b></pre></div><div class='content'>\n" +
" </div><table class='sections'><p></table><table class=\"sections\"><tr><td class=\"section\" valign=\"top\"><p><a href=\"psi_element://bar.MyExtensionPoint#implementationClass\"><code>implementationClass</code></a></p></td><td valign=\"top\">String (required)</td></tr><tr><td class=\"section\" valign=\"top\"><p><a href=\"psi_element://bar.MyExtensionPoint#stringCanBeEmpty\"><code>stringCanBeEmpty</code></a></p></td><td valign=\"top\">String (required, empty allowed)</td></tr><tr><td class=\"section\" valign=\"top\"><p><a href=\"psi_element://bar.MyExtensionPoint#intValue\"><code>&lt;intValue&gt;</code></a></p></td><td valign=\"top\">Integer</td></tr><br/></table></pre></div><div class=\"content\"><a href=\"https://jb.gg/ipe?extensions=foo.bar\">Show Usages in IntelliJ Platform Explorer</a></div><div class=\"content\"><h2>Extension Point Implementation</h2><div class='definition'><pre><span style=\"color:#000080;font-weight:bold;\">public</span> <span style=\"color:#000080;font-weight:bold;\">interface</span> <span style=\"color:#000000;\">MyExtension</span><br><span class='grayed'>defined in </span><a href=\"psi_element://bar\"><code><span style=\"color:#000000;\">bar</span></code></a></pre></div><div class='content'>\n" +
" My Extension Javadoc.\n" +
" </div><table class='sections'><p></table></div>",
provider.generateDoc(docElement, getOriginalElement()));
@@ -74,7 +74,7 @@ public class ExtensionPointDocumentationProviderTest extends LightJavaCodeInsigh
provider.getQuickNavigateInfo(docElement, getOriginalElement()));
assertEquals(
"<div class=\"definition\"><pre><b>foo.bar</b><br/>interfaceExtensionPointDocumentation.xml</pre></div><div class=\"content\"><a href=\"https://jb.gg/ipe?extensions=foo.bar\">Show Usages in IntelliJ Platform Explorer</a></div><div class=\"content\"><h2>Extension Point Implementation</h2><div class='definition'><pre>bar<br>public interface <b>MyExtension</b></pre></div><div class='content'>\n" +
"<div class=\"definition\"><pre><b>foo.bar</b><br/>interfaceExtensionPointDocumentation.xml</pre></div><div class=\"content\"><a href=\"https://jb.gg/ipe?extensions=foo.bar\">Show Usages in IntelliJ Platform Explorer</a></div><div class=\"content\"><h2>Extension Point Implementation</h2><div class='definition'><pre><span style=\"color:#000080;font-weight:bold;\">public</span> <span style=\"color:#000080;font-weight:bold;\">interface</span> <span style=\"color:#000000;\">MyExtension</span><br><span class='grayed'>defined in </span><a href=\"psi_element://bar\"><code><span style=\"color:#000000;\">bar</span></code></a></pre></div><div class='content'>\n" +
" My Extension Javadoc.\n" +
" </div><table class='sections'><p></table></div>",
provider.generateDoc(docElement, getOriginalElement()));
@@ -1,7 +1,7 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.plugins.gradle.service.resolve
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory
import com.intellij.icons.AllIcons
import com.intellij.ide.presentation.Presentation
import com.intellij.openapi.util.Key
@@ -9,7 +9,6 @@ import com.intellij.psi.OriginInfoAwareElement
import com.intellij.psi.PsiElement
import com.intellij.util.lazyPub
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings.GradleProp
import org.jetbrains.plugins.gradle.util.GradleBundle
import org.jetbrains.plugins.gradle.util.GradleDocumentationBundle
import org.jetbrains.plugins.groovy.dsl.holders.NonCodeMembersHolder
import org.jetbrains.plugins.groovy.lang.resolve.api.LazyTypeProperty
@@ -30,7 +29,7 @@ class GradleGroovyProperty(
val value = myProperty.value
val result = StringBuilder()
result.append("<PRE>")
JavaDocInfoGenerator.generateType(result, propertyType, context, true)
JavaDocInfoGeneratorFactory.create(context.project, null, false).generateType(result, propertyType, context, true)
result.append(" " + myProperty.name)
val hasInitializer = !value.isNullOrBlank()
if (hasInitializer) {
@@ -1,7 +1,7 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.plugins.gradle.service.resolve
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator.generateType
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory
import com.intellij.ide.presentation.Presentation
import com.intellij.openapi.util.Key
import com.intellij.psi.OriginInfoAwareElement
@@ -27,7 +27,7 @@ class GradleTaskProperty(
private val doc by lazyPub {
val result = StringBuilder()
result.append("<PRE>")
generateType(result, propertyType, myContext, true)
JavaDocInfoGeneratorFactory.create(context.project, null, false).generateType(result, propertyType, myContext, true)
result.append(" " + task.name)
result.append("</PRE>")
task.description?.let(result::append)
@@ -2,6 +2,7 @@
package org.jetbrains.plugins.groovy.lang.psi.impl;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
@@ -797,7 +798,7 @@ public final class PsiImplUtil {
public static void appendTypeString(StringBuilder buffer, final PsiType type, PsiElement context) {
if (type != null) {
JavaDocInfoGenerator.generateType(buffer, type, context);
JavaDocInfoGeneratorFactory.create(context.getProject(), null, false).generateType(buffer, type, context);
}
else {
buffer.append(GrModifier.DEF);
@@ -5,6 +5,7 @@ import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.editorActions.CodeDocumentationUtil;
import com.intellij.codeInsight.javadoc.JavaDocExternalFilter;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.codeInsight.javadoc.JavaDocInfoGeneratorFactory;
import com.intellij.codeInsight.javadoc.JavaDocUtil;
import com.intellij.java.JavaBundle;
import com.intellij.lang.CodeDocumentationAwareCommenter;
@@ -250,7 +251,7 @@ public class GroovyDocumentationProvider implements CodeDocumentationProvider, E
generateTraitType(buffer, ((GrTraitType)type), context);
}
else if (type != null) {
JavaDocInfoGenerator.generateType(buffer, type, context);
JavaDocInfoGeneratorFactory.create(context.getProject(), null, false).generateType(buffer, type, context);
}
else {
buffer.append(GrModifier.DEF);
@@ -21,7 +21,7 @@ new Bar<String>().f<caret>oo();
def ref = myFixture.file.findReferenceAt(myFixture.editor.caretModel.offset)
assert CtrlMouseHandler.getInfo(ref.resolve(), ref.element) == """\
Bar
<a href="psi_element://java.util.List"><code>List</code></a>&lt;<a href="psi_element://java.lang.String"><code>String</code></a>&gt; foo (<a href="psi_element://java.lang.String"><code>String</code></a> param)"""
<a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&lt;</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a><span style="">&gt;</span> foo (<a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a> param)"""
}
void testGenericField() {
@@ -32,7 +32,7 @@ new Bar<Integer>().fi<caret>eld
def ref = myFixture.file.findReferenceAt(myFixture.editor.caretModel.offset)
assert CtrlMouseHandler.getInfo(ref.resolve(), ref.element) == """\
Bar
<a href="psi_element://java.lang.Integer"><code>Integer</code></a> getField ()"""
<a href="psi_element://java.lang.Integer"><code><span style="color:#000000;">Integer</span></code></a> getField ()"""
}
void testLink() {
@@ -46,9 +46,9 @@ class Gr {
}
new Gr().fo<caret>o()
''', '''\
<div class='definition'><pre><a href="psi_element://Gr"><code>Gr</code></a><br>void&nbsp;<b>foo</b>()</pre></div><div class='content'>
Use <a href="psi_element://Gr#bar()"><code>bar()</code></a> from class <a href="psi_element://Gr"><code>Gr</code></a> instead
<p></div><table class='sections'><p></table>'''
<div class='definition'><pre><span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Gr"><code><span style="color:#000000;">Gr</span></code></a></pre></div><div class='content'>
Use <a href="psi_element://Gr#bar()"><code><span style="color:#000000;">bar</span><span style="">()</span></code></a> from class <a href="psi_element://Gr"><code><span style="color:#000000;">Gr</span></code></a> instead
</div><table class='sections'></table>'''
}
void 'test link with label'() {
@@ -59,13 +59,9 @@ new Gr().fo<caret>o()
def docs() {}
<caret>docs()
''', '''<div class='definition'><pre>\
<a href="psi_element://_"><code>_</code></a><br>\
<a href="psi_element://java.lang.Object"><code>Object</code></a>&nbsp;<b>docs</b>()</pre></div>\
<div class='content'>
check this out <a href="psi_element://java.lang.CharSequence"><code>character sequences</code></a>
<p></div>\
<table class='sections'><p></table>'''
''', '''<div class='definition'><pre><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="color:#000000;">docs</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://_"><code><span style="color:#000000;">_</span></code></a></pre></div><div class='content'>
check this out <a href="psi_element://java.lang.CharSequence"><code><span style="color:#000000;">character sequences</span></code></a>
</div><table class='sections'></table>'''
}
void 'test link to method'() {
@@ -85,19 +81,13 @@ class Main {
}
Main.<caret>docs()
''', '''\
<div class='definition'><pre>\
<a href="psi_element://Main"><code>Main</code></a><br>\
static&nbsp;void&nbsp;<b>docs</b>()\
</pre></div>\
<div class='content'>
Link 1: <a href="psi_element://Main#foo(java.lang.String[])"><code>foo(String[])</code></a>
<div class='definition'><pre><span style="color:#000080;font-weight:bold;">static</span>&nbsp;<span style="color:#000080;font-weight:bold;">void</span>&nbsp;<span style="color:#000000;">docs</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Main"><code><span style="color:#000000;">Main</span></code></a></pre></div><div class='content'>
Link 1: <a href="psi_element://Main#foo(java.lang.String[])"><code><span style="color:#000000;">foo</span><span style="">(String[])</span></code></a>
<p>
Link 2: <a href="psi_element://Main#bar(java.lang.String[])"><code>bar(String[])</code></a>
Link 2: <a href="psi_element://Main#bar(java.lang.String[])"><code><span style="color:#000000;">bar</span><span style="">(String[])</span></code></a>
<p>
Link 3: <a href="psi_element://Main#bar(java.lang.String[], java.lang.Integer)"><code>bar(String[], Integer)</code></a>
<p>\
</div>\
<table class='sections'><p></table>\
Link 3: <a href="psi_element://Main#bar(java.lang.String[], java.lang.Integer)"><code><span style="color:#000000;">bar</span><span style="">(String[],&#32;Integer)</span></code></a>
</div><table class='sections'></table>\
'''
}
@@ -106,7 +96,7 @@ static&nbsp;void&nbsp;<b>docs</b>()\
def aa = 1
a<caret>a
''', '''\
<div class='definition'><pre><a href="psi_element://java.lang.Object"><code>Object</code></a> <b>aa</b></pre></div><table class='sections'></table><p>[Inferred type] <a href="psi_element://java.lang.Integer"><code>Integer</code></a>'''
<div class='definition'><pre><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a> <span style="color:#000000;">aa</span></pre></div><table class='sections'></table><p>[Inferred type] <a href="psi_element://java.lang.Integer"><code><span style="color:#000000;">Integer</span></code></a>'''
}
void 'test implicit closure parameter'() {
@@ -114,7 +104,7 @@ a<caret>a
List<String> ss = []
ss.collect { i<caret>t }
''', '''\
<div class='definition'><pre><a href="psi_element://java.lang.Object"><code>Object</code></a> <b>it</b></pre></div><table class='sections'></table><p>[Inferred type] <a href="psi_element://java.lang.String"><code>String</code></a>'''
<div class='definition'><pre><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a> <span style="color:#000000;">it</span></pre></div><table class='sections'></table><p>[Inferred type] <a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>'''
}
void 'test code tag'() {
@@ -129,11 +119,9 @@ class Foo {
}
new Foo().<caret>foo()
''', '''\
<div class='definition'><pre><a href="psi_element://Foo"><code>Foo</code></a><br><a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;<b>foo</b>()</pre></div>\
<div class='content'>
May return <code>null</code>
<p></div>\
<table class='sections'><p></table>\
<div class='definition'><pre><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://Foo"><code><span style="color:#000000;">Foo</span></code></a></pre></div><div class='content'>
May return <code><span style=""><span style="color:#000043;font-weight:bold;">null</span></span></code>
</div><table class='sections'></table>\
'''
}
@@ -146,15 +134,7 @@ def foo() {}
f<caret>oo()""",
"""\
<div class='definition'>\
<pre>\
<a href=\"psi_element://_\"><code>_</code></a>\
<br>\
<a href=\"psi_element://java.lang.Object\"><code>Object</code></a>&nbsp;<b>foo</b>()</pre>\
</div>\
<table class='sections'><p>\
<tr><td valign='top' class='section'><p>Returns:</td>\
<td valign='top'><p><code> lorem ipsum </code></td></table>\
<div class='definition'><pre><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a>&nbsp;<span style="color:#000000;">foo</span><span style="">(</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://_"><code><span style="color:#000000;">_</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><p><code> lorem ipsum </code></td></table>\
"""
}
@@ -166,8 +146,8 @@ f<caret>oo()""",
class GroovyDocTest<T> { }
new Gr<caret>oovyDocTest<Integer>()""", """\
<div class='definition'><pre>class <b>GroovyDocTest</b>&lt;T&gt;
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="https://google.com">ref</a></td></table>\
<div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">GroovyDocTest</span><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><p><a href="https://google.com">ref</a></td></table>\
"""
}
@@ -180,8 +160,8 @@ extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></
class GroovyDocTest<T> { }
new Gr<caret>oovyDocTest<Integer>()""", """\
<div class='definition'><pre>class <b>GroovyDocTest</b>&lt;T&gt;
extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;T&gt; &ndash; kej</td></table>\
<div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">GroovyDocTest</span><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="">&gt;</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;<span style="color:#20999d;">T</span>&gt; &ndash; kej</td></table>\
"""
}
@@ -217,7 +217,7 @@ public class MyCategory {
myFixture.completeBasic()
assert generateDoc().contains('Some doc')
assert generateDoc().contains('foo')
assert generateDoc().contains('()')
assert generateDoc().contains('<span style="">(</span><span style="">)</span>')
}
void testPropertyDoc() {
@@ -84,7 +84,7 @@ class HtmlClassifierNamePolicy(val base: ClassifierNamePolicy) : ClassifierNameP
return name
return buildString {
val ref = classifier.fqNameUnsafe.toString()
DocumentationManagerUtil.createHyperlink(this, ref, name, true)
DocumentationManagerUtil.createHyperlink(this, ref, name, true, false)
}
}
}
@@ -444,7 +444,7 @@ class KotlinDocumentationProvider : AbstractDocumentationProvider() {
if (containingDeclaration != null) {
val fqName = containingDeclaration.fqNameSafe
if (!fqName.isRoot) {
DocumentationManagerUtil.createHyperlink(this, fqName.asString(), fqName.asString(), false)
DocumentationManagerUtil.createHyperlink(this, fqName.asString(), fqName.asString(), false, true)
}
val fileName =
descriptor
@@ -475,7 +475,7 @@ class KotlinDocumentationProvider : AbstractDocumentationProvider() {
val psi = declarationDescriptor.findPsi() as? KtFunction ?: return ""
val lightElement =
LightClassUtil.getLightClassMethod(psi) // Light method for super's scan in javadoc info gen
val javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(psi.project, lightElement)
val javaDocInfoGenerator = JavaDocInfoGeneratorFactory.create(psi.project, lightElement, false)
val builder = StringBuilder()
if (javaDocInfoGenerator.generateDocInfoCore(builder, false)) {
val renderedJava = builder.toString()
@@ -66,7 +66,7 @@ object KDocRenderer {
}
private fun KDocLink.createHyperlink(to: StringBuilder) {
DocumentationManagerUtil.createHyperlink(to, getLinkText(), getLinkText(), false)
DocumentationManagerUtil.createHyperlink(to, getLinkText(), getLinkText(), false, true)
}
private fun KDocLink.getTargetElement(): PsiElement? {
@@ -130,7 +130,7 @@ object KDocRenderer {
val tag = iterator.next()
val subjectName = tag.getSubjectName()
if (subjectName != null) {
DocumentationManagerUtil.createHyperlink(this, subjectName, subjectName, false)
DocumentationManagerUtil.createHyperlink(this, subjectName, subjectName, false, true)
} else {
append(tag.getContent())
}
@@ -150,7 +150,7 @@ object KDocRenderer {
val subjectName = getSubjectName()
if (subjectName != null) {
append("<p><code>")
DocumentationManagerUtil.createHyperlink(this@renderSection, subjectName, subjectName, false)
DocumentationManagerUtil.createHyperlink(this@renderSection, subjectName, subjectName, false, true)
append("</code> - ${markdownToHtml(getContent().trimStart())}")
}
}
@@ -272,7 +272,7 @@ object KDocRenderer {
if (linkLabelContent != null) {
val label = linkLabelContent.joinToString(separator = "") { it.text }
val linkText = node.child(MarkdownElementTypes.LINK_TEXT)?.toHtml() ?: label
DocumentationManagerUtil.createHyperlink(sb, label, linkText, true)
DocumentationManagerUtil.createHyperlink(sb, label, linkText, true, true)
} else {
sb.append(node.text)
}
@@ -30,9 +30,9 @@ class JavadocNavigationTest() : KotlinLightCodeInsightFixtureTestCase() {
val psiClass = (file as PsiJavaFile).classes[0]
val docInfo = JavaDocInfoGenerator(project, psiClass).generateDocInfo(emptyList())
Assert.assertEquals(
"""<div class='definition'><pre>class <b>ExtMethod</b>
extends <a href="psi_element://Super"><code>Super</code></a></pre></div><div class='content'>
<a href="psi_element://Project#guessDir()"><code>directory</code></a>
"""<div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">ExtMethod</span>
<span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://Super"><code><span style="color:#000000;">Super</span></code></a></pre></div><div class='content'>
<a href="psi_element://Project#guessDir()"><code><span style="color:#000000;">directory</span></code></a>
</div><table class='sections'><p></table>""", docInfo)
}
@@ -54,4 +54,4 @@ class klass<T, X>(val name: String, val name2: String) {
}
//RENDER: <div class='content'><p>This class has no useful logic; it's just a documentation example.</p></div><table class='sections'><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><p><code>T</code> - the type of a member in this class.<p><code>X</code> - the type of a member in this class.</td><tr><td valign='top' class='section'><p>Properties:</td><td valign='top'><p><code>name</code> - is blablabla for name<p><code>name2</code> - is blublublu for name2</td><tr><td valign='top' class='section'><p>Constructor:</td><td valign='top'>primary ctor for it</td></table>
//RENDER: <div class='content'><p>This method has no useful logic; it's just a documentation example.</p></div><table class='sections'><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><p><code>M</code> - the type of a member in this method.<p><code>K</code> - the type of a member in this group.</td><tr><td valign='top' class='section'><p>Properties:</td><td valign='top'><p><code>name</code> - is blablabla for name<p><code>name2</code> - blublublu for name2</td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><a href="psi_element://returnMethod">returnMethod</a> if Duck is Dark</td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><code><a href="psi_element://IndexOutOfBoundsException"><code>IndexOutOfBoundsException</code></a></code> - if something wrong<p><code><a href="psi_element://ArrayIndexOutOfBoundsException"><code>ArrayIndexOutOfBoundsException</code></a></code> - if else something wrong<p><code><a href="psi_element://java.io.IOException"><code>java.io.IOException</code></a></code> - if something else else wrong</td><tr><td valign='top' class='section'><p>Author:</td><td valign='top'>DarkWing Duck</td><tr><td valign='top' class='section'><p>Suppress:</td><td valign='top'>something to suppress</td><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><a href="psi_element://method2"><code>method2</code></a>, <a href="psi_element://method3"><code>method3</code></a></td><tr><td valign='top' class='section'><p>Samples:</td><td valign='top'><p><a href="psi_element://sample"><code>sample</code></a><pre><code>//this is the sample</code></pre><p><a href="psi_element://sample2"><code>sample2</code></a><pre><code>//this is the sample2</code></pre></td></table>
//RENDER: <div class='content'><p>This method has no useful logic; it's just a documentation example.</p></div><table class='sections'><tr><td valign='top' class='section'><p>Params:</td><td valign='top'><p><code>M</code> - the type of a member in this method.<p><code>K</code> - the type of a member in this group.</td><tr><td valign='top' class='section'><p>Properties:</td><td valign='top'><p><code>name</code> - is blablabla for name<p><code>name2</code> - blublublu for name2</td><tr><td valign='top' class='section'><p>Returns:</td><td valign='top'><a href="psi_element://returnMethod">returnMethod</a> if Duck is Dark</td><tr><td valign='top' class='section'><p>Throws:</td><td valign='top'><p><code><a href="psi_element://IndexOutOfBoundsException"><code style='font-size:96%;'>IndexOutOfBoundsException</code></a></code> - if something wrong<p><code><a href="psi_element://ArrayIndexOutOfBoundsException"><code style='font-size:96%;'>ArrayIndexOutOfBoundsException</code></a></code> - if else something wrong<p><code><a href="psi_element://java.io.IOException"><code style='font-size:96%;'>java.io.IOException</code></a></code> - if something else else wrong</td><tr><td valign='top' class='section'><p>Author:</td><td valign='top'>DarkWing Duck</td><tr><td valign='top' class='section'><p>Suppress:</td><td valign='top'>something to suppress</td><tr><td valign='top' class='section'><p>See Also:</td><td valign='top'><a href="psi_element://method2"><code style='font-size:96%;'>method2</code></a>, <a href="psi_element://method3"><code style='font-size:96%;'>method3</code></a></td><tr><td valign='top' class='section'><p>Samples:</td><td valign='top'><p><a href="psi_element://sample"><code style='font-size:96%;'>sample</code></a><pre><code>//this is the sample</code></pre><p><a href="psi_element://sample2"><code style='font-size:96%;'>sample2</code></a><pre><code>//this is the sample2</code></pre></td></table>
@@ -9,4 +9,4 @@ class C {
}
}
//INFO: <div class='definition'><pre><a href="psi_element://C"><code>C</code></a><br>public final fun <b>foo</b>(): Unit</pre></div><div class='content'><p>Use <a href="psi_element://SOME_REFERENCED_VAL">SOME_REFERENCED_VAL</a> to do something</p></div><table class='sections'></table>
//INFO: <div class='definition'><pre><a href="psi_element://C"><code style='font-size:96%;'>C</code></a><br>public final fun <b>foo</b>(): Unit</pre></div><div class='content'><p>Use <a href="psi_element://SOME_REFERENCED_VAL">SOME_REFERENCED_VAL</a> to do something</p></div><table class='sections'></table>
@@ -5,4 +5,4 @@ interface Base
*/
class Some<<caret>T: Base>
//INFO: <div class='definition'><pre><a href="psi_element://Some"><code>Some</code></a><br>&lt;<b>T</b> : <a href="psi_element://Base">Base</a>&gt;</pre></div><div class='content'><p>this is docs for T</p></div><table class='sections'></table>
//INFO: <div class='definition'><pre><a href="psi_element://Some"><code style='font-size:96%;'>Some</code></a><br>&lt;<b>T</b> : <a href="psi_element://Base">Base</a>&gt;</pre></div><div class='content'><p>this is docs for T</p></div><table class='sections'></table>
@@ -4,4 +4,4 @@ class C(var v: Int) {
}
}
//INFO: <div class='definition'><pre><a href="psi_element://C"><code>C</code></a><br>public final var <b>v</b>: Int</pre></div>
//INFO: <div class='definition'><pre><a href="psi_element://C"><code style='font-size:96%;'>C</code></a><br>public final var <b>v</b>: Int</pre></div>
@@ -2,6 +2,6 @@ fun testing() {
SomeClassWithParen("param", 1<caret>)
}
//INFO: <div class='definition'><pre><a href="psi_element://SomeClassWithParen"><code>SomeClassWithParen</code></a><br><i>@<a href="psi_element://org.jetbrains.annotations.Contract"><code>Contract</code></a>(pure = true)</i>&nbsp;
//INFO: public&nbsp;<b>SomeClassWithParen</b>(<a href="psi_element://java.lang.String"><code>String</code></a>&nbsp;str,
//INFO: int&nbsp;num)</pre></div><table class='sections'><p><tr><td valign='top' class='section'><p><i>Inferred</i> annotations:</td><td valign='top'><p><i>@<a href="psi_element://org.jetbrains.annotations.Contract">org.jetbrains.annotations.Contract</a>(pure = true)</i></td></table>
//INFO: <div class='definition'><pre><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><code style='font-size:96%;'><span style="color:#808000;">Contract</span></code></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i>&nbsp;
//INFO: <span style="color:#000080;font-weight:bold;">public</span>&nbsp;<span style="color:#000000;">SomeClassWithParen</span><span style="">(</span><a href="psi_element://java.lang.String"><code><span style="color:#000000;">String</span></code></a>&nbsp;<span style="">str</span><span style="">,
//INFO: </span> <span style="color:#000080;font-weight:bold;">int</span>&nbsp;<span style="">num</span><span style="">)</span><br><span class='grayed'>defined in </span><a href="psi_element://SomeClassWithParen"><code><span style="color:#000000;">SomeClassWithParen</span></code></a></pre></div><table class='sections'><p><tr><td valign='top' class='section'><p><i>Inferred</i><br> annotations:</td><td valign='top'><p><i><span style="color:#808000;">@</span><a href="psi_element://org.jetbrains.annotations.Contract"><span style="color:#808000;">org.jetbrains.annotations.Contract</span></a><span style="">(</span><span style="">pure</span><span style=""> = </span><span style="color:#000080;font-weight:bold;">true</span><span style="">)</span></i></td></table>
@@ -2,7 +2,7 @@ fun testing() {
<caret>SomeClass<List<String>>()
}
//INFO: <div class='definition'><pre>public class <b>SomeClass</b>&lt;T extends <a href="psi_element://java.util.List"><code>List</code></a>&gt;
//INFO: extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><div class='content'>
//INFO: <div class='definition'><pre><span style="color:#000080;font-weight:bold;">public</span> <span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">SomeClass</span><span style="">&lt;</span><span style="color:#20999d;">T</span><span style="color:#000080;font-weight:bold;"> extends </span><a href="psi_element://java.util.List"><code><span style="color:#000000;">List</span></code></a><span style="">&gt;</span>
//INFO: <span style="color:#000080;font-weight:bold;">extends </span><a href="psi_element://java.lang.Object"><code><span style="color:#000000;">Object</span></code></a></pre></div><div class='content'>
//INFO: Some Java Class
//INFO: </div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;T&gt; &ndash; </td></table>
//INFO: </div><table class='sections'><p><tr><td valign='top' class='section'><p>Type parameters:</td><td valign='top'>&lt;<span style="color:#20999d;">T</span>&gt; &ndash; </td></table>

Some files were not shown because too many files have changed in this diff Show More