Annotated methods of DescriptorRenderer.
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.jet.renderer;
|
package org.jetbrains.jet.renderer;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||||
@@ -43,12 +44,14 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
|
|||||||
|
|
||||||
DescriptorRenderer HTML = new DescriptorRendererBuilder().setTextFormat(TextFormat.HTML).build();
|
DescriptorRenderer HTML = new DescriptorRendererBuilder().setTextFormat(TextFormat.HTML).build();
|
||||||
|
|
||||||
String renderType(JetType type);
|
@NotNull
|
||||||
|
String renderType(@Nullable JetType type);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
String render(@NotNull DeclarationDescriptor declarationDescriptor);
|
String render(@NotNull DeclarationDescriptor declarationDescriptor);
|
||||||
|
|
||||||
|
@NotNull
|
||||||
String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor);
|
String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor);
|
||||||
|
|
||||||
enum TextFormat {
|
enum TextFormat {
|
||||||
|
|||||||
@@ -82,7 +82,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* FORMATTING */
|
/* FORMATTING */
|
||||||
private String renderKeyword(String keyword) {
|
@NotNull
|
||||||
|
private String renderKeyword(@NotNull String keyword) {
|
||||||
switch (textFormat) {
|
switch (textFormat) {
|
||||||
case PLAIN:
|
case PLAIN:
|
||||||
return keyword;
|
return keyword;
|
||||||
@@ -92,7 +93,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
|
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String escape(String s) {
|
@NotNull
|
||||||
|
private String escape(@NotNull String s) {
|
||||||
switch (textFormat) {
|
switch (textFormat) {
|
||||||
case PLAIN:
|
case PLAIN:
|
||||||
return s;
|
return s;
|
||||||
@@ -102,11 +104,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
|
throw new IllegalStateException("Unexpected textFormat: " + textFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
private String lt() {
|
private String lt() {
|
||||||
return escape("<");
|
return escape("<");
|
||||||
}
|
}
|
||||||
|
|
||||||
private String renderMessage(String message) {
|
@NotNull
|
||||||
|
private String renderMessage(@NotNull String message) {
|
||||||
switch (textFormat) {
|
switch (textFormat) {
|
||||||
case PLAIN:
|
case PLAIN:
|
||||||
return message;
|
return message;
|
||||||
@@ -118,12 +122,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* NAMES RENDERING */
|
/* NAMES RENDERING */
|
||||||
private String renderName(Name identifier) {
|
@NotNull
|
||||||
|
private String renderName(@NotNull Name identifier) {
|
||||||
String asString = identifier.toString();
|
String asString = identifier.toString();
|
||||||
return escape(KEYWORDS.contains(asString) ? '`' + asString + '`' : asString);
|
return escape(KEYWORDS.contains(asString) ? '`' + asString + '`' : asString);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) {
|
private void renderName(@NotNull DeclarationDescriptor descriptor, @NotNull StringBuilder stringBuilder) {
|
||||||
stringBuilder.append(renderName(descriptor.getName()));
|
stringBuilder.append(renderName(descriptor.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,6 +170,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* TYPES RENDERING */
|
/* TYPES RENDERING */
|
||||||
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String renderType(@Nullable JetType type) {
|
public String renderType(@Nullable JetType type) {
|
||||||
return escape(renderTypeWithoutEscape(type));
|
return escape(renderTypeWithoutEscape(type));
|
||||||
@@ -192,6 +198,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
return renderDefaultType(type);
|
return renderDefaultType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
private String renderDefaultType(@NotNull JetType type) {
|
private String renderDefaultType(@NotNull JetType type) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
@@ -207,6 +214,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
private String renderTypeName(@NotNull TypeConstructor typeConstructor) {
|
private String renderTypeName(@NotNull TypeConstructor typeConstructor) {
|
||||||
ClassifierDescriptor cd = typeConstructor.getDeclarationDescriptor();
|
ClassifierDescriptor cd = typeConstructor.getDeclarationDescriptor();
|
||||||
if (cd instanceof TypeParameterDescriptor) {
|
if (cd instanceof TypeParameterDescriptor) {
|
||||||
@@ -221,7 +229,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void appendTypeProjections(StringBuilder result, List<TypeProjection> typeProjections) {
|
private void appendTypeProjections(@NotNull StringBuilder result, @NotNull List<TypeProjection> typeProjections) {
|
||||||
for (Iterator<TypeProjection> iterator = typeProjections.iterator(); iterator.hasNext(); ) {
|
for (Iterator<TypeProjection> iterator = typeProjections.iterator(); iterator.hasNext(); ) {
|
||||||
TypeProjection typeProjection = iterator.next();
|
TypeProjection typeProjection = iterator.next();
|
||||||
if (typeProjection.getProjectionKind() != Variance.INVARIANT) {
|
if (typeProjection.getProjectionKind() != Variance.INVARIANT) {
|
||||||
@@ -234,8 +242,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
private String renderFunctionType(JetType type) {
|
private String renderFunctionType(@NotNull JetType type) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
JetType receiverType = KotlinBuiltIns.getInstance().getReceiverType(type);
|
JetType receiverType = KotlinBuiltIns.getInstance().getReceiverType(type);
|
||||||
@@ -257,7 +265,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* METHODS FOR ALL KINDS OF DESCRIPTORS */
|
/* METHODS FOR ALL KINDS OF DESCRIPTORS */
|
||||||
private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) {
|
private void appendDefinedIn(@NotNull DeclarationDescriptor declarationDescriptor, @NotNull StringBuilder stringBuilder) {
|
||||||
if (declarationDescriptor instanceof ModuleDescriptor) {
|
if (declarationDescriptor instanceof ModuleDescriptor) {
|
||||||
stringBuilder.append(" is a module");
|
stringBuilder.append(" is a module");
|
||||||
return;
|
return;
|
||||||
@@ -271,14 +279,14 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderAnnotations(Annotated annotated, StringBuilder builder) {
|
private void renderAnnotations(@NotNull Annotated annotated, @NotNull StringBuilder builder) {
|
||||||
if (!modifiers) return;
|
if (!modifiers) return;
|
||||||
for (AnnotationDescriptor annotation : annotated.getAnnotations()) {
|
for (AnnotationDescriptor annotation : annotated.getAnnotations()) {
|
||||||
builder.append(renderType(annotation.getType())).append(" ");
|
builder.append(renderType(annotation.getType())).append(" ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderVisibility(Visibility visibility, StringBuilder builder) {
|
private void renderVisibility(@NotNull Visibility visibility, @NotNull StringBuilder builder) {
|
||||||
if (!modifiers) return;
|
if (!modifiers) return;
|
||||||
if ("package".equals(visibility.toString())) {
|
if ("package".equals(visibility.toString())) {
|
||||||
builder.append("public/*package*/ ");
|
builder.append("public/*package*/ ");
|
||||||
@@ -288,7 +296,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderModality(Modality modality, StringBuilder builder) {
|
private void renderModality(@NotNull Modality modality, @NotNull StringBuilder builder) {
|
||||||
if (!modifiers) return;
|
if (!modifiers) return;
|
||||||
String keyword = modality.name().toLowerCase();
|
String keyword = modality.name().toLowerCase();
|
||||||
builder.append(renderKeyword(keyword)).append(" ");
|
builder.append(renderKeyword(keyword)).append(" ");
|
||||||
@@ -308,7 +316,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* TYPE PARAMETERS */
|
/* TYPE PARAMETERS */
|
||||||
private void renderTypeParameter(TypeParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
private void renderTypeParameter(@NotNull TypeParameterDescriptor descriptor, @NotNull StringBuilder builder, boolean topLevel) {
|
||||||
if (topLevel) {
|
if (topLevel) {
|
||||||
builder.append(lt());
|
builder.append(lt());
|
||||||
}
|
}
|
||||||
@@ -352,7 +360,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderTypeParameters(List<TypeParameterDescriptor> typeParameters, boolean withSpace, StringBuilder builder) {
|
private void renderTypeParameters(@NotNull List<TypeParameterDescriptor> typeParameters, boolean withSpace, @NotNull StringBuilder builder) {
|
||||||
if (!typeParameters.isEmpty()) {
|
if (!typeParameters.isEmpty()) {
|
||||||
builder.append(lt());
|
builder.append(lt());
|
||||||
for (Iterator<TypeParameterDescriptor> iterator = typeParameters.iterator(); iterator.hasNext(); ) {
|
for (Iterator<TypeParameterDescriptor> iterator = typeParameters.iterator(); iterator.hasNext(); ) {
|
||||||
@@ -370,7 +378,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* FUNCTIONS */
|
/* FUNCTIONS */
|
||||||
private void renderFunction(FunctionDescriptor descriptor, StringBuilder builder) {
|
private void renderFunction(@NotNull FunctionDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||||
if (!startFromName) {
|
if (!startFromName) {
|
||||||
renderAnnotations(descriptor, builder);
|
renderAnnotations(descriptor, builder);
|
||||||
renderVisibility(descriptor.getVisibility(), builder);
|
renderVisibility(descriptor.getVisibility(), builder);
|
||||||
@@ -390,7 +398,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
renderWhereSuffix(descriptor.getTypeParameters(), builder);
|
renderWhereSuffix(descriptor.getTypeParameters(), builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderConstructor(ConstructorDescriptor constructorDescriptor, StringBuilder builder) {
|
private void renderConstructor(@NotNull ConstructorDescriptor constructorDescriptor, @NotNull StringBuilder builder) {
|
||||||
renderAnnotations(constructorDescriptor, builder);
|
renderAnnotations(constructorDescriptor, builder);
|
||||||
renderVisibility(constructorDescriptor.getVisibility(), builder);
|
renderVisibility(constructorDescriptor.getVisibility(), builder);
|
||||||
|
|
||||||
@@ -425,6 +433,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor) {
|
public String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
@@ -432,7 +441,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderValueParameters(FunctionDescriptor function, StringBuilder builder) {
|
private void renderValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder builder) {
|
||||||
handler.appendBeforeValueParameters(function, builder);
|
handler.appendBeforeValueParameters(function, builder);
|
||||||
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
|
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
|
||||||
handler.appendBeforeValueParameter(parameter, builder);
|
handler.appendBeforeValueParameter(parameter, builder);
|
||||||
@@ -443,7 +452,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* VARIABLES */
|
/* VARIABLES */
|
||||||
private void renderValueParameter(ValueParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
private void renderValueParameter(@NotNull ValueParameterDescriptor descriptor, @NotNull StringBuilder builder, boolean topLevel) {
|
||||||
if (topLevel) {
|
if (topLevel) {
|
||||||
builder.append(renderKeyword("value-parameter")).append(" ");
|
builder.append(renderKeyword("value-parameter")).append(" ");
|
||||||
}
|
}
|
||||||
@@ -454,11 +463,11 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderValVarPrefix(VariableDescriptor descriptor, StringBuilder builder) {
|
private void renderValVarPrefix(@NotNull VariableDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||||
builder.append(renderKeyword(descriptor.isVar() ? "var" : "val")).append(" ");
|
builder.append(renderKeyword(descriptor.isVar() ? "var" : "val")).append(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderVariable(VariableDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
private void renderVariable(@NotNull VariableDescriptor descriptor, @NotNull StringBuilder builder, boolean topLevel) {
|
||||||
JetType type = descriptor.getType();
|
JetType type = descriptor.getType();
|
||||||
if (descriptor instanceof ValueParameterDescriptor) {
|
if (descriptor instanceof ValueParameterDescriptor) {
|
||||||
JetType varargElementType = ((ValueParameterDescriptor) descriptor).getVarargElementType();
|
JetType varargElementType = ((ValueParameterDescriptor) descriptor).getVarargElementType();
|
||||||
@@ -476,7 +485,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
builder.append(" : ").append(escape(renderType(type)));
|
builder.append(" : ").append(escape(renderType(type)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderProperty(PropertyDescriptor descriptor, StringBuilder builder) {
|
private void renderProperty(@NotNull PropertyDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||||
if (!startFromName) {
|
if (!startFromName) {
|
||||||
renderAnnotations(descriptor, builder);
|
renderAnnotations(descriptor, builder);
|
||||||
renderVisibility(descriptor.getVisibility(), builder);
|
renderVisibility(descriptor.getVisibility(), builder);
|
||||||
@@ -498,7 +507,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* CLASSES */
|
/* CLASSES */
|
||||||
private void renderClass(ClassDescriptor descriptor, StringBuilder builder) {
|
private void renderClass(@NotNull ClassDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||||
boolean classObject = descriptor.getKind() == ClassKind.CLASS_OBJECT;
|
boolean classObject = descriptor.getKind() == ClassKind.CLASS_OBJECT;
|
||||||
if (!startFromName) {
|
if (!startFromName) {
|
||||||
if (!classObject) {
|
if (!classObject) {
|
||||||
@@ -545,7 +554,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
renderWhereSuffix(typeParameters, builder);
|
renderWhereSuffix(typeParameters, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getClassKindPrefix(ClassDescriptor descriptor) {
|
@NotNull
|
||||||
|
private static String getClassKindPrefix(@NotNull ClassDescriptor descriptor) {
|
||||||
switch (descriptor.getKind()) {
|
switch (descriptor.getKind()) {
|
||||||
case CLASS:
|
case CLASS:
|
||||||
return "class";
|
return "class";
|
||||||
@@ -568,11 +578,11 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
|
|
||||||
/* OTHER */
|
/* OTHER */
|
||||||
private void renderModuleOrScript(DeclarationDescriptor descriptor, StringBuilder builder) {
|
private void renderModuleOrScript(@NotNull DeclarationDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||||
renderName(descriptor, builder);
|
renderName(descriptor, builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderNamespace(NamespaceDescriptor namespaceDescriptor, StringBuilder builder) {
|
private void renderNamespace(@NotNull NamespaceDescriptor namespaceDescriptor, @NotNull StringBuilder builder) {
|
||||||
builder.append(renderKeyword(JetTokens.PACKAGE_KEYWORD.getValue())).append(" ");
|
builder.append(renderKeyword(JetTokens.PACKAGE_KEYWORD.getValue())).append(" ");
|
||||||
renderName(namespaceDescriptor, builder);
|
renderName(namespaceDescriptor, builder);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user