Unify Deprecation classes from :core:compiler.common and :compiler:frontend modules

This commit is contained in:
Dmitriy Novozhilov
2021-08-27 12:51:16 +03:00
parent be999564b1
commit 762d225bd7
18 changed files with 108 additions and 108 deletions
@@ -1,27 +0,0 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.descriptors
data class Deprecation(
val level: DeprecationLevelValue,
val inheritable: Boolean,
val message: String? = null
) : Comparable<Deprecation> {
override fun compareTo(other: Deprecation): Int {
val lr = level.compareTo(other.level)
//to prefer inheritable deprecation
return if (lr == 0 && !inheritable && other.inheritable) 1
else lr
}
}
/**
* This corresponds to [DeprecationLevel] in Kotlin standard library. A symbol annotated with [java.lang.Deprecated] is considered a
* warning.
*/
enum class DeprecationLevelValue {
WARNING, ERROR, HIDDEN
}
@@ -0,0 +1,33 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.resolve.deprecation
abstract class Deprecation : Comparable<Deprecation> {
abstract val deprecationLevel: DeprecationLevelValue
abstract val propagatesToOverrides: Boolean
abstract val message: String?
override fun compareTo(other: Deprecation): Int {
val lr = deprecationLevel.compareTo(other.deprecationLevel)
//to prefer inheritable deprecation
return if (lr == 0 && !propagatesToOverrides && other.propagatesToOverrides) 1
else lr
}
}
data class SimpleDeprecation(
override val deprecationLevel: DeprecationLevelValue,
override val propagatesToOverrides: Boolean,
override val message: String?
) : Deprecation()
/**
* This corresponds to [DeprecationLevel] in Kotlin standard library. A symbol annotated with [java.lang.Deprecated] is considered a
* warning.
*/
enum class DeprecationLevelValue {
WARNING, ERROR, HIDDEN
}
@@ -20,13 +20,13 @@ import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.resolve.deprecation.Deprecation
import org.jetbrains.kotlin.resolve.deprecation.DescriptorBasedDeprecation
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
class DeprecationCausedByFunctionN(override val target: DeclarationDescriptor) : Deprecation {
class DeprecationCausedByFunctionN(override val target: DeclarationDescriptor) : DescriptorBasedDeprecation() {
override val deprecationLevel: DeprecationLevelValue
get() = DeprecationLevelValue.ERROR
override val message: String?
override val message: String
get() = "Java members containing references to ${JavaToKotlinClassMap.FUNCTION_N_FQ_NAME} are not supported"
}
@@ -8,16 +8,11 @@ package org.jetbrains.kotlin.resolve.deprecation
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
interface Deprecation {
val deprecationLevel: DeprecationLevelValue
val message: String?
val target: DeclarationDescriptor
val propagatesToOverrides: Boolean get() = true
abstract class DescriptorBasedDeprecation : Deprecation() {
override val propagatesToOverrides: Boolean
get() = true
abstract val target: DeclarationDescriptor
}
// values from kotlin.DeprecationLevel
enum class DeprecationLevelValue {
WARNING, ERROR, HIDDEN
}
val DEPRECATED_FUNCTION_KEY = object : CallableDescriptor.UserDataKey<Deprecation> {}
val DEPRECATED_FUNCTION_KEY = object : CallableDescriptor.UserDataKey<DescriptorBasedDeprecation> {}