kotlinx-metadata: reformat, cleanup, fix inspections
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* 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")
|
||||||
|
|
||||||
package kotlinx.metadata.jvm
|
package kotlinx.metadata.jvm
|
||||||
|
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmBytecodeBinaryVersion
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmBytecodeBinaryVersion
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
class Class internal constructor(header: KotlinClassHeader) : KotlinClassMetadata(header) {
|
class Class internal constructor(header: KotlinClassHeader) : KotlinClassMetadata(header) {
|
||||||
private val classData by lazy(PUBLICATION) {
|
private val classData by lazy(PUBLICATION) {
|
||||||
val data1 = (header.data1.takeIf(Array<*>::isNotEmpty)
|
val data1 = (header.data1.takeIf(Array<*>::isNotEmpty)
|
||||||
?: throw InconsistentKotlinMetadataException("data1 must not be empty"))
|
?: throw InconsistentKotlinMetadataException("data1 must not be empty"))
|
||||||
JvmProtoBufUtil.readClassDataFrom(data1, header.data2)
|
JvmProtoBufUtil.readClassDataFrom(data1, header.data2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,12 +68,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||||
extraInt: Int = 0
|
extraInt: Int = 0
|
||||||
): KotlinClassMetadata.Class {
|
): Class {
|
||||||
val (d1, d2) = writeProtoBufData(t.build(), c)
|
val (d1, d2) = writeProtoBufData(t.build(), c)
|
||||||
val metadata = KotlinClassHeader(
|
val metadata = KotlinClassHeader(
|
||||||
KotlinClassHeader.CLASS_KIND, metadataVersion, bytecodeVersion, d1, d2, null, null, extraInt
|
KotlinClassHeader.CLASS_KIND, metadataVersion, bytecodeVersion, d1, d2, null, null, extraInt
|
||||||
)
|
)
|
||||||
return KotlinClassMetadata.Class(metadata)
|
return Class(metadata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
class FileFacade internal constructor(header: KotlinClassHeader) : KotlinClassMetadata(header) {
|
class FileFacade internal constructor(header: KotlinClassHeader) : KotlinClassMetadata(header) {
|
||||||
private val packageData by lazy(PUBLICATION) {
|
private val packageData by lazy(PUBLICATION) {
|
||||||
val data1 = (header.data1.takeIf(Array<*>::isNotEmpty)
|
val data1 = (header.data1.takeIf(Array<*>::isNotEmpty)
|
||||||
?: throw InconsistentKotlinMetadataException("data1 must not be empty"))
|
?: throw InconsistentKotlinMetadataException("data1 must not be empty"))
|
||||||
JvmProtoBufUtil.readPackageDataFrom(data1, header.data2)
|
JvmProtoBufUtil.readPackageDataFrom(data1, header.data2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,12 +123,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||||
extraInt: Int = 0
|
extraInt: Int = 0
|
||||||
): KotlinClassMetadata.FileFacade {
|
): FileFacade {
|
||||||
val (d1, d2) = writeProtoBufData(t.build(), c)
|
val (d1, d2) = writeProtoBufData(t.build(), c)
|
||||||
val metadata = KotlinClassHeader(
|
val metadata = KotlinClassHeader(
|
||||||
KotlinClassHeader.FILE_FACADE_KIND, metadataVersion, bytecodeVersion, d1, d2, null, null, extraInt
|
KotlinClassHeader.FILE_FACADE_KIND, metadataVersion, bytecodeVersion, d1, d2, null, null, extraInt
|
||||||
)
|
)
|
||||||
return KotlinClassMetadata.FileFacade(metadata)
|
return FileFacade(metadata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -196,15 +196,15 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||||
extraInt: Int = 0
|
extraInt: Int = 0
|
||||||
): KotlinClassMetadata.SyntheticClass {
|
): SyntheticClass {
|
||||||
val proto = t?.build()
|
val proto = t?.build()
|
||||||
val (d1, d2) =
|
val (d1, d2) =
|
||||||
if (proto != null) writeProtoBufData(proto, c)
|
if (proto != null) writeProtoBufData(proto, c)
|
||||||
else Pair(emptyArray(), emptyArray())
|
else Pair(emptyArray(), emptyArray())
|
||||||
val metadata = KotlinClassHeader(
|
val metadata = KotlinClassHeader(
|
||||||
KotlinClassHeader.SYNTHETIC_CLASS_KIND, metadataVersion, bytecodeVersion, d1, d2, null, null, extraInt
|
KotlinClassHeader.SYNTHETIC_CLASS_KIND, metadataVersion, bytecodeVersion, d1, d2, null, null, extraInt
|
||||||
)
|
)
|
||||||
return KotlinClassMetadata.SyntheticClass(metadata)
|
return SyntheticClass(metadata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,12 +241,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||||
extraInt: Int = 0
|
extraInt: Int = 0
|
||||||
): KotlinClassMetadata.MultiFileClassFacade {
|
): MultiFileClassFacade {
|
||||||
val metadata = KotlinClassHeader(
|
val metadata = KotlinClassHeader(
|
||||||
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND, metadataVersion, bytecodeVersion, partClassNames.toTypedArray(),
|
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND, metadataVersion, bytecodeVersion, partClassNames.toTypedArray(),
|
||||||
null, null, null, extraInt
|
null, null, null, extraInt
|
||||||
)
|
)
|
||||||
return KotlinClassMetadata.MultiFileClassFacade(metadata)
|
return MultiFileClassFacade(metadata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,7 +260,7 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
class MultiFileClassPart internal constructor(header: KotlinClassHeader) : KotlinClassMetadata(header) {
|
class MultiFileClassPart internal constructor(header: KotlinClassHeader) : KotlinClassMetadata(header) {
|
||||||
private val packageData by lazy(PUBLICATION) {
|
private val packageData by lazy(PUBLICATION) {
|
||||||
val data1 = (header.data1.takeIf(Array<*>::isNotEmpty)
|
val data1 = (header.data1.takeIf(Array<*>::isNotEmpty)
|
||||||
?: throw InconsistentKotlinMetadataException("data1 must not be empty"))
|
?: throw InconsistentKotlinMetadataException("data1 must not be empty"))
|
||||||
JvmProtoBufUtil.readPackageDataFrom(data1, header.data2)
|
JvmProtoBufUtil.readPackageDataFrom(data1, header.data2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,12 +307,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||||
extraInt: Int = 0
|
extraInt: Int = 0
|
||||||
): KotlinClassMetadata.MultiFileClassPart {
|
): MultiFileClassPart {
|
||||||
val (d1, d2) = writeProtoBufData(t.build(), c)
|
val (d1, d2) = writeProtoBufData(t.build(), c)
|
||||||
val metadata = KotlinClassHeader(
|
val metadata = KotlinClassHeader(
|
||||||
KotlinClassHeader.MULTI_FILE_CLASS_PART_KIND, metadataVersion, bytecodeVersion, d1, d2, facadeClassName, null, extraInt
|
KotlinClassHeader.MULTI_FILE_CLASS_PART_KIND, metadataVersion, bytecodeVersion, d1, d2, facadeClassName, null, extraInt
|
||||||
)
|
)
|
||||||
return KotlinClassMetadata.MultiFileClassPart(metadata)
|
return MultiFileClassPart(metadata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -344,12 +344,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
|||||||
|
|
||||||
return try {
|
return try {
|
||||||
when (header.kind) {
|
when (header.kind) {
|
||||||
KotlinClassHeader.CLASS_KIND -> KotlinClassMetadata.Class(header)
|
KotlinClassHeader.CLASS_KIND -> Class(header)
|
||||||
KotlinClassHeader.FILE_FACADE_KIND -> KotlinClassMetadata.FileFacade(header)
|
KotlinClassHeader.FILE_FACADE_KIND -> FileFacade(header)
|
||||||
KotlinClassHeader.SYNTHETIC_CLASS_KIND -> KotlinClassMetadata.SyntheticClass(header)
|
KotlinClassHeader.SYNTHETIC_CLASS_KIND -> SyntheticClass(header)
|
||||||
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND -> KotlinClassMetadata.MultiFileClassFacade(header)
|
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND -> MultiFileClassFacade(header)
|
||||||
KotlinClassHeader.MULTI_FILE_CLASS_PART_KIND -> KotlinClassMetadata.MultiFileClassPart(header)
|
KotlinClassHeader.MULTI_FILE_CLASS_PART_KIND -> MultiFileClassPart(header)
|
||||||
else -> KotlinClassMetadata.Unknown(header)
|
else -> Unknown(header)
|
||||||
}
|
}
|
||||||
} catch (e: InconsistentKotlinMetadataException) {
|
} catch (e: InconsistentKotlinMetadataException) {
|
||||||
throw e
|
throw e
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* 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("unused")
|
||||||
|
|
||||||
package kotlinx.metadata.jvm
|
package kotlinx.metadata.jvm
|
||||||
|
|
||||||
import kotlinx.metadata.*
|
import kotlinx.metadata.*
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@file:JvmName("JvmMetadataUtil")
|
@file:JvmName("JvmMetadataUtil")
|
||||||
|
|
||||||
package kotlinx.metadata.jvm
|
package kotlinx.metadata.jvm
|
||||||
|
|
||||||
import kotlinx.metadata.ClassName
|
import kotlinx.metadata.ClassName
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@file:JvmName("ClassNameKt")
|
@file:JvmName("ClassNameKt")
|
||||||
|
|
||||||
package kotlinx.metadata
|
package kotlinx.metadata
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@file:JvmName("FlagsKt")
|
@file:JvmName("FlagsKt")
|
||||||
|
|
||||||
package kotlinx.metadata
|
package kotlinx.metadata
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+3
-1
@@ -56,7 +56,9 @@ interface MetadataExtensions {
|
|||||||
|
|
||||||
fun writeTypeAliasExtensions(type: KmExtensionType, proto: ProtoBuf.TypeAlias.Builder, c: WriteContext): KmTypeAliasExtensionVisitor?
|
fun writeTypeAliasExtensions(type: KmExtensionType, proto: ProtoBuf.TypeAlias.Builder, c: WriteContext): KmTypeAliasExtensionVisitor?
|
||||||
|
|
||||||
fun writeValueParameterExtensions(type: KmExtensionType, proto: ProtoBuf.ValueParameter.Builder, c: WriteContext): KmValueParameterExtensionVisitor?
|
fun writeValueParameterExtensions(
|
||||||
|
type: KmExtensionType, proto: ProtoBuf.ValueParameter.Builder, c: WriteContext
|
||||||
|
): KmValueParameterExtensionVisitor?
|
||||||
|
|
||||||
fun createClassExtension(): KmClassExtension
|
fun createClassExtension(): KmClassExtension
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.metadata.deserialization.*
|
|||||||
import org.jetbrains.kotlin.metadata.deserialization.Flags as F
|
import org.jetbrains.kotlin.metadata.deserialization.Flags as F
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows to populate [BasicReadContext] with additional data
|
* Allows to populate [ReadContext] with additional data
|
||||||
* that can be used when reading metadata in [MetadataExtensions].
|
* that can be used when reading metadata in [MetadataExtensions].
|
||||||
*/
|
*/
|
||||||
interface ReadContextExtension
|
interface ReadContextExtension
|
||||||
@@ -337,7 +337,7 @@ private fun ProtoBuf.Type.accept(v: KmTypeVisitor, c: ReadContext) {
|
|||||||
hasTypeParameter() -> v.visitTypeParameter(typeParameter)
|
hasTypeParameter() -> v.visitTypeParameter(typeParameter)
|
||||||
hasTypeParameterName() -> {
|
hasTypeParameterName() -> {
|
||||||
val id = c.getTypeParameterId(typeParameterName)
|
val id = c.getTypeParameterId(typeParameterName)
|
||||||
?: throw InconsistentKotlinMetadataException("No type parameter id for ${c[typeParameterName]}")
|
?: throw InconsistentKotlinMetadataException("No type parameter id for ${c[typeParameterName]}")
|
||||||
v.visitTypeParameter(id)
|
v.visitTypeParameter(id)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
@@ -355,7 +355,7 @@ private fun ProtoBuf.Type.accept(v: KmTypeVisitor, c: ReadContext) {
|
|||||||
|
|
||||||
if (variance != null) {
|
if (variance != null) {
|
||||||
val argumentType = argument.type(c.types)
|
val argumentType = argument.type(c.types)
|
||||||
?: throw InconsistentKotlinMetadataException("No type argument for non-STAR projection in Type")
|
?: throw InconsistentKotlinMetadataException("No type argument for non-STAR projection in Type")
|
||||||
v.visitArgument(argumentType.typeFlags, variance)?.let { argumentType.accept(it, c) }
|
v.visitArgument(argumentType.typeFlags, variance)?.let { argumentType.accept(it, c) }
|
||||||
} else {
|
} else {
|
||||||
v.visitStarProjection()
|
v.visitStarProjection()
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ fun KmAnnotationArgument<*>.writeAnnotationArgument(strings: StringTable): Proto
|
|||||||
}
|
}
|
||||||
is KmAnnotationArgument.ULongValue -> {
|
is KmAnnotationArgument.ULongValue -> {
|
||||||
this.type = ProtoBuf.Annotation.Argument.Value.Type.LONG
|
this.type = ProtoBuf.Annotation.Argument.Value.Type.LONG
|
||||||
this.intValue = value.toLong()
|
this.intValue = value
|
||||||
this.flags = Flags.IS_UNSIGNED.toFlags(true)
|
this.flags = Flags.IS_UNSIGNED.toFlags(true)
|
||||||
}
|
}
|
||||||
is KmAnnotationArgument.StringValue -> {
|
is KmAnnotationArgument.StringValue -> {
|
||||||
|
|||||||
@@ -499,7 +499,7 @@ open class PackageWriter(stringTable: StringTable, contextExtensions: List<Write
|
|||||||
|
|
||||||
open class ModuleFragmentWriter(stringTable: StringTable, contextExtensions: List<WriteContextExtension> = emptyList()) :
|
open class ModuleFragmentWriter(stringTable: StringTable, contextExtensions: List<WriteContextExtension> = emptyList()) :
|
||||||
KmModuleFragmentVisitor() {
|
KmModuleFragmentVisitor() {
|
||||||
protected val t = ProtoBuf.PackageFragment.newBuilder()
|
protected val t = ProtoBuf.PackageFragment.newBuilder()!!
|
||||||
protected val c: WriteContext = WriteContext(stringTable, contextExtensions)
|
protected val c: WriteContext = WriteContext(stringTable, contextExtensions)
|
||||||
|
|
||||||
override fun visitPackage(): KmPackageVisitor? = object : PackageWriter(c.strings, c.contextExtensions) {
|
override fun visitPackage(): KmPackageVisitor? = object : PackageWriter(c.strings, c.contextExtensions) {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* 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("unused")
|
||||||
|
|
||||||
package kotlinx.metadata
|
package kotlinx.metadata
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user