Simplified code in DescriptorRendererImpl.
This commit is contained in:
@@ -297,6 +297,10 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
/* TYPE PARAMETERS */
|
/* TYPE PARAMETERS */
|
||||||
private void renderTypeParameter(TypeParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
private void renderTypeParameter(TypeParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
||||||
|
if (topLevel) {
|
||||||
|
builder.append(lt());
|
||||||
|
}
|
||||||
|
|
||||||
if (!descriptor.isReified()) {
|
if (!descriptor.isReified()) {
|
||||||
String variance = descriptor.getVariance().toString();
|
String variance = descriptor.getVariance().toString();
|
||||||
if (!variance.isEmpty()) {
|
if (!variance.isEmpty()) {
|
||||||
@@ -332,6 +336,10 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
else {
|
else {
|
||||||
// rendered with "where"
|
// rendered with "where"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (topLevel) {
|
||||||
|
builder.append(">");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean renderTypeParameters(List<TypeParameterDescriptor> typeParameters, StringBuilder builder) {
|
private boolean renderTypeParameters(List<TypeParameterDescriptor> typeParameters, StringBuilder builder) {
|
||||||
@@ -350,13 +358,6 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderTypeParameter(TypeParameterDescriptor descriptor, StringBuilder builder) {
|
|
||||||
builder.append(lt());
|
|
||||||
renderTypeParameter(descriptor, builder, true);
|
|
||||||
builder.append(">");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* FUNCTIONS */
|
/* FUNCTIONS */
|
||||||
private void renderFunction(FunctionDescriptor descriptor, StringBuilder builder) {
|
private void renderFunction(FunctionDescriptor descriptor, StringBuilder builder) {
|
||||||
if (!startFromName) {
|
if (!startFromName) {
|
||||||
@@ -426,7 +427,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
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);
|
||||||
renderValueParameterOfFunction(parameter, builder);
|
renderValueParameter(parameter, builder, false);
|
||||||
handler.appendAfterValueParameter(parameter, builder);
|
handler.appendAfterValueParameter(parameter, builder);
|
||||||
}
|
}
|
||||||
handler.appendAfterValueParameters(function, builder);
|
handler.appendAfterValueParameters(function, builder);
|
||||||
@@ -434,7 +435,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
else {
|
else {
|
||||||
builder.append("(");
|
builder.append("(");
|
||||||
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
|
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
|
||||||
renderValueParameterOfFunction(parameter, builder);
|
renderValueParameter(parameter, builder, false);
|
||||||
if (parameter.getIndex() != function.getValueParameters().size() - 1) {
|
if (parameter.getIndex() != function.getValueParameters().size() - 1) {
|
||||||
builder.append(", ");
|
builder.append(", ");
|
||||||
}
|
}
|
||||||
@@ -443,26 +444,23 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderValueParameterOfFunction(ValueParameterDescriptor descriptor, StringBuilder builder) {
|
/* VARIABLES */
|
||||||
renderVariable(descriptor, builder, true);
|
private void renderValueParameter(ValueParameterDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
||||||
|
if (topLevel) {
|
||||||
|
builder.append(renderKeyword("value-parameter")).append(" ");
|
||||||
|
}
|
||||||
|
renderVariable(descriptor, builder, topLevel);
|
||||||
boolean withDefaultValue = debugMode ? descriptor.declaresDefaultValue() : descriptor.hasDefaultValue();
|
boolean withDefaultValue = debugMode ? descriptor.declaresDefaultValue() : descriptor.hasDefaultValue();
|
||||||
if (withDefaultValue) {
|
if (withDefaultValue) {
|
||||||
builder.append(" = ...");
|
builder.append(" = ...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void renderValVarPrefix(VariableDescriptor descriptor, StringBuilder builder) {
|
||||||
/* VARIABLES */
|
builder.append(renderKeyword(descriptor.isVar() ? "var" : "val")).append(" ");
|
||||||
private void renderValueParameter(ValueParameterDescriptor descriptor, StringBuilder builder) {
|
|
||||||
builder.append(renderKeyword("value-parameter")).append(" ");
|
|
||||||
renderVariable(descriptor, builder);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderVariable(VariableDescriptor descriptor, StringBuilder builder) {
|
private void renderVariable(VariableDescriptor descriptor, StringBuilder builder, boolean topLevel) {
|
||||||
renderVariable(descriptor, builder, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void renderVariable(VariableDescriptor descriptor, StringBuilder builder, boolean skipValVar) {
|
|
||||||
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();
|
||||||
@@ -471,82 +469,35 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
type = varargElementType;
|
type = varargElementType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String typeString = renderPropertyPrefixAndComputeTypeString(
|
|
||||||
builder,
|
if (topLevel && !startFromName) {
|
||||||
skipValVar ? null : descriptor.isVar(),
|
renderValVarPrefix(descriptor, builder);
|
||||||
Collections.<TypeParameterDescriptor>emptyList(),
|
}
|
||||||
ReceiverParameterDescriptor.NO_RECEIVER_PARAMETER,
|
|
||||||
type);
|
|
||||||
renderName(descriptor, builder);
|
renderName(descriptor, builder);
|
||||||
builder.append(" : ").append(escape(typeString));
|
builder.append(" : ").append(escape(renderType(type)));
|
||||||
}
|
|
||||||
|
|
||||||
private String renderPropertyPrefixAndComputeTypeString(
|
|
||||||
@NotNull StringBuilder builder,
|
|
||||||
@Nullable Boolean isVar,
|
|
||||||
@NotNull List<TypeParameterDescriptor> typeParameters,
|
|
||||||
@Nullable ReceiverParameterDescriptor receiver,
|
|
||||||
@Nullable JetType outType
|
|
||||||
) {
|
|
||||||
String typeString = lt() + "no type>";
|
|
||||||
if (outType != null) {
|
|
||||||
if (isVar != null && !startFromName) {
|
|
||||||
builder.append(renderKeyword(isVar ? "var" : "val")).append(" ");
|
|
||||||
}
|
|
||||||
typeString = renderType(outType);
|
|
||||||
}
|
|
||||||
|
|
||||||
renderTypeParameters(typeParameters, builder);
|
|
||||||
|
|
||||||
if (receiver != null) {
|
|
||||||
builder.append(escape(renderType(receiver.getType()))).append(".");
|
|
||||||
}
|
|
||||||
|
|
||||||
return typeString;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderProperty(PropertyDescriptor descriptor, StringBuilder builder) {
|
private void renderProperty(PropertyDescriptor descriptor, StringBuilder builder) {
|
||||||
if (!startFromName) {
|
if (!startFromName) {
|
||||||
renderVisibility(descriptor.getVisibility(), builder);
|
renderVisibility(descriptor.getVisibility(), builder);
|
||||||
renderModality(descriptor.getModality(), builder);
|
renderModality(descriptor.getModality(), builder);
|
||||||
|
renderValVarPrefix(descriptor, builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
renderTypeParameters(descriptor.getTypeParameters(), builder);
|
||||||
|
|
||||||
|
ReceiverParameterDescriptor receiver = descriptor.getReceiverParameter();
|
||||||
|
if (receiver != null) {
|
||||||
|
builder.append(escape(renderType(receiver.getType()))).append(".");
|
||||||
}
|
}
|
||||||
String typeString = renderPropertyPrefixAndComputeTypeString(
|
|
||||||
builder,
|
|
||||||
descriptor.isVar(),
|
|
||||||
descriptor.getTypeParameters(),
|
|
||||||
descriptor.getReceiverParameter(),
|
|
||||||
descriptor.getType());
|
|
||||||
renderName(descriptor, builder);
|
renderName(descriptor, builder);
|
||||||
builder.append(" : ").append(escape(typeString));
|
builder.append(" : ").append(escape(renderType(descriptor.getType())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* CLASSES */
|
/* CLASSES */
|
||||||
private void renderClass(ClassDescriptor descriptor, StringBuilder builder) {
|
private void renderClass(ClassDescriptor descriptor, StringBuilder builder) {
|
||||||
String keyword;
|
|
||||||
switch (descriptor.getKind()) {
|
|
||||||
case TRAIT:
|
|
||||||
keyword = "trait";
|
|
||||||
break;
|
|
||||||
case ENUM_CLASS:
|
|
||||||
keyword = "enum class";
|
|
||||||
break;
|
|
||||||
case OBJECT:
|
|
||||||
keyword = "object";
|
|
||||||
break;
|
|
||||||
case ANNOTATION_CLASS:
|
|
||||||
keyword = "annotation class";
|
|
||||||
break;
|
|
||||||
case CLASS_OBJECT:
|
|
||||||
keyword = "class object";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
keyword = "class";
|
|
||||||
}
|
|
||||||
renderClass(descriptor, builder, keyword);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void renderClass(ClassDescriptor descriptor, StringBuilder builder, String keyword) {
|
|
||||||
boolean isNotClassObject = descriptor.getKind() != ClassKind.CLASS_OBJECT;
|
boolean isNotClassObject = descriptor.getKind() != ClassKind.CLASS_OBJECT;
|
||||||
if (!startFromName) {
|
if (!startFromName) {
|
||||||
if (isNotClassObject) {
|
if (isNotClassObject) {
|
||||||
@@ -555,7 +506,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
renderModality(descriptor.getModality(), builder);
|
renderModality(descriptor.getModality(), builder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
builder.append(renderKeyword(keyword));
|
builder.append(renderKeyword(getClassKindPrefix(descriptor)));
|
||||||
if (isNotClassObject) {
|
if (isNotClassObject) {
|
||||||
builder.append(" ");
|
builder.append(" ");
|
||||||
}
|
}
|
||||||
@@ -581,6 +532,30 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getClassKindPrefix(ClassDescriptor descriptor) {
|
||||||
|
String keyword;
|
||||||
|
switch (descriptor.getKind()) {
|
||||||
|
case TRAIT:
|
||||||
|
keyword = "trait";
|
||||||
|
break;
|
||||||
|
case ENUM_CLASS:
|
||||||
|
keyword = "enum class";
|
||||||
|
break;
|
||||||
|
case OBJECT:
|
||||||
|
keyword = "object";
|
||||||
|
break;
|
||||||
|
case ANNOTATION_CLASS:
|
||||||
|
keyword = "annotation class";
|
||||||
|
break;
|
||||||
|
case CLASS_OBJECT:
|
||||||
|
keyword = "class object";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
keyword = "class";
|
||||||
|
}
|
||||||
|
return keyword;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* OTHER */
|
/* OTHER */
|
||||||
private void renderModuleOrScript(DeclarationDescriptor descriptor, StringBuilder builder) {
|
private void renderModuleOrScript(DeclarationDescriptor descriptor, StringBuilder builder) {
|
||||||
@@ -597,13 +572,13 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
private class RenderDeclarationDescriptorVisitor extends DeclarationDescriptorVisitorEmptyBodies<Void, StringBuilder> {
|
private class RenderDeclarationDescriptorVisitor extends DeclarationDescriptorVisitorEmptyBodies<Void, StringBuilder> {
|
||||||
@Override
|
@Override
|
||||||
public Void visitValueParameterDescriptor(ValueParameterDescriptor descriptor, StringBuilder builder) {
|
public Void visitValueParameterDescriptor(ValueParameterDescriptor descriptor, StringBuilder builder) {
|
||||||
renderValueParameter(descriptor, builder);
|
renderValueParameter(descriptor, builder, true);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void visitVariableDescriptor(VariableDescriptor descriptor, StringBuilder builder) {
|
public Void visitVariableDescriptor(VariableDescriptor descriptor, StringBuilder builder) {
|
||||||
renderVariable(descriptor, builder);
|
renderVariable(descriptor, builder, true);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -632,7 +607,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void visitTypeParameterDescriptor(TypeParameterDescriptor descriptor, StringBuilder builder) {
|
public Void visitTypeParameterDescriptor(TypeParameterDescriptor descriptor, StringBuilder builder) {
|
||||||
renderTypeParameter(descriptor, builder);
|
renderTypeParameter(descriptor, builder, true);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ fun <P> funTypeParameterWithTwoUpperBounds() where P : Foo, P : Bar = 17
|
|||||||
//value-parameter vararg val ints : jet.Int defined in rendererTest.int2
|
//value-parameter vararg val ints : jet.Int defined in rendererTest.int2
|
||||||
//private final fun prv(a : jet.String, b : jet.Int = ...) : jet.Int defined in rendererTest
|
//private final fun prv(a : jet.String, b : jet.Int = ...) : jet.Int defined in rendererTest
|
||||||
//value-parameter val a : jet.String defined in rendererTest.prv
|
//value-parameter val a : jet.String defined in rendererTest.prv
|
||||||
//value-parameter val b : jet.Int defined in rendererTest.prv
|
//value-parameter val b : jet.Int = ... defined in rendererTest.prv
|
||||||
//public final fun jet.Int.ext() : jet.Int defined in rendererTest
|
//public final fun jet.Int.ext() : jet.Int defined in rendererTest
|
||||||
//public final fun <out T> withTypeParam(a : jet.Array<T>) : jet.Int defined in rendererTest
|
//public final fun <out T> withTypeParam(a : jet.Array<T>) : jet.Int defined in rendererTest
|
||||||
//<out T> defined in rendererTest.withTypeParam
|
//<out T> defined in rendererTest.withTypeParam
|
||||||
|
|||||||
Reference in New Issue
Block a user