Rendering real type for vararg parameter.

This commit is contained in:
Evgeny Gerashchenko
2012-12-25 02:56:58 +04:00
parent 3e7ce13893
commit 93680e1233
@@ -497,21 +497,26 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderVariable(@NotNull VariableDescriptor variable, @NotNull StringBuilder builder, boolean topLevel) { private void renderVariable(@NotNull VariableDescriptor variable, @NotNull StringBuilder builder, boolean topLevel) {
JetType type = variable.getType(); JetType realType = variable.getType();
if (variable instanceof ValueParameterDescriptor) {
JetType varargElementType = ((ValueParameterDescriptor) variable).getVarargElementType();
if (varargElementType != null) {
builder.append(renderKeyword("vararg")).append(" ");
type = varargElementType;
}
}
JetType varargElementType = variable instanceof ValueParameterDescriptor
? ((ValueParameterDescriptor) variable).getVarargElementType()
: null;
JetType typeToRender = varargElementType != null ? varargElementType : realType;
if (varargElementType != null) {
builder.append(renderKeyword("vararg")).append(" ");
}
if (topLevel && !startFromName) { if (topLevel && !startFromName) {
renderValVarPrefix(variable, builder); renderValVarPrefix(variable, builder);
} }
renderName(variable, builder); renderName(variable, builder);
builder.append(" : ").append(escape(renderType(type))); builder.append(" : ").append(escape(renderType(typeToRender)));
if (verbose && varargElementType != null) {
builder.append(" /*").append(escape(renderType(realType))).append("*/");
}
} }
private void renderProperty(@NotNull PropertyDescriptor property, @NotNull StringBuilder builder) { private void renderProperty(@NotNull PropertyDescriptor property, @NotNull StringBuilder builder) {