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.
|
||||
*/
|
||||
|
||||
@file:Suppress("MemberVisibilityCanBePrivate")
|
||||
|
||||
package kotlinx.metadata.jvm
|
||||
|
||||
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) {
|
||||
private val classData by lazy(PUBLICATION) {
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -68,12 +68,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||
extraInt: Int = 0
|
||||
): KotlinClassMetadata.Class {
|
||||
): Class {
|
||||
val (d1, d2) = writeProtoBufData(t.build(), c)
|
||||
val metadata = KotlinClassHeader(
|
||||
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) {
|
||||
private val packageData by lazy(PUBLICATION) {
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -123,12 +123,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||
extraInt: Int = 0
|
||||
): KotlinClassMetadata.FileFacade {
|
||||
): FileFacade {
|
||||
val (d1, d2) = writeProtoBufData(t.build(), c)
|
||||
val metadata = KotlinClassHeader(
|
||||
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,
|
||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||
extraInt: Int = 0
|
||||
): KotlinClassMetadata.SyntheticClass {
|
||||
): SyntheticClass {
|
||||
val proto = t?.build()
|
||||
val (d1, d2) =
|
||||
if (proto != null) writeProtoBufData(proto, c)
|
||||
else Pair(emptyArray(), emptyArray())
|
||||
if (proto != null) writeProtoBufData(proto, c)
|
||||
else Pair(emptyArray(), emptyArray())
|
||||
val metadata = KotlinClassHeader(
|
||||
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,
|
||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||
extraInt: Int = 0
|
||||
): KotlinClassMetadata.MultiFileClassFacade {
|
||||
): MultiFileClassFacade {
|
||||
val metadata = KotlinClassHeader(
|
||||
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND, metadataVersion, bytecodeVersion, partClassNames.toTypedArray(),
|
||||
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) {
|
||||
private val packageData by lazy(PUBLICATION) {
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -307,12 +307,12 @@ sealed class KotlinClassMetadata(val header: KotlinClassHeader) {
|
||||
metadataVersion: IntArray = KotlinClassHeader.COMPATIBLE_METADATA_VERSION,
|
||||
bytecodeVersion: IntArray = KotlinClassHeader.COMPATIBLE_BYTECODE_VERSION,
|
||||
extraInt: Int = 0
|
||||
): KotlinClassMetadata.MultiFileClassPart {
|
||||
): MultiFileClassPart {
|
||||
val (d1, d2) = writeProtoBufData(t.build(), c)
|
||||
val metadata = KotlinClassHeader(
|
||||
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 {
|
||||
when (header.kind) {
|
||||
KotlinClassHeader.CLASS_KIND -> KotlinClassMetadata.Class(header)
|
||||
KotlinClassHeader.FILE_FACADE_KIND -> KotlinClassMetadata.FileFacade(header)
|
||||
KotlinClassHeader.SYNTHETIC_CLASS_KIND -> KotlinClassMetadata.SyntheticClass(header)
|
||||
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND -> KotlinClassMetadata.MultiFileClassFacade(header)
|
||||
KotlinClassHeader.MULTI_FILE_CLASS_PART_KIND -> KotlinClassMetadata.MultiFileClassPart(header)
|
||||
else -> KotlinClassMetadata.Unknown(header)
|
||||
KotlinClassHeader.CLASS_KIND -> Class(header)
|
||||
KotlinClassHeader.FILE_FACADE_KIND -> FileFacade(header)
|
||||
KotlinClassHeader.SYNTHETIC_CLASS_KIND -> SyntheticClass(header)
|
||||
KotlinClassHeader.MULTI_FILE_CLASS_FACADE_KIND -> MultiFileClassFacade(header)
|
||||
KotlinClassHeader.MULTI_FILE_CLASS_PART_KIND -> MultiFileClassPart(header)
|
||||
else -> Unknown(header)
|
||||
}
|
||||
} catch (e: InconsistentKotlinMetadataException) {
|
||||
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.
|
||||
*/
|
||||
|
||||
@file:Suppress("unused")
|
||||
|
||||
package kotlinx.metadata.jvm
|
||||
|
||||
import kotlinx.metadata.*
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
@file:JvmName("JvmMetadataUtil")
|
||||
|
||||
package kotlinx.metadata.jvm
|
||||
|
||||
import kotlinx.metadata.ClassName
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
@file:JvmName("ClassNameKt")
|
||||
|
||||
package kotlinx.metadata
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
@file:JvmName("FlagsKt")
|
||||
|
||||
package kotlinx.metadata
|
||||
|
||||
/**
|
||||
|
||||
+3
-1
@@ -56,7 +56,9 @@ interface MetadataExtensions {
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.metadata.deserialization.*
|
||||
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].
|
||||
*/
|
||||
interface ReadContextExtension
|
||||
@@ -337,7 +337,7 @@ private fun ProtoBuf.Type.accept(v: KmTypeVisitor, c: ReadContext) {
|
||||
hasTypeParameter() -> v.visitTypeParameter(typeParameter)
|
||||
hasTypeParameterName() -> {
|
||||
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)
|
||||
}
|
||||
else -> {
|
||||
@@ -355,7 +355,7 @@ private fun ProtoBuf.Type.accept(v: KmTypeVisitor, c: ReadContext) {
|
||||
|
||||
if (variance != null) {
|
||||
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) }
|
||||
} else {
|
||||
v.visitStarProjection()
|
||||
|
||||
@@ -76,7 +76,7 @@ fun KmAnnotationArgument<*>.writeAnnotationArgument(strings: StringTable): Proto
|
||||
}
|
||||
is KmAnnotationArgument.ULongValue -> {
|
||||
this.type = ProtoBuf.Annotation.Argument.Value.Type.LONG
|
||||
this.intValue = value.toLong()
|
||||
this.intValue = value
|
||||
this.flags = Flags.IS_UNSIGNED.toFlags(true)
|
||||
}
|
||||
is KmAnnotationArgument.StringValue -> {
|
||||
|
||||
@@ -499,7 +499,7 @@ open class PackageWriter(stringTable: StringTable, contextExtensions: List<Write
|
||||
|
||||
open class ModuleFragmentWriter(stringTable: StringTable, contextExtensions: List<WriteContextExtension> = emptyList()) :
|
||||
KmModuleFragmentVisitor() {
|
||||
protected val t = ProtoBuf.PackageFragment.newBuilder()
|
||||
protected val t = ProtoBuf.PackageFragment.newBuilder()!!
|
||||
protected val c: WriteContext = WriteContext(stringTable, 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.
|
||||
*/
|
||||
|
||||
@file:Suppress("unused")
|
||||
|
||||
package kotlinx.metadata
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user