diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt index 52e3fbd674f..877d0a44678 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.DeprecationLevelValue.* import org.jetbrains.kotlin.resolve.annotations.argumentValue 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.SinceKotlinInfo import org.jetbrains.kotlin.utils.SmartList @@ -189,15 +190,15 @@ private fun DeclarationDescriptor.getOwnDeprecations(languageVersionSettings: La result.add(DeprecatedByAnnotation(annotation, target)) } - if (target is DeserializedMemberDescriptor) { - val sinceKotlinInfo = target.sinceKotlinInfo - if (sinceKotlinInfo != null) { - // We're using ApiVersion because it's convenient to compare versions, "-api-version" is not involved in any way - // TODO: usage of ApiVersion is confusing here, refactor - if (ApiVersion.createBySinceKotlinInfo(sinceKotlinInfo) > - ApiVersion.createByLanguageVersion(languageVersionSettings.languageVersion)) { - result.add(DeprecatedBySinceKotlinInfo(sinceKotlinInfo, target)) - } + val sinceKotlinInfo = + (target as? DeserializedMemberDescriptor)?.sinceKotlinInfo + ?: (target as? DeserializedClassDescriptor)?.sinceKotlinInfo + if (sinceKotlinInfo != null) { + // We're using ApiVersion because it's convenient to compare versions, "-api-version" is not involved in any way + // TODO: usage of ApiVersion is confusing here, refactor + if (ApiVersion.createBySinceKotlinInfo(sinceKotlinInfo) > + ApiVersion.createByLanguageVersion(languageVersionSettings.languageVersion)) { + result.add(DeprecatedBySinceKotlinInfo(sinceKotlinInfo, target)) } } } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt index cfb8c085f82..d8b49511ace 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedClassDescriptor.kt @@ -73,6 +73,9 @@ class DeserializedClassDescriptor( (containingDeclaration as? DeserializedClassDescriptor)?.thisAsProtoContainer ) + val sinceKotlinInfo: SinceKotlinInfo? + get() = SinceKotlinInfo.create(classProto, c.nameResolver, c.sinceKotlinInfoTable) + override val annotations = if (!Flags.HAS_ANNOTATIONS.get(classProto.flags)) { Annotations.EMPTY