Support SinceKotlinInfo for deserialized classes
This commit is contained in:
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.resolve.DeprecationLevelValue.*
|
import org.jetbrains.kotlin.resolve.DeprecationLevelValue.*
|
||||||
import org.jetbrains.kotlin.resolve.annotations.argumentValue
|
import org.jetbrains.kotlin.resolve.annotations.argumentValue
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.SinceKotlinInfo
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.SinceKotlinInfo
|
||||||
import org.jetbrains.kotlin.utils.SmartList
|
import org.jetbrains.kotlin.utils.SmartList
|
||||||
@@ -189,15 +190,15 @@ private fun DeclarationDescriptor.getOwnDeprecations(languageVersionSettings: La
|
|||||||
result.add(DeprecatedByAnnotation(annotation, target))
|
result.add(DeprecatedByAnnotation(annotation, target))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target is DeserializedMemberDescriptor) {
|
val sinceKotlinInfo =
|
||||||
val sinceKotlinInfo = target.sinceKotlinInfo
|
(target as? DeserializedMemberDescriptor)?.sinceKotlinInfo
|
||||||
if (sinceKotlinInfo != null) {
|
?: (target as? DeserializedClassDescriptor)?.sinceKotlinInfo
|
||||||
// We're using ApiVersion because it's convenient to compare versions, "-api-version" is not involved in any way
|
if (sinceKotlinInfo != null) {
|
||||||
// TODO: usage of ApiVersion is confusing here, refactor
|
// We're using ApiVersion because it's convenient to compare versions, "-api-version" is not involved in any way
|
||||||
if (ApiVersion.createBySinceKotlinInfo(sinceKotlinInfo) >
|
// TODO: usage of ApiVersion is confusing here, refactor
|
||||||
ApiVersion.createByLanguageVersion(languageVersionSettings.languageVersion)) {
|
if (ApiVersion.createBySinceKotlinInfo(sinceKotlinInfo) >
|
||||||
result.add(DeprecatedBySinceKotlinInfo(sinceKotlinInfo, target))
|
ApiVersion.createByLanguageVersion(languageVersionSettings.languageVersion)) {
|
||||||
}
|
result.add(DeprecatedBySinceKotlinInfo(sinceKotlinInfo, target))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -73,6 +73,9 @@ class DeserializedClassDescriptor(
|
|||||||
(containingDeclaration as? DeserializedClassDescriptor)?.thisAsProtoContainer
|
(containingDeclaration as? DeserializedClassDescriptor)?.thisAsProtoContainer
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val sinceKotlinInfo: SinceKotlinInfo?
|
||||||
|
get() = SinceKotlinInfo.create(classProto, c.nameResolver, c.sinceKotlinInfoTable)
|
||||||
|
|
||||||
override val annotations =
|
override val annotations =
|
||||||
if (!Flags.HAS_ANNOTATIONS.get(classProto.flags)) {
|
if (!Flags.HAS_ANNOTATIONS.get(classProto.flags)) {
|
||||||
Annotations.EMPTY
|
Annotations.EMPTY
|
||||||
|
|||||||
Reference in New Issue
Block a user