Enum.values: deprecation (warning) --> deprecation (error)

This commit is contained in:
Mikhail Glukhikh
2015-12-09 18:43:27 +03:00
parent 521b216602
commit c8b50eec1e
186 changed files with 238 additions and 215 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.builtins;
import kotlin.DeprecationLevel;
import kotlin.SetsKt;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull;
@@ -139,6 +140,7 @@ public abstract class KotlinBuiltIns {
public final FqName throwable = fqName("Throwable");
public final FqName deprecated = fqName("Deprecated");
public final FqName deprecationLevel = fqName("DeprecationLevel");
public final FqName extension = fqName("Extension");
public final FqName target = annotationName("Target");
public final FqName annotationTarget = annotationName("AnnotationTarget");
@@ -377,6 +379,19 @@ public abstract class KotlinBuiltIns {
return getBuiltInClassByName(FQ_NAMES.deprecated.shortName());
}
@NotNull
public ClassDescriptor getDeprecationLevelEnum() {
return getBuiltInClassByName(FQ_NAMES.deprecationLevel.shortName());
}
@Nullable
public ClassDescriptor getDeprecationLevelEnumEntry(@NotNull DeprecationLevel level) {
ClassifierDescriptor result = getDeprecationLevelEnum().getUnsubstitutedInnerClassesScope().getContributedClassifier(
Name.identifier(level.name()), NoLookupLocation.FROM_BUILTINS
);
return result instanceof ClassDescriptor ? (ClassDescriptor) result : null;
}
@NotNull
public ClassDescriptor getTargetAnnotation() {
return getAnnotationClassByName(FQ_NAMES.target.shortName());
@@ -22,10 +22,15 @@ import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.constants.AnnotationValue
import org.jetbrains.kotlin.resolve.constants.ArrayValue
import org.jetbrains.kotlin.resolve.constants.EnumValue
import org.jetbrains.kotlin.resolve.constants.StringValue
import org.jetbrains.kotlin.types.Variance
public fun KotlinBuiltIns.createDeprecatedAnnotation(message: String, replaceWith: String): AnnotationDescriptor {
public fun KotlinBuiltIns.createDeprecatedAnnotation(
message: String,
replaceWith: String,
level: DeprecationLevel = DeprecationLevel.WARNING
): AnnotationDescriptor {
val deprecatedAnnotation = deprecatedAnnotation
val parameters = deprecatedAnnotation.unsubstitutedPrimaryConstructor!!.valueParameters
@@ -46,7 +51,8 @@ public fun KotlinBuiltIns.createDeprecatedAnnotation(message: String, replaceWit
),
SourceElement.NO_SOURCE
)
)
),
parameters["level"] to EnumValue(getDeprecationLevelEnumEntry(level)!!)
),
SourceElement.NO_SOURCE)
}
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.resolve;
import kotlin.DeprecationLevel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.*;
@@ -133,7 +134,9 @@ public class DescriptorFactory {
@NotNull
public static PropertyDescriptor createEnumValuesProperty(@NotNull ClassDescriptor enumClass) {
AnnotationsImpl annotations = AnnotationsImpl.createWithNoTarget(
AnnotationUtilKt.createDeprecatedAnnotation(getBuiltIns(enumClass), "Use 'values()' function instead", "this.values()")
AnnotationUtilKt.createDeprecatedAnnotation(getBuiltIns(enumClass),
"Use 'values()' function instead", "this.values()",
DeprecationLevel.ERROR)
);
PropertyDescriptorImpl values =