Plumbing KlibMetadataVersion and KlibIrVersion values to klib manifest

This commit is contained in:
Alexander Gorshenev
2019-11-28 03:14:25 +03:00
committed by alexander-gorshenev
parent bf12f7eee0
commit b0f077ff4b
22 changed files with 128 additions and 136 deletions
@@ -0,0 +1,27 @@
package org.jetbrains.kotlin.backend.common.serialization
import org.jetbrains.kotlin.library.KLIB_PROPERTY_IR_VERSION
import org.jetbrains.kotlin.library.KotlinLibrary
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
class KlibIrVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
override fun isCompatible(): Boolean = isCompatibleTo(INSTANCE)
companion object {
@JvmField
val INSTANCE = KlibIrVersion(1, 0, 0)
@JvmField
val INVALID_VERSION = KlibIrVersion(-1, -1, -1)
}
}
val KotlinLibrary.metadataVersion: KlibIrVersion
get() {
val versionString = manifestProperties.getProperty(KLIB_PROPERTY_IR_VERSION)
val versionIntArray = BinaryVersion.parseVersionArray(versionString)
?: error("Could not parse metadata version: $versionString")
return KlibIrVersion(*versionIntArray)
}
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable
import org.jetbrains.kotlin.backend.common.serialization.isExpectMember
import org.jetbrains.kotlin.backend.common.serialization.isSerializableExpectClass
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataSerializer
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor