Remove all deprecated API from kotlin-metadata(-jvm).

This includes APIs such as:

- Visitors API
- Obsolete KotlinClassMetadata reading and writing API
- Extension and extension visitors API
- Flags and `class Flag` (a reduced version of it was moved to test sources)
- Various utility methods

Extensions mechanism got reworked with the removal of public visitors; it is
completely internal now with special accessors in kotlinx.metadata.internal
package.

Since `var KmClass.flags` is internal now (instead of being deprecated), special
utility functions with the name `_flagAccess` were added to internal package
for testing purposes.

^KT-63156 Fixed
This commit is contained in:
Leonid Startsev
2024-03-06 20:00:39 +01:00
committed by Space Team
parent e002f07ff5
commit 50331fb149
34 changed files with 563 additions and 4684 deletions
@@ -2,45 +2,42 @@
* Copyright 2010-2024 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.
*/
@file:Suppress("DEPRECATION_ERROR") // Extension visitors
package kotlinx.metadata.klib.impl
import kotlinx.metadata.klib.*
import kotlin.metadata.*
import kotlin.metadata.internal.common.KmModuleFragment
import kotlin.metadata.internal.common.KmModuleFragmentExtensionVisitor
import kotlin.metadata.internal.extensions.*
internal val KmFunction.klibExtensions: KlibFunctionExtension
get() = visitExtensions(KlibFunctionExtensionVisitor.TYPE) as KlibFunctionExtension
get() = getExtension(KlibFunctionExtensionVisitor.TYPE) as KlibFunctionExtension
internal val KmClass.klibExtensions: KlibClassExtension
get() = visitExtensions(KlibClassExtensionVisitor.TYPE) as KlibClassExtension
get() = getExtension(KlibClassExtensionVisitor.TYPE) as KlibClassExtension
internal val KmType.klibExtensions: KlibTypeExtension
get() = visitExtensions(KlibTypeExtensionVisitor.TYPE) as KlibTypeExtension
get() = getExtension(KlibTypeExtensionVisitor.TYPE) as KlibTypeExtension
internal val KmProperty.klibExtensions: KlibPropertyExtension
get() = visitExtensions(KlibPropertyExtensionVisitor.TYPE) as KlibPropertyExtension
get() = getExtension(KlibPropertyExtensionVisitor.TYPE) as KlibPropertyExtension
internal val KmConstructor.klibExtensions: KlibConstructorExtension
get() = visitExtensions(KlibConstructorExtensionVisitor.TYPE) as KlibConstructorExtension
get() = getExtension(KlibConstructorExtensionVisitor.TYPE) as KlibConstructorExtension
internal val KmTypeParameter.klibExtensions: KlibTypeParameterExtension
get() = visitExtensions(KlibTypeParameterExtensionVisitor.TYPE) as KlibTypeParameterExtension
get() = getExtension(KlibTypeParameterExtensionVisitor.TYPE) as KlibTypeParameterExtension
internal val KmPackage.klibExtensions: KlibPackageExtension
get() = visitExtensions(KlibPackageExtensionVisitor.TYPE) as KlibPackageExtension
get() = getExtension(KlibPackageExtensionVisitor.TYPE) as KlibPackageExtension
internal val KmModuleFragment.klibExtensions: KlibModuleFragmentExtension
get() = visitExtensions(KlibModuleFragmentExtensionVisitor.TYPE) as KlibModuleFragmentExtension
get() = getExtension(KlibModuleFragmentExtensionVisitor.TYPE) as KlibModuleFragmentExtension
internal val KmTypeAlias.klibExtensions: KlibTypeAliasExtension
get() = visitExtensions(KlibTypeAliasExtensionVisitor.TYPE) as KlibTypeAliasExtension
get() = getExtension(KlibTypeAliasExtensionVisitor.TYPE) as KlibTypeAliasExtension
internal val KmValueParameter.klibExtensions: KlibValueParameterExtension
get() = visitExtensions(KlibValueParameterExtensionVisitor.TYPE) as KlibValueParameterExtension
get() = getExtension(KlibValueParameterExtensionVisitor.TYPE) as KlibValueParameterExtension
internal class KlibFunctionExtension : KlibFunctionExtensionVisitor(), KmFunctionExtension {
@@ -60,7 +57,7 @@ internal class KlibFunctionExtension : KlibFunctionExtensionVisitor(), KmFunctio
this.file = file
}
override fun accept(visitor: KmFunctionExtensionVisitor) {
fun accept(visitor: KmFunctionExtension) {
require(visitor is KlibFunctionExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
uniqId?.let(visitor::visitUniqId)
@@ -91,7 +88,7 @@ internal class KlibClassExtension : KlibClassExtensionVisitor(), KmClassExtensio
enumEntries += entry
}
override fun accept(visitor: KmClassExtensionVisitor) {
fun accept(visitor: KmClassExtension) {
require(visitor is KlibClassExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
enumEntries.forEach(visitor::visitEnumEntry)
@@ -108,7 +105,7 @@ internal class KlibTypeExtension : KlibTypeExtensionVisitor(), KmTypeExtension {
annotations += annotation
}
override fun accept(visitor: KmTypeExtensionVisitor) {
fun accept(visitor: KmTypeExtension) {
require(visitor is KlibTypeExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
}
@@ -147,7 +144,7 @@ internal class KlibPropertyExtension : KlibPropertyExtensionVisitor(), KmPropert
this.compileTimeValue = value
}
override fun accept(visitor: KmPropertyExtensionVisitor) {
fun accept(visitor: KmPropertyExtension) {
require(visitor is KlibPropertyExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
getterAnnotations.forEach(visitor::visitGetterAnnotation)
@@ -171,7 +168,7 @@ internal class KlibConstructorExtension : KlibConstructorExtensionVisitor(), KmC
this.uniqId = uniqId
}
override fun accept(visitor: KmConstructorExtensionVisitor) {
fun accept(visitor: KmConstructorExtension) {
require(visitor is KlibConstructorExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
uniqId?.let(visitor::visitUniqId)
@@ -191,7 +188,7 @@ internal class KlibTypeParameterExtension : KlibTypeParameterExtensionVisitor(),
this.uniqId = uniqId
}
override fun accept(visitor: KmTypeParameterExtensionVisitor) {
fun accept(visitor: KmTypeParameterExtension) {
require(visitor is KlibTypeParameterExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
uniqId?.let(visitor::visitUniqId)
@@ -206,7 +203,7 @@ internal class KlibPackageExtension : KlibPackageExtensionVisitor(), KmPackageEx
fqName = name
}
override fun accept(visitor: KmPackageExtensionVisitor) {
fun accept(visitor: KmPackageExtension) {
require(visitor is KlibPackageExtensionVisitor)
fqName?.let(visitor::visitFqName)
}
@@ -230,7 +227,7 @@ internal class KlibModuleFragmentExtension : KlibModuleFragmentExtensionVisitor(
this.className += className
}
override fun accept(visitor: KmModuleFragmentExtensionVisitor) {
fun accept(visitor: KmModuleFragmentExtension) {
require(visitor is KlibModuleFragmentExtensionVisitor)
moduleFragmentFiles.forEach(visitor::visitFile)
fqName?.let(visitor::visitFqName)
@@ -245,7 +242,7 @@ internal class KlibTypeAliasExtension : KlibTypeAliasExtensionVisitor(), KmTypeA
this.uniqId = uniqId
}
override fun accept(visitor: KmTypeAliasExtensionVisitor) {
fun accept(visitor: KmTypeAliasExtension) {
require(visitor is KlibTypeAliasExtensionVisitor)
uniqId?.let(visitor::visitUniqId)
}
@@ -258,7 +255,7 @@ internal class KlibValueParameterExtension : KlibValueParameterExtensionVisitor(
annotations += annotation
}
override fun accept(visitor: KmValueParameterExtensionVisitor) {
fun accept(visitor: KmValueParameterExtension) {
require(visitor is KlibValueParameterExtensionVisitor)
annotations.forEach(visitor::visitAnnotation)
}
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.serialization.StringTableImpl
@Suppress("DEPRECATION_ERROR")
internal class KlibMetadataExtensions : MetadataExtensions {
private fun ReadContext.getSourceFile(index: Int) =
@@ -28,7 +27,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
strings.getStringIndex(file.name)
override fun readClassExtensions(kmClass: KmClass, proto: ProtoBuf.Class, c: ReadContext) {
val extension = kmClass.visitExtensions(KlibClassExtensionVisitor.TYPE) as? KlibClassExtensionVisitor ?: return
val extension = kmClass.getExtension(KlibClassExtensionVisitor.TYPE) as? KlibClassExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.classAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -49,7 +48,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readPackageExtensions(kmPackage: KmPackage, proto: ProtoBuf.Package, c: ReadContext) {
val extension = kmPackage.visitExtensions(KlibPackageExtensionVisitor.TYPE) as? KlibPackageExtensionVisitor ?: return
val extension = kmPackage.getExtension(KlibPackageExtensionVisitor.TYPE) as? KlibPackageExtensionVisitor ?: return
proto.getExtensionOrNull(KlibMetadataProtoBuf.packageFqName)?.let {
val fqName = (c.strings as NameResolverImpl).getPackageFqName(it)
@@ -58,7 +57,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readModuleFragmentExtensions(kmModuleFragment: KmModuleFragment, proto: ProtoBuf.PackageFragment, c: ReadContext) {
val extension = kmModuleFragment.visitExtensions(KlibModuleFragmentExtensionVisitor.TYPE) as? KlibModuleFragmentExtensionVisitor ?: return
val extension = kmModuleFragment.getExtension(KlibModuleFragmentExtensionVisitor.TYPE) as? KlibModuleFragmentExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.packageFragmentFiles)
.map { c.getSourceFile(it) }
@@ -70,7 +69,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readFunctionExtensions(kmFunction: KmFunction, proto: ProtoBuf.Function, c: ReadContext) {
val extension = kmFunction.visitExtensions(KlibFunctionExtensionVisitor.TYPE) as? KlibFunctionExtensionVisitor ?: return
val extension = kmFunction.getExtension(KlibFunctionExtensionVisitor.TYPE) as? KlibFunctionExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.functionAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -85,7 +84,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readPropertyExtensions(kmProperty: KmProperty, proto: ProtoBuf.Property, c: ReadContext) {
val extension = kmProperty.visitExtensions(KlibPropertyExtensionVisitor.TYPE) as? KlibPropertyExtensionVisitor ?: return
val extension = kmProperty.getExtension(KlibPropertyExtensionVisitor.TYPE) as? KlibPropertyExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.propertyAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -106,7 +105,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readConstructorExtensions(kmConstructor: KmConstructor, proto: ProtoBuf.Constructor, c: ReadContext) {
val extension = kmConstructor.visitExtensions(KlibConstructorExtensionVisitor.TYPE) as? KlibConstructorExtensionVisitor ?: return
val extension = kmConstructor.getExtension(KlibConstructorExtensionVisitor.TYPE) as? KlibConstructorExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.constructorAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -117,7 +116,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readTypeParameterExtensions(kmTypeParameter: KmTypeParameter, proto: ProtoBuf.TypeParameter, c: ReadContext) {
val extension = kmTypeParameter.visitExtensions(KlibTypeParameterExtensionVisitor.TYPE) as? KlibTypeParameterExtensionVisitor ?: return
val extension = kmTypeParameter.getExtension(KlibTypeParameterExtensionVisitor.TYPE) as? KlibTypeParameterExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.typeParameterAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -128,7 +127,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readTypeExtensions(kmType: KmType, proto: ProtoBuf.Type, c: ReadContext) {
val extension = kmType.visitExtensions(KlibTypeExtensionVisitor.TYPE) as? KlibTypeExtensionVisitor ?: return
val extension = kmType.getExtension(KlibTypeExtensionVisitor.TYPE) as? KlibTypeExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.typeAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -136,7 +135,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readTypeAliasExtensions(kmTypeAlias: KmTypeAlias, proto: ProtoBuf.TypeAlias, c: ReadContext) {
val extension = kmTypeAlias.visitExtensions(KlibTypeAliasExtensionVisitor.TYPE) as? KlibTypeAliasExtensionVisitor ?: return
val extension = kmTypeAlias.getExtension(KlibTypeAliasExtensionVisitor.TYPE) as? KlibTypeAliasExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.typeAliasUniqId).let { descriptorUniqId ->
extension.visitUniqId(descriptorUniqId.readUniqId())
@@ -144,7 +143,7 @@ internal class KlibMetadataExtensions : MetadataExtensions {
}
override fun readValueParameterExtensions(kmValueParameter: KmValueParameter, proto: ProtoBuf.ValueParameter, c: ReadContext) {
val extension = kmValueParameter.visitExtensions(KlibValueParameterExtensionVisitor.TYPE) as? KlibValueParameterExtensionVisitor ?: return
val extension = kmValueParameter.getExtension(KlibValueParameterExtensionVisitor.TYPE) as? KlibValueParameterExtensionVisitor ?: return
proto.getExtension(KlibMetadataProtoBuf.parameterAnnotation).forEach { annotation ->
extension.visitAnnotation(annotation.readAnnotation(c.strings))
@@ -2,14 +2,12 @@
* Copyright 2010-2024 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.
*/
@file:Suppress("DEPRECATION_ERROR") // Extension visitors
package kotlinx.metadata.klib
import kotlin.metadata.*
import kotlin.metadata.internal.common.KmModuleFragmentExtensionVisitor
import kotlin.metadata.internal.extensions.*
abstract class KlibFunctionExtensionVisitor : KmFunctionExtensionVisitor {
abstract class KlibFunctionExtensionVisitor : KmFunctionExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)
@@ -25,7 +23,7 @@ abstract class KlibFunctionExtensionVisitor : KmFunctionExtensionVisitor {
}
}
abstract class KlibClassExtensionVisitor : KmClassExtensionVisitor {
abstract class KlibClassExtensionVisitor : KmClassExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)
@@ -43,7 +41,7 @@ abstract class KlibClassExtensionVisitor : KmClassExtensionVisitor {
}
}
abstract class KlibTypeExtensionVisitor : KmTypeExtensionVisitor {
abstract class KlibTypeExtensionVisitor : KmTypeExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)
@@ -55,7 +53,7 @@ abstract class KlibTypeExtensionVisitor : KmTypeExtensionVisitor {
}
}
abstract class KlibPropertyExtensionVisitor : KmPropertyExtensionVisitor {
abstract class KlibPropertyExtensionVisitor : KmPropertyExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)
@@ -77,7 +75,7 @@ abstract class KlibPropertyExtensionVisitor : KmPropertyExtensionVisitor {
}
}
abstract class KlibConstructorExtensionVisitor : KmConstructorExtensionVisitor {
abstract class KlibConstructorExtensionVisitor : KmConstructorExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)
@@ -91,7 +89,7 @@ abstract class KlibConstructorExtensionVisitor : KmConstructorExtensionVisitor {
}
}
abstract class KlibTypeParameterExtensionVisitor : KmTypeParameterExtensionVisitor {
abstract class KlibTypeParameterExtensionVisitor : KmTypeParameterExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)
@@ -105,7 +103,7 @@ abstract class KlibTypeParameterExtensionVisitor : KmTypeParameterExtensionVisit
}
}
abstract class KlibPackageExtensionVisitor : KmPackageExtensionVisitor {
abstract class KlibPackageExtensionVisitor : KmPackageExtension {
abstract fun visitFqName(name: String)
@@ -117,7 +115,7 @@ abstract class KlibPackageExtensionVisitor : KmPackageExtensionVisitor {
}
}
abstract class KlibModuleFragmentExtensionVisitor : KmModuleFragmentExtensionVisitor {
abstract class KlibModuleFragmentExtensionVisitor : KmModuleFragmentExtension {
abstract fun visitFile(file: KlibSourceFile)
@@ -133,7 +131,7 @@ abstract class KlibModuleFragmentExtensionVisitor : KmModuleFragmentExtensionVis
}
}
abstract class KlibTypeAliasExtensionVisitor : KmTypeAliasExtensionVisitor {
abstract class KlibTypeAliasExtensionVisitor : KmTypeAliasExtension {
abstract fun visitUniqId(uniqId: UniqId)
@@ -145,7 +143,7 @@ abstract class KlibTypeAliasExtensionVisitor : KmTypeAliasExtensionVisitor {
}
}
abstract class KlibValueParameterExtensionVisitor : KmValueParameterExtensionVisitor {
abstract class KlibValueParameterExtensionVisitor : KmValueParameterExtension {
abstract fun visitAnnotation(annotation: KmAnnotation)