kotlinx-metadata: reformat, cleanup, fix inspections

This commit is contained in:
Alexander Udalov
2020-10-07 17:41:38 +02:00
parent c89c31cd29
commit 90d66b0ba5
11 changed files with 38 additions and 27 deletions
@@ -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
/**
@@ -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
/**