Enum.values: deprecation (warning) --> deprecation (error)
This commit is contained in:
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user