Added rendering vararg keywords and valid parameter type in this case.

#KT-1840 fixed
This commit is contained in:
Evgeny Gerashchenko
2012-04-20 18:54:26 +04:00
parent 1f19c6a0f0
commit 0f0330a4b4
2 changed files with 11 additions and 6 deletions
@@ -252,9 +252,6 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
@Override
public Void visitValueParameterDescriptor(ValueParameterDescriptor descriptor, StringBuilder builder) {
builder.append(renderKeyword("value-parameter")).append(" ");
if (descriptor.getVarargElementType() != null) {
builder.append(renderKeyword("vararg")).append(" ");
}
return super.visitValueParameterDescriptor(descriptor, builder);
}
@@ -264,12 +261,20 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
}
protected Void visitVariableDescriptor(VariableDescriptor descriptor, StringBuilder builder, boolean skipValVar) {
JetType type = descriptor.getType();
if (descriptor instanceof ValueParameterDescriptor) {
JetType varargElementType = ((ValueParameterDescriptor)descriptor).getVarargElementType();
if (varargElementType != null) {
builder.append(renderKeyword("vararg")).append(" ");
type = varargElementType;
}
}
String typeString = renderPropertyPrefixAndComputeTypeString(
builder,
skipValVar ? null : descriptor.isVar(),
Collections.<TypeParameterDescriptor>emptyList(),
ReceiverDescriptor.NO_RECEIVER,
descriptor.getType());
type);
renderName(descriptor, builder);
builder.append(" : ").append(escape(typeString));
return super.visitVariableDescriptor(descriptor, builder);
@@ -15,8 +15,8 @@ public fun <out T> withTypeParam(a : Array<T>) : Int {}
//package rendererTest defined in root package
//public final fun pub() : Unit defined in rendererTest
//internal final fun int() : jet.String defined in rendererTest
//internal final fun int2(ints : jet.IntArray) : jet.Int defined in rendererTest
//value-parameter vararg val ints : jet.IntArray defined in rendererTest.int2
//internal final fun int2(vararg ints : jet.Int) : jet.Int defined in rendererTest
//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
//value-parameter val a : jet.String defined in rendererTest.prv
//value-parameter val b : jet.Int defined in rendererTest.prv