Fix: Use more precise KLIB compatibility check (by metadata version)
Issue #KT-34811
This commit is contained in:
+6
-12
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.library.KLIB_PROPERTY_METADATA_VERSION
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
|
||||
class KlibMetadataVersion(major: Int, minor: Int, patch: Int) : BinaryVersion(major, minor, patch) {
|
||||
class KlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) {
|
||||
|
||||
override fun isCompatible(): Boolean = isCompatibleTo(INSTANCE)
|
||||
|
||||
@@ -18,19 +18,13 @@ class KlibMetadataVersion(major: Int, minor: Int, patch: Int) : BinaryVersion(ma
|
||||
val INSTANCE = KlibMetadataVersion(1, 0, 0)
|
||||
|
||||
@JvmField
|
||||
val INVALID_VERSION = KlibMetadataVersion(-1, -1, -1)
|
||||
val INVALID_VERSION = KlibMetadataVersion()
|
||||
}
|
||||
}
|
||||
|
||||
fun KlibMetadataVersion(vararg values: Int): KlibMetadataVersion {
|
||||
if (values.size != 3) error("Metadata version should be in major.minor.patch format: $values")
|
||||
return KlibMetadataVersion(values[0], values[1], values[2])
|
||||
}
|
||||
|
||||
val KotlinLibrary.metadataVersion: KlibMetadataVersion
|
||||
val KotlinLibrary.metadataVersion: KlibMetadataVersion?
|
||||
get() {
|
||||
val versionString = manifestProperties.getProperty(KLIB_PROPERTY_METADATA_VERSION)
|
||||
val versionIntArray = BinaryVersion.parseVersionArray(versionString)
|
||||
?: error("Could not parse metadata version: $versionString")
|
||||
val versionString = manifestProperties.getProperty(KLIB_PROPERTY_METADATA_VERSION) ?: return null
|
||||
val versionIntArray = BinaryVersion.parseVersionArray(versionString) ?: return null
|
||||
return KlibMetadataVersion(*versionIntArray)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user