From b8abd0eb94dac87c897df822aae9723e741e0391 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 7 Mar 2013 16:46:24 +0400 Subject: [PATCH] Rendering annotation argument types when verbose. --- .../annotations/AnnotationDescriptor.java | 2 +- .../jet/lang/resolve/DescriptorUtils.java | 18 +++++++++-- .../jet/renderer/DescriptorRendererImpl.java | 2 +- .../ClassDoesNotOverrideMethod.txt | 32 +++++++++---------- .../annotation/AnnotatedMethod.txt | 2 +- 5 files changed, 34 insertions(+), 22 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationDescriptor.java index 2b549cd82a2..171f56e9684 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationDescriptor.java @@ -56,6 +56,6 @@ public class AnnotationDescriptor { @Override public String toString() { - return annotationType.toString() + DescriptorUtils.getSortedValueArguments(this); + return annotationType.toString() + DescriptorUtils.getSortedValueArguments(this, null); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index 29650438ea0..88b6f50114f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -32,9 +32,13 @@ import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.FilteringScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; -import org.jetbrains.jet.lang.types.*; +import org.jetbrains.jet.lang.types.DescriptorSubstitutor; +import org.jetbrains.jet.lang.types.JetType; +import org.jetbrains.jet.lang.types.TypeUtils; +import org.jetbrains.jet.lang.types.Variance; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import org.jetbrains.jet.renderer.DescriptorRenderer; import java.util.*; @@ -369,10 +373,18 @@ public class DescriptorUtils { return Visibilities.PUBLIC; } - public static List getSortedValueArguments(AnnotationDescriptor descriptor) { + @NotNull + public static List getSortedValueArguments( + @NotNull AnnotationDescriptor descriptor, + @Nullable DescriptorRenderer rendererForTypesIfNecessary + ) { List resultList = Lists.newArrayList(); for (Map.Entry> entry : descriptor.getAllValueArguments().entrySet()) { - resultList.add(entry.getKey().getName().getName() + " = " + entry.getValue().toString()); + CompileTimeConstant value = entry.getValue(); + String typeSuffix = rendererForTypesIfNecessary == null + ? "" + : ": " + rendererForTypesIfNecessary.renderType(value.getType(KotlinBuiltIns.getInstance())); + resultList.add(entry.getKey().getName().getName() + " = " + value.toString() + typeSuffix); } Collections.sort(resultList); return resultList; diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index d9a6d6a0bec..4f7ae9e23aa 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -301,7 +301,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { if (!excludedAnnotationClasses.contains(DescriptorUtils.getFQName(annotationClass).toSafe())) { builder.append(renderType(annotation.getType())); if (verbose) { - builder.append("(").append(StringUtil.join(DescriptorUtils.getSortedValueArguments(annotation), ", ")).append(")"); + builder.append("(").append(StringUtil.join(DescriptorUtils.getSortedValueArguments(annotation, this), ", ")).append(")"); } builder.append(" "); } diff --git a/compiler/testData/loadJava/compiledJavaCompareWithKotlin/ClassDoesNotOverrideMethod.txt b/compiler/testData/loadJava/compiledJavaCompareWithKotlin/ClassDoesNotOverrideMethod.txt index 453c551e11e..2185313442a 100644 --- a/compiler/testData/loadJava/compiledJavaCompareWithKotlin/ClassDoesNotOverrideMethod.txt +++ b/compiler/testData/loadJava/compiledJavaCompareWithKotlin/ClassDoesNotOverrideMethod.txt @@ -5,22 +5,22 @@ public abstract class ClassDoesNotOverrideMethod : java.util.Date { public open override /*1*/ /*fake_override*/ fun after(/*0*/ p0 : java.util.Date) : jet.Boolean public open override /*1*/ /*fake_override*/ fun before(/*0*/ p0 : java.util.Date) : jet.Boolean public open override /*1*/ /*fake_override*/ fun compareTo(/*0*/ p0 : java.util.Date) : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getDate() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getDay() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getHours() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getMinutes() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getMonth() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getSeconds() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getDate() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getDay() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getHours() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getMinutes() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getMonth() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getSeconds() : jet.Int public open override /*1*/ /*fake_override*/ fun getTime() : jet.Long - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getTimezoneOffset() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun getYear() : jet.Int - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun setDate(/*0*/ p0 : jet.Int) : Unit - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun setHours(/*0*/ p0 : jet.Int) : Unit - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun setMinutes(/*0*/ p0 : jet.Int) : Unit - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun setMonth(/*0*/ p0 : jet.Int) : Unit - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun setSeconds(/*0*/ p0 : jet.Int) : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getTimezoneOffset() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun getYear() : jet.Int + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun setDate(/*0*/ p0 : jet.Int) : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun setHours(/*0*/ p0 : jet.Int) : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun setMinutes(/*0*/ p0 : jet.Int) : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun setMonth(/*0*/ p0 : jet.Int) : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun setSeconds(/*0*/ p0 : jet.Int) : Unit public open override /*1*/ /*fake_override*/ fun setTime(/*0*/ p0 : jet.Long) : Unit - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun setYear(/*0*/ p0 : jet.Int) : Unit - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun toGMTString() : jet.String - jet.deprecated(value = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun toLocaleString() : jet.String + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun setYear(/*0*/ p0 : jet.Int) : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun toGMTString() : jet.String + jet.deprecated(value = "Deprecated in Java": jet.String) public open override /*1*/ /*fake_override*/ fun toLocaleString() : jet.String } diff --git a/compiler/testData/loadJava/compiledJavaCompareWithKotlin/annotation/AnnotatedMethod.txt b/compiler/testData/loadJava/compiledJavaCompareWithKotlin/annotation/AnnotatedMethod.txt index 1856fc56e8d..3bb78da66e9 100644 --- a/compiler/testData/loadJava/compiledJavaCompareWithKotlin/annotation/AnnotatedMethod.txt +++ b/compiler/testData/loadJava/compiledJavaCompareWithKotlin/annotation/AnnotatedMethod.txt @@ -2,5 +2,5 @@ package test public open class AnnotatedMethod : java.lang.Object { public constructor AnnotatedMethod() - jet.deprecated(value = "Deprecated in Java") public open fun f() : Unit + jet.deprecated(value = "Deprecated in Java": jet.String) public open fun f() : Unit }