Use standard @Deprecated in place of special opt-in annotation

Remove @DeprecatedVisitor
This commit is contained in:
Leonid Startsev
2022-09-26 16:46:46 +02:00
committed by Space Team
parent c4d409608c
commit 474ef921d8
22 changed files with 284 additions and 261 deletions
@@ -2,6 +2,7 @@
* Copyright 2010-2018 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")
package kotlinx.metadata.jvm
@@ -37,7 +38,6 @@ sealed class KotlinClassMetadata(val header: Metadata) {
/**
* Visits metadata of this class with a new [KmClass] instance and returns that instance.
*/
@OptIn(DeprecatedVisitor::class)
fun toKmClass(): KmClass =
KmClass().apply(this::accept)
@@ -46,7 +46,7 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*
* @param v the visitor that must visit this class
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(v: KmClassVisitor) {
val (strings, proto) = classData
proto.accept(v, strings)
@@ -55,10 +55,9 @@ sealed class KotlinClassMetadata(val header: Metadata) {
/**
* A [KmClassVisitor] that generates the metadata of a Kotlin class.
*/
@OptIn(DeprecatedVisitor::class)
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeClass(kmClass, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
writerApiMessage,
ReplaceWith("KotlinClassMetadata.writeClass(kmClass, metadataVersion, extraInt)"),
)
class Writer : ClassWriter(JvmStringTable()) {
/**
@@ -71,8 +70,8 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*/
@JvmOverloads
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeClass(kmClass, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
writerApiMessage,
ReplaceWith("KotlinClassMetadata.writeClass(kmClass, metadataVersion, extraInt)"),
)
fun write(
metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
@@ -99,7 +98,6 @@ sealed class KotlinClassMetadata(val header: Metadata) {
/**
* Visits metadata of this file facade with a new [KmPackage] instance and returns that instance.
*/
@OptIn(DeprecatedVisitor::class)
fun toKmPackage(): KmPackage =
KmPackage().apply(this::accept)
@@ -108,7 +106,7 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*
* @param v the visitor that must visit this file facade
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(v: KmPackageVisitor) {
val (strings, proto) = packageData
proto.accept(v, strings)
@@ -117,10 +115,9 @@ sealed class KotlinClassMetadata(val header: Metadata) {
/**
* A [KmPackageVisitor] that generates the metadata of a Kotlin file facade.
*/
@OptIn(DeprecatedVisitor::class)
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeFileFacade(kmPackage, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
visitorApiMessage,
ReplaceWith("KotlinClassMetadata.writeFileFacade(kmPackage, metadataVersion, extraInt)")
)
class Writer : PackageWriter(JvmStringTable()) {
/**
@@ -133,8 +130,8 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*/
@JvmOverloads
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeFileFacade(kmPackage, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
visitorApiMessage,
ReplaceWith("KotlinClassMetadata.writeFileFacade(kmPackage, metadataVersion, extraInt)")
)
fun write(
metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
@@ -164,7 +161,6 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*
* Returns `null` if this synthetic class does not represent a lambda.
*/
@OptIn(DeprecatedVisitor::class)
fun toKmLambda(): KmLambda? =
if (isLambda) KmLambda().apply(this::accept) else null
@@ -182,7 +178,7 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*
* @param v the visitor that must visit this lambda
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(v: KmLambdaVisitor) {
if (!isLambda) throw IllegalStateException(
"accept(KmLambdaVisitor) is only possible for synthetic classes which are lambdas (isLambda = true)"
@@ -197,11 +193,9 @@ sealed class KotlinClassMetadata(val header: Metadata) {
* call [Writer.visitFunction] and [Writer.visitEnd] on a newly created instance of this writer. If these methods are not called,
* the resulting metadata will represent a _non-lambda_ synthetic class.
*/
@OptIn(DeprecatedVisitor::class)
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeLambda(kmLambda, metadataVersion, extraInt) " +
"Visitor API is deprecated as excessive and cumbersome. Please use KotlinClassMetadata.writeLambda(kmLambda, metadataVersion, extraInt) " +
"or KotlinClassMetadata.writeSyntheticClass(metadataVersion, extraInt) for a non-lambda synthetic class",
level = DeprecationLevel.ERROR
)
class Writer : LambdaWriter(JvmStringTable()) {
/**
@@ -213,9 +207,8 @@ sealed class KotlinClassMetadata(val header: Metadata) {
* 0 by default
*/
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeLambda(kmLambda, metadataVersion, extraInt) " +
"Visitor API is deprecated as excessive and cumbersome. Please use KotlinClassMetadata.writeLambda(kmLambda, metadataVersion, extraInt) " +
"or KotlinClassMetadata.writeSyntheticClass(metadataVersion, extraInt) for a non-lambda synthetic class",
level = DeprecationLevel.ERROR
)
@JvmOverloads
fun write(
@@ -248,8 +241,8 @@ sealed class KotlinClassMetadata(val header: Metadata) {
* A writer that generates the metadata of a multi-file class facade.
*/
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeMultiFileClassFacade(partClassNames, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
writerApiMessage,
ReplaceWith("KotlinClassMetadata.writeMultiFileClassFacade(partClassNames, metadataVersion, extraInt)"),
)
class Writer {
/**
@@ -262,9 +255,8 @@ sealed class KotlinClassMetadata(val header: Metadata) {
* 0 by default
*/
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeMultiFileClassFacade(partClassNames, metadataVersion, extraInt)",
writerApiMessage,
ReplaceWith("KotlinClassMetadata.writeMultiFileClassFacade(partClassNames, metadataVersion, extraInt)"),
level = DeprecationLevel.ERROR
)
@JvmOverloads
fun write(
@@ -304,7 +296,6 @@ sealed class KotlinClassMetadata(val header: Metadata) {
/**
* Visits metadata of this multi-file class part with a new [KmPackage] instance and returns that instance.
*/
@OptIn(DeprecatedVisitor::class)
fun toKmPackage(): KmPackage =
KmPackage().apply(this::accept)
@@ -313,7 +304,7 @@ sealed class KotlinClassMetadata(val header: Metadata) {
*
* @param v the visitor that must visit this multi-file class part
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(v: KmPackageVisitor) {
val (strings, proto) = packageData
proto.accept(v, strings)
@@ -322,10 +313,9 @@ sealed class KotlinClassMetadata(val header: Metadata) {
/**
* A [KmPackageVisitor] that generates the metadata of a multi-file class part.
*/
@OptIn(DeprecatedVisitor::class)
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeMultiFileClassPart(kmPackage, facadeClassName, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
writerApiMessage,
ReplaceWith("KotlinClassMetadata.writeMultiFileClassPart(kmPackage, facadeClassName, metadataVersion, extraInt)")
)
class Writer : PackageWriter(JvmStringTable()) {
/**
@@ -338,8 +328,8 @@ sealed class KotlinClassMetadata(val header: Metadata) {
* 0 by default
*/
@Deprecated(
"Writer API is deprecated. Please use KotlinClassMetadata.writeMultiFileClassPart(kmPackage, facadeClassName, metadataVersion, extraInt)",
level = DeprecationLevel.ERROR
writerApiMessage,
ReplaceWith("KotlinClassMetadata.writeMultiFileClassPart(kmPackage, facadeClassName, metadataVersion, extraInt)")
)
@JvmOverloads
fun write(
@@ -364,47 +354,84 @@ sealed class KotlinClassMetadata(val header: Metadata) {
class Unknown internal constructor(header: Metadata) : KotlinClassMetadata(header)
companion object {
// TODO: docs
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION_ERROR")
/**
* Writes contents of [kmClass] as the class metadata.
*
* @param metadataVersion metadata version to be written to the metadata (see [KotlinClassHeader.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default. Cannot be less (lexicographically) than `[1, 4]`
* @param extraInt the value of the class-level flags to be written to the metadata (see [KotlinClassHeader.extraInt]),
* 0 by default
*/
fun writeClass(
kmClass: KmClass,
metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
extraInt: Int = 0
): Class = KotlinClassMetadata.Class.Writer().also { kmClass.accept(it) }.write(metadataVersion, extraInt)
): Class = Class.Writer().also { kmClass.accept(it) }.write(metadataVersion, extraInt)
// TODO: docs
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION_ERROR")
/**
* Writes [kmPackage] contents as the file facade metadata.
*
* @param metadataVersion metadata version to be written to the metadata (see [KotlinClassHeader.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default. Cannot be less (lexicographically) than `[1, 4]`
* @param extraInt the value of the class-level flags to be written to the metadata (see [KotlinClassHeader.extraInt]),
* 0 by default
*/
fun writeFileFacade(
kmPackage: KmPackage,
metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
extraInt: Int = 0
): FileFacade = FileFacade.Writer().also { kmPackage.accept(it) }.write(metadataVersion, extraInt)
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION_ERROR")
/**
* Writes [kmLambda] as the synthetic class metadata.
*
* @param metadataVersion metadata version to be written to the metadata (see [KotlinClassHeader.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default. Cannot be less (lexicographically) than `[1, 4]`
* @param extraInt the value of the class-level flags to be written to the metadata (see [KotlinClassHeader.extraInt]),
* 0 by default
*/
fun writeLambda(
kmLambda: KmLambda,
metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
extraInt: Int = 0
): SyntheticClass = SyntheticClass.Writer().also { kmLambda.accept(it) }.write(metadataVersion, extraInt)
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION_ERROR")
/**
* Writes synthetic class metadata.
*
* @param metadataVersion metadata version to be written to the metadata (see [KotlinClassHeader.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default. Cannot be less (lexicographically) than `[1, 4]`
* @param extraInt the value of the class-level flags to be written to the metadata (see [KotlinClassHeader.extraInt]),
* 0 by default
*/
fun writeSyntheticClass(
metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
extraInt: Int = 0
): SyntheticClass = SyntheticClass.Writer().write(metadataVersion, extraInt)
@Suppress("DEPRECATION_ERROR")
/**
* Writes metadata of the multi-file class facade.
*
* @param partClassNames JVM internal names of the part classes which this multi-file class combines
* @param metadataVersion metadata version to be written to the metadata (see [KotlinClassHeader.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default. Cannot be less (lexicographically) than `[1, 4]`
* @param extraInt the value of the class-level flags to be written to the metadata (see [KotlinClassHeader.extraInt]),
* 0 by default
*/
fun writeMultiFileClassFacade(
partClassNames: List<String>, metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION,
extraInt: Int = 0
): MultiFileClassFacade = MultiFileClassFacade.Writer().write(partClassNames, metadataVersion, extraInt)
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION_ERROR")
/**
* Writes the metadata of the multi-file class part.
*
* @param facadeClassName JVM internal name of the corresponding multi-file class facade
* @param metadataVersion metadata version to be written to the metadata (see [KotlinClassHeader.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default. Cannot be less (lexicographically) than `[1, 4]`
* @param extraInt the value of the class-level flags to be written to the metadata (see [KotlinClassHeader.extraInt]),
* 0 by default
*/
fun writeMultiFileClassPart(
kmPackage: KmPackage,
facadeClassName: String,
@@ -503,3 +530,9 @@ sealed class KotlinClassMetadata(val header: Metadata) {
val COMPATIBLE_METADATA_VERSION = JvmMetadataVersion.INSTANCE.toArray().copyOf()
}
}
internal const val visitorApiMessage =
"Visitor API is deprecated as excessive and cumbersome. Please use nodes (such as KmClass) and their properties."
internal const val writerApiMessage =
"Visitor API is deprecated as excessive and cumbersome. Please use companion functions on KotlinClassMetadata, such as KotlinClassMetadata.writeClass."
@@ -3,7 +3,7 @@
* 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("MemberVisibilityCanBePrivate")
@file:Suppress("MemberVisibilityCanBePrivate", "DEPRECATION")
package kotlinx.metadata.jvm
@@ -23,8 +23,6 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.serializeToByteArray
* and call [KotlinModuleMetadata.read].
*
* @property bytes the byte array representing the contents of a `.kotlin_module` file
*
* TODO: since it is not completed, may be we should just delete it?
*/
class KotlinModuleMetadata(@Suppress("CanBeParameter", "MemberVisibilityCanBePrivate") val bytes: ByteArray) {
internal val data: ModuleMapping = ModuleMapping.loadModuleMapping(
@@ -36,15 +34,13 @@ class KotlinModuleMetadata(@Suppress("CanBeParameter", "MemberVisibilityCanBePri
/**
* Visits metadata of this module with a new [KmModule] instance and returns that instance.
*/
@OptIn(DeprecatedVisitor::class)
fun toKmModule(): KmModule =
KmModule().apply(this::accept)
/**
* A [KmModuleVisitor] that generates the metadata of a Kotlin JVM module file.
*/
@OptIn(DeprecatedVisitor::class)
@Deprecated("Writer class API is deprecated. Please use KotlinModuleMetadata.write(kmModule, metadataVersion)", level = DeprecationLevel.ERROR)
@Deprecated("Writer API is deprecated as excessive and cumbersome. Please use KotlinModuleMetadata.write(kmModule, metadataVersion)")
class Writer : KmModuleVisitor() {
private val b = JvmModuleProtoBuf.Module.newBuilder()
@@ -87,7 +83,7 @@ class KotlinModuleMetadata(@Suppress("CanBeParameter", "MemberVisibilityCanBePri
* @param metadataVersion metadata version to be written to the metadata (see [Metadata.metadataVersion]),
* [KotlinClassMetadata.COMPATIBLE_METADATA_VERSION] by default
*/
@Deprecated("Writer class API is deprecated. Please use KotlinModuleMetadata.write(kmModule, metadataVersion)", level = DeprecationLevel.ERROR)
@Deprecated("Writer API is deprecated as excessive and cumbersome. Please use KotlinModuleMetadata.write(kmModule, metadataVersion)")
fun write(metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION): KotlinModuleMetadata =
KotlinModuleMetadata(b.build().serializeToByteArray(JvmMetadataVersion(*metadataVersion), 0))
}
@@ -97,7 +93,7 @@ class KotlinModuleMetadata(@Suppress("CanBeParameter", "MemberVisibilityCanBePri
*
* @param v the visitor that must visit this module file
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(v: KmModuleVisitor) {
for ((fqName, parts) in data.packageFqName2Parts) {
val (fileFacades, multiFileClassParts) = parts.parts.partition { parts.getMultifileFacadeName(it) == null }
@@ -143,9 +139,9 @@ class KotlinModuleMetadata(@Suppress("CanBeParameter", "MemberVisibilityCanBePri
}
}
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION_ERROR")
fun write(kmModule: KmModule, metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION): KotlinModuleMetadata = Writer().also { kmModule.accept(it) }.write(metadataVersion)
// TODO: docs
fun write(kmModule: KmModule, metadataVersion: IntArray = COMPATIBLE_METADATA_VERSION): KotlinModuleMetadata =
Writer().also { kmModule.accept(it) }.write(metadataVersion)
}
}
@@ -154,7 +150,7 @@ class KotlinModuleMetadata(@Suppress("CanBeParameter", "MemberVisibilityCanBePri
*
* When using this class, [visitEnd] must be called exactly once and after calls to all other visit* methods.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
abstract class KmModuleVisitor(private val delegate: KmModuleVisitor? = null) {
/**
* Visits the table of all single- and multi-file facades declared in some package of this module.
@@ -203,7 +199,6 @@ abstract class KmModuleVisitor(private val delegate: KmModuleVisitor? = null) {
/**
* Represents a Kotlin JVM module file.
*/
@OptIn(DeprecatedVisitor::class)
class KmModule : KmModuleVisitor() {
/**
* Table of all single- and multi-file facades declared in some package of this module, where keys are '.'-separated package names.
@@ -225,17 +220,17 @@ class KmModule : KmModuleVisitor() {
*/
val optionalAnnotationClasses: MutableList<KmClass> = ArrayList(0)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitPackageParts(fqName: String, fileFacades: List<String>, multiFileClassParts: Map<String, String>) {
packageParts[fqName] = KmPackageParts(fileFacades.toMutableList(), multiFileClassParts.toMutableMap())
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitAnnotation(annotation: KmAnnotation) {
annotations.add(annotation)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitOptionalAnnotationClass(): KmClass =
KmClass().also(optionalAnnotationClasses::add)
@@ -244,7 +239,7 @@ class KmModule : KmModuleVisitor() {
*
* @param visitor the visitor which will visit data in this module.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmModuleVisitor) {
for ((fqName, parts) in packageParts) {
visitor.visitPackageParts(fqName, parts.fileFacades, parts.multiFileClassParts)
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.metadata.deserialization.getExtensionOrNull
import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION", "DEPRECATION_ERROR")
internal class JvmMetadataExtensions : MetadataExtensions {
override fun readClassExtensions(v: KmClassVisitor, proto: ProtoBuf.Class, c: ReadContext) {
val ext = v.visitExtensions(JvmClassExtensionVisitor.TYPE) as? JvmClassExtensionVisitor ?: return
@@ -2,6 +2,7 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.jvm.impl
@@ -9,31 +10,24 @@ import kotlinx.metadata.*
import kotlinx.metadata.impl.extensions.*
import kotlinx.metadata.jvm.*
@OptIn(DeprecatedVisitor::class) // internal so OK
internal val KmClass.jvm: JvmClassExtension
get() = visitExtensions(JvmClassExtensionVisitor.TYPE) as JvmClassExtension
@OptIn(DeprecatedVisitor::class) // internal so OK
internal val KmPackage.jvm: JvmPackageExtension
get() = visitExtensions(JvmPackageExtensionVisitor.TYPE) as JvmPackageExtension
@OptIn(DeprecatedVisitor::class)
internal val KmFunction.jvm: JvmFunctionExtension
get() = visitExtensions(JvmFunctionExtensionVisitor.TYPE) as JvmFunctionExtension
@OptIn(DeprecatedVisitor::class)
internal val KmProperty.jvm: JvmPropertyExtension
get() = visitExtensions(JvmPropertyExtensionVisitor.TYPE) as JvmPropertyExtension
@OptIn(DeprecatedVisitor::class)
internal val KmConstructor.jvm: JvmConstructorExtension
get() = visitExtensions(JvmConstructorExtensionVisitor.TYPE) as JvmConstructorExtension
@OptIn(DeprecatedVisitor::class)
internal val KmTypeParameter.jvm: JvmTypeParameterExtension
get() = visitExtensions(JvmTypeParameterExtensionVisitor.TYPE) as JvmTypeParameterExtension
@OptIn(DeprecatedVisitor::class)
internal val KmType.jvm: JvmTypeExtension
get() = visitExtensions(JvmTypeExtensionVisitor.TYPE) as JvmTypeExtension
@@ -44,7 +38,6 @@ internal class JvmClassExtension : JvmClassExtensionVisitor(), KmClassExtension
var anonymousObjectOriginName: String? = null
var jvmFlags: Flags = 0
@OptIn(DeprecatedVisitor::class) // TODO
override fun visitLocalDelegatedProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor =
KmProperty(flags, name, getterFlags, setterFlags).also { localDelegatedProperties.add(it) }
@@ -63,7 +56,6 @@ internal class JvmClassExtension : JvmClassExtensionVisitor(), KmClassExtension
override fun accept(visitor: KmClassExtensionVisitor) {
require(visitor is JvmClassExtensionVisitor)
localDelegatedProperties.forEach {
@OptIn(DeprecatedVisitor::class) // TODO
visitor.visitLocalDelegatedProperty(it.flags, it.name, it.getterFlags, it.setterFlags)?.let(it::accept)
}
moduleName?.let(visitor::visitModuleName)
@@ -73,7 +65,6 @@ internal class JvmClassExtension : JvmClassExtensionVisitor(), KmClassExtension
}
}
@OptIn(DeprecatedVisitor::class) // TODO
internal class JvmPackageExtension : JvmPackageExtensionVisitor(), KmPackageExtension {
val localDelegatedProperties: MutableList<KmProperty> = ArrayList(0)
var moduleName: String? = null
@@ -2,6 +2,7 @@
* Copyright 2010-2018 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")
package kotlinx.metadata.jvm
@@ -11,6 +12,7 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
/**
* A visitor containing the common code to visit JVM extensions for Kotlin declaration containers, such as classes and package fragments.
*/
@Deprecated(visitorApiMessage)
abstract class JvmDeclarationContainerExtensionVisitor @JvmOverloads constructor(
protected open val delegate: JvmDeclarationContainerExtensionVisitor? = null
) : KmDeclarationContainerExtensionVisitor {
@@ -30,7 +32,6 @@ abstract class JvmDeclarationContainerExtensionVisitor @JvmOverloads constructor
* @param setterFlags property accessor flags, consisting of [Flag.HAS_ANNOTATIONS], visibility flag, modality flag
* and [Flag.PropertyAccessor] flags
*/
@OptIn(DeprecatedVisitor::class) // TODO
open fun visitLocalDelegatedProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor? =
delegate?.visitLocalDelegatedProperty(flags, name, getterFlags, setterFlags)
@@ -45,6 +46,7 @@ abstract class JvmDeclarationContainerExtensionVisitor @JvmOverloads constructor
/**
* A visitor to visit JVM extensions for a class.
*/
@Deprecated(visitorApiMessage)
open class JvmClassExtensionVisitor @JvmOverloads constructor(
delegate: JvmClassExtensionVisitor? = null
) : KmClassExtensionVisitor, JvmDeclarationContainerExtensionVisitor(delegate) {
@@ -90,6 +92,7 @@ open class JvmClassExtensionVisitor @JvmOverloads constructor(
/**
* A visitor to visit JVM extensions for a package fragment.
*/
@Deprecated(visitorApiMessage)
open class JvmPackageExtensionVisitor @JvmOverloads constructor(
delegate: JvmPackageExtensionVisitor? = null
) : KmPackageExtensionVisitor, JvmDeclarationContainerExtensionVisitor(delegate) {
@@ -120,6 +123,7 @@ open class JvmPackageExtensionVisitor @JvmOverloads constructor(
/**
* A visitor to visit JVM extensions for a function.
*/
@Deprecated(visitorApiMessage)
open class JvmFunctionExtensionVisitor @JvmOverloads constructor(
private val delegate: JvmFunctionExtensionVisitor? = null
) : KmFunctionExtensionVisitor {
@@ -166,6 +170,7 @@ open class JvmFunctionExtensionVisitor @JvmOverloads constructor(
/**
* A visitor to visit JVM extensions for a property.
*/
@Deprecated(visitorApiMessage)
open class JvmPropertyExtensionVisitor @JvmOverloads constructor(
private val delegate: JvmPropertyExtensionVisitor? = null
) : KmPropertyExtensionVisitor {
@@ -254,6 +259,7 @@ open class JvmPropertyExtensionVisitor @JvmOverloads constructor(
/**
* A visitor to visit JVM extensions for a constructor.
*/
@Deprecated(visitorApiMessage)
open class JvmConstructorExtensionVisitor @JvmOverloads constructor(
private val delegate: JvmConstructorExtensionVisitor? = null
) : KmConstructorExtensionVisitor {
@@ -285,6 +291,7 @@ open class JvmConstructorExtensionVisitor @JvmOverloads constructor(
/**
* A visitor to visit JVM extensions for a type parameter.
*/
@Deprecated(visitorApiMessage)
open class JvmTypeParameterExtensionVisitor @JvmOverloads constructor(
private val delegate: JvmTypeParameterExtensionVisitor? = null
) : KmTypeParameterExtensionVisitor {
@@ -321,6 +328,7 @@ open class JvmTypeParameterExtensionVisitor @JvmOverloads constructor(
/**
* A visitor to visit JVM extensions for a type.
*/
@Deprecated(visitorApiMessage)
open class JvmTypeExtensionVisitor @JvmOverloads constructor(
private val delegate: JvmTypeExtensionVisitor? = null
) : KmTypeExtensionVisitor {
@@ -366,6 +374,6 @@ open class JvmTypeExtensionVisitor @JvmOverloads constructor(
*
* @see KmTypeVisitor.visitFlexibleTypeUpperBound
*/
const val PLATFORM_TYPE_ID = JvmProtoBufUtil.PLATFORM_TYPE_ID
const val PLATFORM_TYPE_ID = JvmProtoBufUtil.PLATFORM_TYPE_ID // TODO: move out of deprecated visitor
}
}
@@ -15,7 +15,7 @@ import kotlin.coroutines.CoroutineContext
import kotlin.reflect.full.primaryConstructor
import kotlin.test.*
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class MetadataSmokeTest {
private fun Class<*>.readMetadata(): Metadata {
return getAnnotation(Metadata::class.java)
@@ -2,10 +2,10 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.klib
import kotlinx.metadata.DeprecatedVisitor
import kotlinx.metadata.KmAnnotation
import kotlinx.metadata.KmModuleFragment
import kotlinx.metadata.impl.WriteContext
@@ -79,7 +79,6 @@ class KlibModuleMetadata(
* Deserializes metadata from the given [library].
* @param readStrategy specifies the way module fragments of a single package are modified (e.g. merged) after deserialization.
*/
@OptIn(DeprecatedVisitor::class)
fun read(
library: MetadataLibraryProvider,
readStrategy: KlibModuleFragmentReadStrategy = KlibModuleFragmentReadStrategy.DEFAULT
@@ -103,7 +102,6 @@ class KlibModuleMetadata(
* Writes metadata back to serialized representation.
* @param writeStrategy specifies the way module fragments are modified (e.g. split) before serialization.
*/
@OptIn(DeprecatedVisitor::class)
fun write(
writeStrategy: KlibModuleFragmentWriteStrategy = KlibModuleFragmentWriteStrategy.DEFAULT
): SerializedKlibMetadata {
@@ -2,6 +2,7 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.klib.impl
@@ -9,43 +10,33 @@ import kotlinx.metadata.*
import kotlinx.metadata.impl.extensions.*
import kotlinx.metadata.klib.*
@OptIn(DeprecatedVisitor::class)
internal val KmFunction.klibExtensions: KlibFunctionExtension
get() = visitExtensions(KlibFunctionExtensionVisitor.TYPE) as KlibFunctionExtension
@OptIn(DeprecatedVisitor::class)
internal val KmClass.klibExtensions: KlibClassExtension
get() = visitExtensions(KlibClassExtensionVisitor.TYPE) as KlibClassExtension
@OptIn(DeprecatedVisitor::class)
internal val KmType.klibExtensions: KlibTypeExtension
get() = visitExtensions(KlibTypeExtensionVisitor.TYPE) as KlibTypeExtension
@OptIn(DeprecatedVisitor::class)
internal val KmProperty.klibExtensions: KlibPropertyExtension
get() = visitExtensions(KlibPropertyExtensionVisitor.TYPE) as KlibPropertyExtension
@OptIn(DeprecatedVisitor::class)
internal val KmConstructor.klibExtensions: KlibConstructorExtension
get() = visitExtensions(KlibConstructorExtensionVisitor.TYPE) as KlibConstructorExtension
@OptIn(DeprecatedVisitor::class)
internal val KmTypeParameter.klibExtensions: KlibTypeParameterExtension
get() = visitExtensions(KlibTypeParameterExtensionVisitor.TYPE) as KlibTypeParameterExtension
@OptIn(DeprecatedVisitor::class)
internal val KmPackage.klibExtensions: KlibPackageExtension
get() = visitExtensions(KlibPackageExtensionVisitor.TYPE) as KlibPackageExtension
@OptIn(DeprecatedVisitor::class)
internal val KmModuleFragment.klibExtensions: KlibModuleFragmentExtension
get() = visitExtensions(KlibModuleFragmentExtensionVisitor.TYPE) as KlibModuleFragmentExtension
@OptIn(DeprecatedVisitor::class)
internal val KmTypeAlias.klibExtensions: KlibTypeAliasExtension
get() = visitExtensions(KlibTypeAliasExtensionVisitor.TYPE) as KlibTypeAliasExtension
@OptIn(DeprecatedVisitor::class)
internal val KmValueParameter.klibExtensions: KlibValueParameterExtension
get() = visitExtensions(KlibValueParameterExtensionVisitor.TYPE) as KlibValueParameterExtension
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.serialization.StringTableImpl
@OptIn(DeprecatedVisitor::class) // TODO
@Suppress("DEPRECATION", "DEPRECATION_ERROR")
internal class KlibMetadataExtensions : MetadataExtensions {
private fun ReadContext.getSourceFile(index: Int) =
@@ -2,10 +2,10 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.klib.impl
import kotlinx.metadata.DeprecatedVisitor
import kotlinx.metadata.impl.*
import kotlinx.metadata.klib.KlibSourceFile
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
@@ -26,7 +26,6 @@ class ReverseSourceFileIndexWriteExtension : WriteContextExtension {
}
}
@DeprecatedVisitor
class KlibModuleFragmentWriter(
stringTable: ApproximatingStringTable,
contextExtensions: List<WriteContextExtension> = emptyList()
@@ -2,6 +2,7 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.klib
@@ -2,6 +2,7 @@
* Copyright 2010-2018 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")
package kotlinx.metadata
@@ -42,6 +43,7 @@ class KmExtensionType(private val klass: KClass<out KmExtensionVisitor>) {
/**
* A base interface for all extension visitors.
*/
@Deprecated(visitorApiMessage)
interface KmExtensionVisitor {
/**
* Type of this extension visitor.
@@ -52,54 +54,65 @@ interface KmExtensionVisitor {
/**
* A visitor to visit platform-specific extensions for a declaration container, such as a class or a package fragment.
*/
@Deprecated(visitorApiMessage)
interface KmDeclarationContainerExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a class.
*/
@Deprecated(visitorApiMessage)
interface KmClassExtensionVisitor : KmDeclarationContainerExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a package fragment.
*/
@Deprecated(visitorApiMessage)
interface KmPackageExtensionVisitor : KmDeclarationContainerExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a module fragment.
*/
@Deprecated(visitorApiMessage)
interface KmModuleFragmentExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a function.
*/
@Deprecated(visitorApiMessage)
interface KmFunctionExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a property.
*/
@Deprecated(visitorApiMessage)
interface KmPropertyExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a constructor.
*/
@Deprecated(visitorApiMessage)
interface KmConstructorExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a type parameter.
*/
@Deprecated(visitorApiMessage)
interface KmTypeParameterExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a type.
*/
@Deprecated(visitorApiMessage)
interface KmTypeExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a type alias.
*/
@Deprecated(visitorApiMessage)
interface KmTypeAliasExtensionVisitor : KmExtensionVisitor
/**
* A visitor to visit platform-specific extensions for a value parameter.
*/
@Deprecated(visitorApiMessage)
interface KmValueParameterExtensionVisitor : KmExtensionVisitor
@@ -11,7 +11,8 @@ import kotlinx.metadata.impl.WriteContext
import org.jetbrains.kotlin.metadata.ProtoBuf
import java.util.*
@OptIn(DeprecatedVisitor::class) // TODO: all this should be refactored to entities, not visitors
// TODO: this intrerface should be marked with @InternalAPI or something
@Suppress("DEPRECATION", "DEPRECATION_ERROR")
interface MetadataExtensions {
fun readClassExtensions(v: KmClassVisitor, proto: ProtoBuf.Class, c: ReadContext)
@@ -2,6 +2,7 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.impl.extensions
@@ -2,7 +2,7 @@
* Copyright 2010-2019 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")
package kotlinx.metadata.impl.extensions
import kotlinx.metadata.KmExtensionType
@@ -2,6 +2,7 @@
* Copyright 2010-2018 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")
package kotlinx.metadata.impl
@@ -47,7 +48,8 @@ class ReadContext(
}
}
@OptIn(DeprecatedVisitor::class, ExperimentalContextReceivers::class) // TODO
@Deprecated(visitorApiMessage)
@OptIn(ExperimentalContextReceivers::class)
fun ProtoBuf.Class.accept(
v: KmClassVisitor,
strings: NameResolver,
@@ -129,7 +131,7 @@ private fun ProtoBuf.Class.loadInlineClassUnderlyingType(c: ReadContext): ProtoB
?.returnType(c.types)
}
@OptIn(DeprecatedVisitor::class) // TODO
@Deprecated(visitorApiMessage)
fun ProtoBuf.Package.accept(
v: KmPackageVisitor,
strings: NameResolver,
@@ -151,7 +153,7 @@ fun ProtoBuf.Package.accept(
v.visitEnd()
}
@OptIn(DeprecatedVisitor::class) // TODO
@Deprecated(visitorApiMessage)
fun ProtoBuf.PackageFragment.accept(
v: KmModuleFragmentVisitor,
strings: NameResolver,
@@ -177,7 +179,6 @@ fun ProtoBuf.PackageFragment.accept(
v.visitEnd()
}
@OptIn(DeprecatedVisitor::class) // TODO
private fun KmDeclarationContainerVisitor.visitDeclarations(
functions: List<ProtoBuf.Function>,
properties: List<ProtoBuf.Property>,
@@ -199,7 +200,7 @@ private fun KmDeclarationContainerVisitor.visitDeclarations(
}
}
@OptIn(DeprecatedVisitor::class)
@Deprecated(visitorApiMessage)
fun ProtoBuf.Function.accept(v: KmLambdaVisitor, strings: NameResolver) {
val c = ReadContext(strings, TypeTable(typeTable), VersionRequirementTable.EMPTY)
@@ -208,7 +209,7 @@ fun ProtoBuf.Function.accept(v: KmLambdaVisitor, strings: NameResolver) {
v.visitEnd()
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
private fun ProtoBuf.Constructor.accept(v: KmConstructorVisitor, c: ReadContext) {
for (parameter in valueParameterList) {
v.visitValueParameter(parameter.flags, c[parameter.name])?.let { parameter.accept(it, c) }
@@ -225,7 +226,7 @@ private fun ProtoBuf.Constructor.accept(v: KmConstructorVisitor, c: ReadContext)
v.visitEnd()
}
@OptIn(DeprecatedVisitor::class, ExperimentalContextReceivers::class)
@OptIn(ExperimentalContextReceivers::class)
private fun ProtoBuf.Function.accept(v: KmFunctionVisitor, outer: ReadContext) {
val c = outer.withTypeParameters(typeParameterList)
@@ -265,7 +266,7 @@ private fun ProtoBuf.Function.accept(v: KmFunctionVisitor, outer: ReadContext) {
}
@OptIn(ExperimentalContextReceivers::class)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun ProtoBuf.Property.accept(v: KmPropertyVisitor, outer: ReadContext) {
val c = outer.withTypeParameters(typeParameterList)
@@ -301,7 +302,6 @@ fun ProtoBuf.Property.accept(v: KmPropertyVisitor, outer: ReadContext) {
v.visitEnd()
}
@DeprecatedVisitor
private fun ProtoBuf.TypeAlias.accept(v: KmTypeAliasVisitor, outer: ReadContext) {
val c = outer.withTypeParameters(typeParameterList)
@@ -332,7 +332,6 @@ private fun ProtoBuf.TypeAlias.accept(v: KmTypeAliasVisitor, outer: ReadContext)
v.visitEnd()
}
@DeprecatedVisitor
private fun ProtoBuf.ValueParameter.accept(v: KmValueParameterVisitor, c: ReadContext) {
type(c.types).let { type ->
v.visitType(type.typeFlags)?.let { type.accept(it, c) }
@@ -348,7 +347,7 @@ private fun ProtoBuf.ValueParameter.accept(v: KmValueParameterVisitor, c: ReadCo
v.visitEnd()
}
@DeprecatedVisitor
private inline fun ProtoBuf.TypeParameter.accept(
visit: (flags: Flags, name: String, id: Int, variance: KmVariance) -> KmTypeParameterVisitor?,
c: ReadContext
@@ -362,7 +361,6 @@ private inline fun ProtoBuf.TypeParameter.accept(
visit(typeParameterFlags, c[name], id, variance)?.let { accept(it, c) }
}
@DeprecatedVisitor
private fun ProtoBuf.TypeParameter.accept(v: KmTypeParameterVisitor, c: ReadContext) {
for (upperBound in upperBounds(c.types)) {
v.visitUpperBound(upperBound.typeFlags)?.let { upperBound.accept(it, c) }
@@ -375,7 +373,6 @@ private fun ProtoBuf.TypeParameter.accept(v: KmTypeParameterVisitor, c: ReadCont
v.visitEnd()
}
@DeprecatedVisitor
private fun ProtoBuf.Type.accept(v: KmTypeVisitor, c: ReadContext) {
when {
hasClassName() -> v.visitClass(c.className(className))
@@ -430,7 +427,6 @@ private fun ProtoBuf.Type.accept(v: KmTypeVisitor, c: ReadContext) {
v.visitEnd()
}
@DeprecatedVisitor
private fun acceptVersionRequirementVisitor(id: Int, v: KmVersionRequirementVisitor, c: ReadContext) {
val message = VersionRequirement.create(id, c.strings, c.versionRequirements)
?: throw InconsistentKotlinMetadataException("No VersionRequirement with the given id in the table")
@@ -455,7 +451,6 @@ private fun acceptVersionRequirementVisitor(id: Int, v: KmVersionRequirementVisi
v.visitEnd()
}
@DeprecatedVisitor
@ExperimentalContracts
private fun ProtoBuf.Contract.accept(v: KmContractVisitor, c: ReadContext) {
for (effect in effectList) {
@@ -479,7 +474,6 @@ private fun ProtoBuf.Contract.accept(v: KmContractVisitor, c: ReadContext) {
v.visitEnd()
}
@DeprecatedVisitor
@ExperimentalContracts
private fun ProtoBuf.Effect.accept(v: KmEffectVisitor, c: ReadContext) {
for (constructorArgument in effectConstructorArgumentList) {
@@ -493,7 +487,6 @@ private fun ProtoBuf.Effect.accept(v: KmEffectVisitor, c: ReadContext) {
v.visitEnd()
}
@DeprecatedVisitor
@ExperimentalContracts
private fun ProtoBuf.Expression.accept(v: KmEffectExpressionVisitor, c: ReadContext) {
v.visit(
@@ -2,11 +2,10 @@
* Copyright 2010-2018 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")
package kotlinx.metadata.impl
import kotlinx.metadata.*
import kotlinx.metadata.impl.extensions.MetadataExtensions
import kotlinx.metadata.impl.extensions.applySingleExtension
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
@@ -30,7 +29,6 @@ open class WriteContext(val strings: StringTable, val contextExtensions: List<Wr
strings.getClassNameIndex(name)
}
@DeprecatedVisitor
private fun writeTypeParameter(
c: WriteContext, flags: Flags, name: String, id: Int, variance: KmVariance,
output: (ProtoBuf.TypeParameter.Builder) -> Unit
@@ -62,7 +60,6 @@ private fun writeTypeParameter(
}
}
@DeprecatedVisitor
private fun writeType(c: WriteContext, flags: Flags, output: (ProtoBuf.Type.Builder) -> Unit): KmTypeVisitor =
object : KmTypeVisitor() {
private val t = ProtoBuf.Type.newBuilder()
@@ -128,7 +125,6 @@ private fun writeType(c: WriteContext, flags: Flags, output: (ProtoBuf.Type.Buil
}
}
@DeprecatedVisitor
private fun writeConstructor(c: WriteContext, flags: Flags, output: (ProtoBuf.Constructor.Builder) -> Unit): KmConstructorVisitor =
object : KmConstructorVisitor() {
val t = ProtoBuf.Constructor.newBuilder()
@@ -152,7 +148,6 @@ private fun writeConstructor(c: WriteContext, flags: Flags, output: (ProtoBuf.Co
}
}
@DeprecatedVisitor
private fun writeFunction(c: WriteContext, flags: Flags, name: String, output: (ProtoBuf.Function.Builder) -> Unit): KmFunctionVisitor =
object : KmFunctionVisitor() {
val t = ProtoBuf.Function.newBuilder()
@@ -194,7 +189,7 @@ private fun writeFunction(c: WriteContext, flags: Flags, name: String, output: (
}
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun writeProperty(
c: WriteContext, flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags, output: (ProtoBuf.Property.Builder) -> Unit
): KmPropertyVisitor = object : KmPropertyVisitor() {
@@ -236,7 +231,6 @@ fun writeProperty(
}
}
@DeprecatedVisitor
private fun writeValueParameter(
c: WriteContext, flags: Flags, name: String,
output: (ProtoBuf.ValueParameter.Builder) -> Unit
@@ -263,7 +257,6 @@ private fun writeValueParameter(
}
}
@DeprecatedVisitor
private fun writeTypeAlias(
c: WriteContext, flags: Flags, name: String,
output: (ProtoBuf.TypeAlias.Builder) -> Unit
@@ -300,7 +293,6 @@ private fun writeTypeAlias(
}
}
@DeprecatedVisitor
private fun writeVersionRequirement(
c: WriteContext, output: (Int) -> Unit
): KmVersionRequirementVisitor = object : KmVersionRequirementVisitor() {
@@ -351,7 +343,6 @@ private fun writeVersionRequirement(
}
}
@DeprecatedVisitor
@ExperimentalContracts
private fun writeContract(c: WriteContext, output: (ProtoBuf.Contract.Builder) -> Unit): KmContractVisitor =
object : KmContractVisitor() {
@@ -365,7 +356,6 @@ private fun writeContract(c: WriteContext, output: (ProtoBuf.Contract.Builder) -
}
}
@DeprecatedVisitor
@ExperimentalContracts
private fun writeEffect(
c: WriteContext, type: KmEffectType, invocationKind: KmEffectInvocationKind?,
@@ -396,7 +386,6 @@ private fun writeEffect(
}
}
@DeprecatedVisitor
@ExperimentalContracts
private fun writeEffectExpression(c: WriteContext, output: (ProtoBuf.Expression.Builder) -> Unit): KmEffectExpressionVisitor =
object : KmEffectExpressionVisitor() {
@@ -434,7 +423,7 @@ private fun writeEffectExpression(c: WriteContext, output: (ProtoBuf.Expression.
}
}
@DeprecatedVisitor // TODO: this likely need to be rewritten directly or deprecated completely
@Deprecated(visitorApiMessage)
open class ClassWriter(stringTable: StringTable, contextExtensions: List<WriteContextExtension> = emptyList()) : KmClassVisitor() {
protected val t = ProtoBuf.Class.newBuilder()!!
protected val c: WriteContext = WriteContext(stringTable, contextExtensions)
@@ -508,7 +497,7 @@ open class ClassWriter(stringTable: StringTable, contextExtensions: List<WriteCo
}
}
@DeprecatedVisitor // TODO: this likely need to be rewritten directly
@Deprecated(visitorApiMessage)
open class PackageWriter(stringTable: StringTable, contextExtensions: List<WriteContextExtension> = emptyList()) : KmPackageVisitor() {
protected val t = ProtoBuf.Package.newBuilder()!!
protected val c: WriteContext = WriteContext(stringTable, contextExtensions)
@@ -534,7 +523,7 @@ open class PackageWriter(stringTable: StringTable, contextExtensions: List<Write
}
}
@DeprecatedVisitor // TODO: this likely need to be rewritten directly
@Deprecated(visitorApiMessage)
open class ModuleFragmentWriter(stringTable: StringTable, contextExtensions: List<WriteContextExtension> = emptyList()) :
KmModuleFragmentVisitor() {
protected val t = ProtoBuf.PackageFragment.newBuilder()!!
@@ -560,7 +549,7 @@ open class ModuleFragmentWriter(stringTable: StringTable, contextExtensions: Lis
}
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
open class LambdaWriter(stringTable: StringTable) : KmLambdaVisitor() {
protected var t: ProtoBuf.Function.Builder? = null
protected val c = WriteContext(stringTable)
@@ -2,10 +2,10 @@
* Copyright 2010-2022 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")
package kotlinx.metadata.internal.common
import kotlinx.metadata.DeprecatedVisitor
import kotlinx.metadata.KmModuleFragment
import kotlinx.metadata.KmModuleFragmentVisitor
import kotlinx.metadata.impl.accept
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.metadata.builtins.readBuiltinsPackageFragment
import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl
import java.io.ByteArrayInputStream
@DeprecatedVisitor
// TODO: decide what to with this piece
class KotlinCommonMetadata private constructor(private val proto: ProtoBuf.PackageFragment) {
fun toKmModuleFragment(): KmModuleFragment =
KmModuleFragment().apply(this::accept)
@@ -33,7 +33,7 @@ interface KmDeclarationContainer {
/**
* Represents a Kotlin class.
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmClass : KmClassVisitor(), KmDeclarationContainer {
/**
* Class flags, consisting of [Flag.HAS_ANNOTATIONS], visibility flag, modality flag and [Flag.Class] flags.
@@ -119,75 +119,75 @@ class KmClass : KmClassVisitor(), KmDeclarationContainer {
private val extensions: List<KmClassExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createClassExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visit(flags: Flags, name: ClassName) {
this.flags = flags
this.name = name
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeParameter(flags: Flags, name: String, id: Int, variance: KmVariance): KmTypeParameterVisitor =
KmTypeParameter(flags, name, id, variance).addTo(typeParameters)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitSupertype(flags: Flags): KmTypeVisitor =
KmType(flags).addTo(supertypes)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitFunction(flags: Flags, name: String): KmFunctionVisitor =
KmFunction(flags, name).addTo(functions)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor =
KmProperty(flags, name, getterFlags, setterFlags).addTo(properties)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeAlias(flags: Flags, name: String): KmTypeAliasVisitor =
KmTypeAlias(flags, name).addTo(typeAliases)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitConstructor(flags: Flags): KmConstructorVisitor =
KmConstructor(flags).addTo(constructors)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitCompanionObject(name: String) {
this.companionObject = name
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitNestedClass(name: String) {
nestedClasses.add(name)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitEnumEntry(name: String) {
enumEntries.add(name)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitSealedSubclass(name: ClassName) {
sealedSubclasses.add(name)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitInlineClassUnderlyingPropertyName(name: String) {
inlineClassUnderlyingPropertyName = name
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitInlineClassUnderlyingType(flags: Flags): KmTypeVisitor =
KmType(flags).also { inlineClassUnderlyingType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@ExperimentalContextReceivers
override fun visitContextReceiverType(flags: Flags): KmTypeVisitor =
KmType(flags).addTo(contextReceiverTypes)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVersionRequirement(): KmVersionRequirementVisitor =
KmVersionRequirement().addTo(versionRequirements)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmClassExtensionVisitor =
extensions.singleOfType(type)
@@ -196,7 +196,7 @@ class KmClass : KmClassVisitor(), KmDeclarationContainer {
*
* @param visitor the visitor which will visit data in this class
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@OptIn(ExperimentalContextReceivers::class)
fun accept(visitor: KmClassVisitor) {
visitor.visit(flags, name)
@@ -222,7 +222,7 @@ class KmClass : KmClassVisitor(), KmDeclarationContainer {
/**
* Represents a Kotlin package fragment, including single file facades and multi-file class parts.
*/
@OptIn(DeprecatedVisitor::class) // TODO
@Suppress("DEPRECATION")
class KmPackage : KmPackageVisitor(), KmDeclarationContainer {
/**
* Functions in the package fragment.
@@ -242,19 +242,19 @@ class KmPackage : KmPackageVisitor(), KmDeclarationContainer {
private val extensions: List<KmPackageExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createPackageExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitFunction(flags: Flags, name: String): KmFunctionVisitor =
KmFunction(flags, name).addTo(functions)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitProperty(flags: Flags, name: String, getterFlags: Flags, setterFlags: Flags): KmPropertyVisitor =
KmProperty(flags, name, getterFlags, setterFlags).addTo(properties)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeAlias(flags: Flags, name: String): KmTypeAliasVisitor =
KmTypeAlias(flags, name).addTo(typeAliases)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmPackageExtensionVisitor =
extensions.singleOfType(type)
@@ -263,7 +263,7 @@ class KmPackage : KmPackageVisitor(), KmDeclarationContainer {
*
* @param visitor the visitor which will visit data in this package fragment
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmPackageVisitor) {
functions.forEach { visitor.visitFunction(it.flags, it.name)?.let(it::accept) }
properties.forEach { visitor.visitProperty(it.flags, it.name, it.getterFlags, it.setterFlags)?.let(it::accept) }
@@ -276,7 +276,7 @@ class KmPackage : KmPackageVisitor(), KmDeclarationContainer {
/**
* Represents a Kotlin module fragment. This is used to represent metadata of a part of a module on platforms other than JVM.
*/
@OptIn(DeprecatedVisitor::class) // TODO
@Suppress("DEPRECATION")
class KmModuleFragment : KmModuleFragmentVisitor() {
/**
@@ -292,15 +292,15 @@ class KmModuleFragment : KmModuleFragmentVisitor() {
private val extensions: List<KmModuleFragmentExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createModuleFragmentExtensions)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitPackage(): KmPackageVisitor? =
KmPackage().also { pkg = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmModuleFragmentExtensionVisitor? =
extensions.singleOfType(type)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitClass(): KmClassVisitor? =
KmClass().addTo(classes)
@@ -309,7 +309,7 @@ class KmModuleFragment : KmModuleFragmentVisitor() {
*
* @param visitor the visitor which will visit data in the module fragment.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmModuleFragmentVisitor) {
pkg?.let { visitor.visitPackage()?.let(it::accept) }
classes.forEach { visitor.visitClass()?.let(it::accept) }
@@ -321,14 +321,14 @@ class KmModuleFragment : KmModuleFragmentVisitor() {
/**
* Represents a synthetic class generated for a Kotlin lambda.
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmLambda : KmLambdaVisitor() {
/**
* Signature of the synthetic anonymous function, representing the lambda.
*/
lateinit var function: KmFunction
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitFunction(flags: Flags, name: String): KmFunctionVisitor =
KmFunction(flags, name).also { function = it }
@@ -337,7 +337,7 @@ class KmLambda : KmLambdaVisitor() {
*
* @param visitor the visitor which will visit data in this lambda
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmLambdaVisitor) {
visitor.visitFunction(function.flags, function.name)?.let(function::accept)
visitor.visitEnd()
@@ -349,7 +349,7 @@ class KmLambda : KmLambdaVisitor() {
*
* @property flags constructor flags, consisting of [Flag.HAS_ANNOTATIONS], visibility flag and [Flag.Constructor] flags
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmConstructor(var flags: Flags) : KmConstructorVisitor() {
/**
* Value parameters of the constructor.
@@ -364,15 +364,15 @@ class KmConstructor(var flags: Flags) : KmConstructorVisitor() {
private val extensions: List<KmConstructorExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createConstructorExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor =
KmValueParameter(flags, name).addTo(valueParameters)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVersionRequirement(): KmVersionRequirementVisitor =
KmVersionRequirement().addTo(versionRequirements)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmConstructorExtensionVisitor =
extensions.singleOfType(type)
@@ -381,7 +381,7 @@ class KmConstructor(var flags: Flags) : KmConstructorVisitor() {
*
* @param visitor the visitor which will visit data in this class
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmConstructorVisitor) {
valueParameters.forEach { visitor.visitValueParameter(it.flags, it.name)?.let(it::accept) }
versionRequirements.forEach { visitor.visitVersionRequirement()?.let(it::accept) }
@@ -396,7 +396,7 @@ class KmConstructor(var flags: Flags) : KmConstructorVisitor() {
* @property flags function flags, consisting of [Flag.HAS_ANNOTATIONS], visibility flag, modality flag and [Flag.Function] flags
* @property name the name of the function
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmFunction(
var flags: Flags,
var name: String
@@ -441,37 +441,37 @@ class KmFunction(
private val extensions: List<KmFunctionExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createFunctionExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeParameter(flags: Flags, name: String, id: Int, variance: KmVariance): KmTypeParameterVisitor =
KmTypeParameter(flags, name, id, variance).addTo(typeParameters)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor =
KmType(flags).also { receiverParameterType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@ExperimentalContextReceivers
override fun visitContextReceiverType(flags: Flags): KmTypeVisitor =
KmType(flags).addTo(contextReceiverTypes)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitValueParameter(flags: Flags, name: String): KmValueParameterVisitor =
KmValueParameter(flags, name).addTo(valueParameters)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitReturnType(flags: Flags): KmTypeVisitor =
KmType(flags).also { returnType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVersionRequirement(): KmVersionRequirementVisitor =
KmVersionRequirement().addTo(versionRequirements)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@ExperimentalContracts
override fun visitContract(): KmContractVisitor =
KmContract().also { contract = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmFunctionExtensionVisitor =
extensions.singleOfType(type)
@@ -481,7 +481,7 @@ class KmFunction(
* @param visitor the visitor which will visit data in this function
*/
@OptIn(ExperimentalContextReceivers::class)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmFunctionVisitor) {
typeParameters.forEach { visitor.visitTypeParameter(it.flags, it.name, it.id, it.variance)?.let(it::accept) }
receiverParameterType?.let { visitor.visitReceiverParameterType(it.flags)?.let(it::accept) }
@@ -505,7 +505,7 @@ class KmFunction(
* @property setterFlags property accessor flags, consisting of [Flag.HAS_ANNOTATIONS], visibility flag, modality flag
* and [Flag.PropertyAccessor] flags
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmProperty(
var flags: Flags,
var name: String,
@@ -546,32 +546,32 @@ class KmProperty(
private val extensions: List<KmPropertyExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createPropertyExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeParameter(flags: Flags, name: String, id: Int, variance: KmVariance): KmTypeParameterVisitor =
KmTypeParameter(flags, name, id, variance).addTo(typeParameters)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitReceiverParameterType(flags: Flags): KmTypeVisitor =
KmType(flags).also { receiverParameterType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@ExperimentalContextReceivers
override fun visitContextReceiverType(flags: Flags): KmTypeVisitor =
KmType(flags).addTo(contextReceiverTypes)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitSetterParameter(flags: Flags, name: String): KmValueParameterVisitor =
KmValueParameter(flags, name).also { setterParameter = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitReturnType(flags: Flags): KmTypeVisitor =
KmType(flags).also { returnType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVersionRequirement(): KmVersionRequirementVisitor =
KmVersionRequirement().addTo(versionRequirements)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmPropertyExtensionVisitor =
extensions.singleOfType(type)
@@ -581,7 +581,7 @@ class KmProperty(
* @param visitor the visitor which will visit data in this property
*/
@OptIn(ExperimentalContextReceivers::class)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmPropertyVisitor) {
typeParameters.forEach { visitor.visitTypeParameter(it.flags, it.name, it.id, it.variance)?.let(it::accept) }
receiverParameterType?.let { visitor.visitReceiverParameterType(it.flags)?.let(it::accept) }
@@ -600,7 +600,7 @@ class KmProperty(
* @property flags type alias flags, consisting of [Flag.HAS_ANNOTATIONS] and visibility flag
* @property name the name of the type alias
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmTypeAlias(
var flags: Flags,
var name: String
@@ -634,28 +634,28 @@ class KmTypeAlias(
private val extensions: List<KmTypeAliasExtension> =
MetadataExtensions.INSTANCES.mapNotNull(MetadataExtensions::createTypeAliasExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeParameter(flags: Flags, name: String, id: Int, variance: KmVariance): KmTypeParameterVisitor =
KmTypeParameter(flags, name, id, variance).addTo(typeParameters)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitUnderlyingType(flags: Flags): KmTypeVisitor =
KmType(flags).also { underlyingType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExpandedType(flags: Flags): KmTypeVisitor =
KmType(flags).also { expandedType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitAnnotation(annotation: KmAnnotation) {
annotations.add(annotation)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmTypeAliasExtensionVisitor? =
extensions.singleOfType(type)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVersionRequirement(): KmVersionRequirementVisitor =
KmVersionRequirement().addTo(versionRequirements)
@@ -664,7 +664,7 @@ class KmTypeAlias(
*
* @param visitor the visitor which will visit data in this type alias
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmTypeAliasVisitor) {
typeParameters.forEach { visitor.visitTypeParameter(it.flags, it.name, it.id, it.variance)?.let(it::accept) }
visitor.visitUnderlyingType(underlyingType.flags)?.let(underlyingType::accept)
@@ -682,7 +682,7 @@ class KmTypeAlias(
* @property flags value parameter flags, consisting of [Flag.ValueParameter] flags
* @property name the name of the value parameter
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmValueParameter(
var flags: Flags,
var name: String
@@ -701,15 +701,15 @@ class KmValueParameter(
private val extensions: List<KmValueParameterExtension> =
MetadataExtensions.INSTANCES.mapNotNull(MetadataExtensions::createValueParameterExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitType(flags: Flags): KmTypeVisitor =
KmType(flags).also { type = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVarargElementType(flags: Flags): KmTypeVisitor =
KmType(flags).also { varargElementType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmValueParameterExtensionVisitor? =
extensions.singleOfType(type)
@@ -718,7 +718,7 @@ class KmValueParameter(
*
* @param visitor the visitor which will visit data in this value parameter
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmValueParameterVisitor) {
visitor.visitType(type.flags)?.let(type::accept)
varargElementType?.let { visitor.visitVarargElementType(it.flags)?.let(it::accept) }
@@ -736,7 +736,7 @@ class KmValueParameter(
* the name isn't enough (e.g. `class A<T> { fun <T> foo(t: T) }`)
* @property variance the declaration-site variance of the type parameter
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmTypeParameter(
var flags: Flags,
var name: String,
@@ -751,11 +751,11 @@ class KmTypeParameter(
private val extensions: List<KmTypeParameterExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createTypeParameterExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitUpperBound(flags: Flags): KmTypeVisitor =
KmType(flags).addTo(upperBounds)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmTypeParameterExtensionVisitor? =
extensions.singleOfType(type)
@@ -764,7 +764,7 @@ class KmTypeParameter(
*
* @param visitor the visitor which will visit data in this type parameter
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmTypeParameterVisitor) {
upperBounds.forEach { visitor.visitUpperBound(it.flags)?.let(it::accept) }
extensions.forEach { visitor.visitExtensions(it.type)?.let(it::accept) }
@@ -777,7 +777,7 @@ class KmTypeParameter(
*
* @property flags type flags, consisting of [Flag.Type] flags
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmType(var flags: Flags) : KmTypeVisitor() {
/**
* Classifier of the type.
@@ -822,43 +822,43 @@ class KmType(var flags: Flags) : KmTypeVisitor() {
private val extensions: List<KmTypeExtension> =
MetadataExtensions.INSTANCES.map(MetadataExtensions::createTypeExtension)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitClass(name: ClassName) {
classifier = KmClassifier.Class(name)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeAlias(name: ClassName) {
classifier = KmClassifier.TypeAlias(name)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitTypeParameter(id: Int) {
classifier = KmClassifier.TypeParameter(id)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitArgument(flags: Flags, variance: KmVariance): KmTypeVisitor =
KmType(flags).also { arguments.add(KmTypeProjection(variance, it)) }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitStarProjection() {
arguments.add(KmTypeProjection.STAR)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitAbbreviatedType(flags: Flags): KmTypeVisitor =
KmType(flags).also { abbreviatedType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitOuterType(flags: Flags): KmTypeVisitor =
KmType(flags).also { outerType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitFlexibleTypeUpperBound(flags: Flags, typeFlexibilityId: String?): KmTypeVisitor =
KmType(flags).also { flexibleTypeUpperBound = KmFlexibleTypeUpperBound(it, typeFlexibilityId) }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitExtensions(type: KmExtensionType): KmTypeExtension =
extensions.singleOfType(type)
@@ -867,7 +867,7 @@ class KmType(var flags: Flags) : KmTypeVisitor() {
*
* @param visitor the visitor which will visit data in this type
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmTypeVisitor) {
when (val classifier = classifier) {
is KmClassifier.Class -> visitor.visitClass(classifier.name)
@@ -897,7 +897,7 @@ class KmType(var flags: Flags) : KmTypeVisitor() {
* Version requirement is an internal feature of the Kotlin compiler and the standard Kotlin library,
* enabled for example with the internal [kotlin.internal.RequireKotlin] annotation.
*/
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmVersionRequirement : KmVersionRequirementVisitor() {
/**
* Kind of the version that this declaration requires.
@@ -924,7 +924,7 @@ class KmVersionRequirement : KmVersionRequirementVisitor() {
*/
lateinit var version: KmVersion
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visit(kind: KmVersionRequirementVersionKind, level: KmVersionRequirementLevel, errorCode: Int?, message: String?) {
this.kind = kind
this.level = level
@@ -932,7 +932,7 @@ class KmVersionRequirement : KmVersionRequirementVisitor() {
this.message = message
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitVersion(major: Int, minor: Int, patch: Int) {
this.version = KmVersion(major, minor, patch)
}
@@ -942,7 +942,7 @@ class KmVersionRequirement : KmVersionRequirementVisitor() {
*
* @param visitor the visitor which will visit data in this version requirement
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmVersionRequirementVisitor) {
visitor.visit(kind, level, errorCode, message)
visitor.visitVersion(version.major, version.minor, version.patch)
@@ -957,14 +957,14 @@ class KmVersionRequirement : KmVersionRequirementVisitor() {
* may change in a subsequent release.
*/
@ExperimentalContracts
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmContract : KmContractVisitor() {
/**
* Effects of this contract.
*/
val effects: MutableList<KmEffect> = ArrayList(1)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitEffect(type: KmEffectType, invocationKind: KmEffectInvocationKind?): KmEffectVisitor =
KmEffect(type, invocationKind).addTo(effects)
@@ -973,7 +973,7 @@ class KmContract : KmContractVisitor() {
*
* @param visitor the visitor which will visit data in this contract
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmContractVisitor) {
effects.forEach { visitor.visitEffect(it.type, it.invocationKind)?.let(it::accept) }
visitor.visitEnd()
@@ -991,7 +991,7 @@ class KmContract : KmContractVisitor() {
* specified further in the effect expression
*/
@ExperimentalContracts
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmEffect(
var type: KmEffectType,
var invocationKind: KmEffectInvocationKind?
@@ -1007,11 +1007,11 @@ class KmEffect(
*/
var conclusion: KmEffectExpression? = null
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitConstructorArgument(): KmEffectExpressionVisitor =
KmEffectExpression().addTo(constructorArguments)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitConclusionOfConditionalEffect(): KmEffectExpressionVisitor =
KmEffectExpression().also { conclusion = it }
@@ -1020,7 +1020,7 @@ class KmEffect(
*
* @param visitor the visitor which will visit data in this effect
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmEffectVisitor) {
constructorArguments.forEach { visitor.visitConstructorArgument()?.let(it::accept) }
conclusion?.let { visitor.visitConclusionOfConditionalEffect()?.let(it::accept) }
@@ -1035,7 +1035,7 @@ class KmEffect(
* may change in a subsequent release.
*/
@ExperimentalContracts
@OptIn(DeprecatedVisitor::class)
@Suppress("DEPRECATION")
class KmEffectExpression : KmEffectExpressionVisitor() {
/**
* Effect expression flags, consisting of [Flag.EffectExpression] flags.
@@ -1070,26 +1070,26 @@ class KmEffectExpression : KmEffectExpressionVisitor() {
*/
val orArguments: MutableList<KmEffectExpression> = ArrayList(0)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visit(flags: Flags, parameterIndex: Int?) {
this.flags = flags
this.parameterIndex = parameterIndex
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitConstantValue(value: Any?) {
constantValue = KmConstantValue(value)
}
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitIsInstanceType(flags: Flags): KmTypeVisitor =
KmType(flags).also { isInstanceType = it }
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitAndArgument(): KmEffectExpressionVisitor =
KmEffectExpression().addTo(andArguments)
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
override fun visitOrArgument(): KmEffectExpressionVisitor =
KmEffectExpression().addTo(orArguments)
@@ -1098,7 +1098,7 @@ class KmEffectExpression : KmEffectExpressionVisitor() {
*
* @param visitor the visitor which will visit data in this effect expression
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
fun accept(visitor: KmEffectExpressionVisitor) {
visitor.visit(flags, parameterIndex)
constantValue?.let { visitor.visitConstantValue(it.value) }
@@ -7,13 +7,14 @@ package kotlinx.metadata
import kotlin.contracts.ExperimentalContracts
@RequiresOptIn("Visitor API is deprecated. Please do not use", RequiresOptIn.Level.ERROR)
annotation class DeprecatedVisitor
internal const val visitorApiMessage =
"Visitor API is deprecated as excessive and cumbersome. Please use nodes (such as KmClass) and their properties."
/**
* A visitor containing the common code to visit Kotlin declaration containers, such as classes and package fragments.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmDeclarationContainerVisitor @JvmOverloads constructor(protected open val delegate: KmDeclarationContainerVisitor? = null) {
/**
* Visits a function in the container.
@@ -60,7 +61,8 @@ abstract class KmDeclarationContainerVisitor @JvmOverloads constructor(protected
* When using this class, [visit] must be called first, followed by zero or more [visitTypeParameter] calls, followed by zero or more calls
* to other visit* methods, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmClassVisitor @JvmOverloads constructor(delegate: KmClassVisitor? = null) : KmDeclarationContainerVisitor(delegate) {
override val delegate: KmClassVisitor?
get() = super.delegate as KmClassVisitor?
@@ -192,7 +194,8 @@ abstract class KmClassVisitor @JvmOverloads constructor(delegate: KmClassVisitor
*
* When using this class, [visitEnd] must be called exactly once and after calls to all other visit* methods.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmPackageVisitor @JvmOverloads constructor(delegate: KmPackageVisitor? = null) : KmDeclarationContainerVisitor(delegate) {
override val delegate: KmPackageVisitor?
get() = super.delegate as KmPackageVisitor?
@@ -219,7 +222,8 @@ abstract class KmPackageVisitor @JvmOverloads constructor(delegate: KmPackageVis
*
* When using this class, [visitEnd] must be called exactly once and after calls to all other visit* methods.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmModuleFragmentVisitor @JvmOverloads constructor(private val delegate: KmModuleFragmentVisitor? = null) {
/**
@@ -255,7 +259,8 @@ abstract class KmModuleFragmentVisitor @JvmOverloads constructor(private val del
*
* When using this class, [visitFunction] must be called first, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmLambdaVisitor @JvmOverloads constructor(private val delegate: KmLambdaVisitor? = null) {
/**
* Visits the signature of a synthetic anonymous function, representing the lambda.
@@ -279,7 +284,8 @@ abstract class KmLambdaVisitor @JvmOverloads constructor(private val delegate: K
*
* When using this class, [visitEnd] must be called exactly once and after calls to all other visit* methods.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmConstructorVisitor @JvmOverloads constructor(private val delegate: KmConstructorVisitor? = null) {
/**
* Visits a value parameter of the constructor.
@@ -318,7 +324,8 @@ abstract class KmConstructorVisitor @JvmOverloads constructor(private val delega
* When using this class, zero or more calls to [visitTypeParameter] must be done first, followed by zero or more calls
* to other visit* methods, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmFunctionVisitor @JvmOverloads constructor(private val delegate: KmFunctionVisitor? = null) {
/**
* Visits a type parameter of the function.
@@ -401,7 +408,8 @@ abstract class KmFunctionVisitor @JvmOverloads constructor(private val delegate:
* When using this class, zero or more calls to [visitTypeParameter] must be done first, followed by zero or more calls
* to other visit* methods, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmPropertyVisitor @JvmOverloads constructor(private val delegate: KmPropertyVisitor? = null) {
/**
* Visits a type parameter of the property.
@@ -477,7 +485,8 @@ abstract class KmPropertyVisitor @JvmOverloads constructor(private val delegate:
* When using this class, zero or more calls to [visitTypeParameter] must be done first, followed by zero or more calls
* to other visit* methods, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmTypeAliasVisitor @JvmOverloads constructor(private val delegate: KmTypeAliasVisitor? = null) {
/**
* Visits a type parameter of the type alias.
@@ -545,7 +554,8 @@ abstract class KmTypeAliasVisitor @JvmOverloads constructor(private val delegate
* When using this class, either [visitType] or [visitVarargElementType] must be called first (depending on whether the value parameter
* is `vararg` or not), followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmValueParameterVisitor @JvmOverloads constructor(private val delegate: KmValueParameterVisitor? = null) {
/**
* Visits the type of the value parameter, if this is **not** a `vararg` parameter.
@@ -584,7 +594,8 @@ abstract class KmValueParameterVisitor @JvmOverloads constructor(private val del
*
* When using this class, zero or more [visitUpperBound] calls must be done first, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmTypeParameterVisitor @JvmOverloads constructor(private val delegate: KmTypeParameterVisitor? = null) {
/**
* Visits the upper bound of the type parameter.
@@ -621,7 +632,8 @@ abstract class KmTypeParameterVisitor @JvmOverloads constructor(private val dele
*
* When using this class, [visitEnd] must be called exactly once and after calls to all other visit* methods.
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
abstract class KmTypeVisitor @JvmOverloads constructor(private val delegate: KmTypeVisitor? = null) {
/**
* Visits the name of the class, if this type's classifier is a class.
@@ -733,8 +745,8 @@ abstract class KmTypeVisitor @JvmOverloads constructor(private val delegate: KmT
*
* When using this class, [visit] must be called first, followed by [visitVersion], followed by [visitEnd].
*/
@DeprecatedVisitor
abstract class KmVersionRequirementVisitor @JvmOverloads constructor(private val delegate: KmVersionRequirementVisitor? = null) {
@Deprecated(visitorApiMessage)
abstract class KmVersionRequirementVisitor @JvmOverloads constructor(@Suppress("DEPRECATION") private val delegate: KmVersionRequirementVisitor? = null) {
/**
* Visits the description of this version requirement.
*
@@ -775,7 +787,8 @@ abstract class KmVersionRequirementVisitor @JvmOverloads constructor(private val
*
* When using this class, zero or more calls to [visitEffect] must be done first, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
@ExperimentalContracts
abstract class KmContractVisitor @JvmOverloads constructor(private val delegate: KmContractVisitor? = null) {
/**
@@ -805,7 +818,8 @@ abstract class KmContractVisitor @JvmOverloads constructor(private val delegate:
* When using this class, zero or more calls to [visitConstructorArgument] or [visitConclusionOfConditionalEffect] must be done first,
* followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
@ExperimentalContracts
abstract class KmEffectVisitor @JvmOverloads constructor(private val delegate: KmEffectVisitor? = null) {
/**
@@ -838,7 +852,8 @@ abstract class KmEffectVisitor @JvmOverloads constructor(private val delegate: K
*
* When using this class, [visit] must be called first, followed by zero or more calls to other visit* methods, followed by [visitEnd].
*/
@DeprecatedVisitor
@Deprecated(visitorApiMessage)
@Suppress("DEPRECATION")
@ExperimentalContracts
abstract class KmEffectExpressionVisitor @JvmOverloads constructor(private val delegate: KmEffectExpressionVisitor? = null) {
/**
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.kotlinp.test
import com.intellij.openapi.Disposable
import junit.framework.TestCase.assertEquals
import kotlinx.metadata.DeprecatedVisitor
import kotlinx.metadata.jvm.KotlinClassMetadata
import kotlinx.metadata.jvm.KotlinModuleMetadata
import org.jetbrains.kotlin.checkers.setupLanguageVersionSettingsForCompilerTests
@@ -26,7 +25,6 @@ import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.File
import kotlin.test.fail
@OptIn(DeprecatedVisitor::class)
fun compileAndPrintAllFiles(file: File, disposable: Disposable, tmpdir: File, compareWithTxt: Boolean, readWriteAndCompare: Boolean) {
val main = StringBuilder()
val afterVisitors = StringBuilder()
@@ -99,8 +97,7 @@ private fun StringBuilder.appendFileName(file: File) {
// Reads the class file and writes it back with *Writer visitors.
// The resulting class file should be the same from the point of view of any metadata reader, including kotlinp
// (the exact bytes may differ though, because there are multiple ways to encode the same metadata)
@Suppress("DEPRECATION_ERROR")
@DeprecatedVisitor // TODO: not sure this test is needed at all now
@Suppress("DEPRECATION")
private fun transformClassFileWithReadWriteVisitors(classFile: KotlinClassMetadata): KotlinClassMetadata =
when (classFile) {
is KotlinClassMetadata.Class -> KotlinClassMetadata.Class.Writer().apply(classFile::accept).write()
@@ -132,8 +129,7 @@ private fun transformClassFileWithNodes(classFile: KotlinClassMetadata): KotlinC
else -> classFile
}
@Suppress("DEPRECATION_ERROR")
@DeprecatedVisitor
@Suppress("DEPRECATION")
private fun transformModuleFileWithReadWriteVisitors(moduleFile: KotlinModuleMetadata): KotlinModuleMetadata =
KotlinModuleMetadata.Writer().apply(moduleFile::accept).write()
@@ -18,7 +18,6 @@ import org.jetbrains.org.objectweb.asm.Opcodes
* Wrap the visitor for a Kotlin Metadata annotation to strip out private and local
* functions, properties, and type aliases as well as local delegated properties.
*/
@OptIn(DeprecatedVisitor::class)
fun abiMetadataProcessor(annotationVisitor: AnnotationVisitor): AnnotationVisitor =
kotlinClassHeaderVisitor { header ->
// kotlinx-metadata only supports writing Kotlin metadata of version >= 1.4, so we need to
@@ -137,7 +136,7 @@ private fun AnnotationVisitor.visitKotlinMetadata(header: KotlinClassHeader) {
* Class metadata adapter which removes private functions, properties, type aliases,
* and local delegated properties.
*/
@DeprecatedVisitor
@Suppress("DEPRECATION")
private class AbiKmClassVisitor(delegate: KmClassVisitor) : KmClassVisitor(delegate) {
override fun visitConstructor(flags: Flags): KmConstructorVisitor? {
if (!isPrivateDeclaration(flags))
@@ -174,7 +173,7 @@ private class AbiKmClassVisitor(delegate: KmClassVisitor) : KmClassVisitor(deleg
* Class metadata adapter which removes private functions, properties, type aliases,
* and local delegated properties.
*/
@DeprecatedVisitor
@Suppress("DEPRECATION")
private class AbiKmPackageVisitor(delegate: KmPackageVisitor) : KmPackageVisitor(delegate) {
override fun visitFunction(flags: Flags, name: String): KmFunctionVisitor? {
if (!isPrivateDeclaration(flags))