Skip to content

Commit 72bac8f

Browse files
francescoo22Space Team
authored andcommitted
[KLIB] Deduce the metadata version based on LV in KLIB-based backends
^KT-74417 Fixed
1 parent 560822c commit 72bac8f

File tree

5 files changed

+8
-20
lines changed

5 files changed

+8
-20
lines changed

compiler/frontend.common/src/org/jetbrains/kotlin/util/klibMetadataHelpers.kt

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,11 @@ import org.jetbrains.kotlin.config.LanguageVersion
1010
import org.jetbrains.kotlin.config.languageVersionSettings
1111
import org.jetbrains.kotlin.config.metadataVersion
1212
import org.jetbrains.kotlin.metadata.deserialization.MetadataVersion
13-
import java.util.*
1413

15-
val KLIB_LEGACY_METADATA_VERSION = MetadataVersion(1, 4, 1)
14+
private val KLIB_LEGACY_METADATA_VERSION = MetadataVersion(1, 4, 1)
1615

17-
private val LANGUAGE_TO_KLIB_METADATA_VERSION = EnumMap<LanguageVersion, MetadataVersion>(LanguageVersion::class.java).apply {
18-
LanguageVersion.entries.forEach { this[it] = KLIB_LEGACY_METADATA_VERSION }
19-
// TODO KT-74417 Uncomment in version 2.3 to bump metadata version
20-
this[LanguageVersion.KOTLIN_2_3] = KLIB_LEGACY_METADATA_VERSION // MetadataVersion(2, 3, 0)
21-
22-
check(size == LanguageVersion.entries.size) {
23-
"Please add mappings from the missing LanguageVersion instances to the corresponding MetadataVersion " +
24-
"in `LANGUAGE_TO_KLIB_METADATA_VERSION`"
25-
}
26-
}
27-
28-
fun LanguageVersion.toKlibMetadataVersion(): MetadataVersion = LANGUAGE_TO_KLIB_METADATA_VERSION.getValue(this)
16+
fun LanguageVersion.toKlibMetadataVersion(): MetadataVersion =
17+
if (this < LanguageVersion.KOTLIN_2_3) KLIB_LEGACY_METADATA_VERSION else toJvmMetadataVersion()
2918

3019
fun CompilerConfiguration.klibMetadataVersionOrDefault(
3120
languageVersion: LanguageVersion = languageVersionSettings.languageVersion

kotlin-native/Interop/StubGenerator/src/org/jetbrains/kotlin/native/interop/gen/jvm/InteropLibraryCreation.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.konan.library.impl.KonanLibraryWriterImpl
1414
import org.jetbrains.kotlin.konan.target.KonanTarget
1515
import org.jetbrains.kotlin.library.*
1616
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
17-
import org.jetbrains.kotlin.util.KLIB_LEGACY_METADATA_VERSION
17+
import org.jetbrains.kotlin.metadata.deserialization.MetadataVersion
1818
import java.util.*
1919

2020
fun createInteropLibrary(
@@ -32,8 +32,7 @@ fun createInteropLibrary(
3232
val version = KotlinLibraryVersioning(
3333
abiVersion = KotlinAbiVersion.CURRENT,
3434
compilerVersion = KotlinCompilerVersion.VERSION,
35-
// TODO KT-74417 Consider using `MetadataVersion.INSTANCE` in version 2.3 here
36-
metadataVersion = KLIB_LEGACY_METADATA_VERSION,
35+
metadataVersion = MetadataVersion.INSTANCE,
3736
)
3837
val libFile = File(outputPath)
3938
val unzippedDir = if (nopack) libFile else org.jetbrains.kotlin.konan.file.createTempDir("klib")

native/native.tests/testData/klib/dump-metadata/builtinsSerializer/annotatedEnumEntry.fir.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ library {
1010

1111
public final annotation class test/Anno : kotlin/Annotation {
1212

13-
public constructor(value: kotlin/String /* = ... */, x: kotlin/Int /* = ... */)
13+
public constructor(value: kotlin/String = "0", x: kotlin/Int = 0)
1414

1515
public final val value: kotlin/String
1616
public final get

native/native.tests/testData/klib/dump-metadata/builtinsSerializer/annotatedEnumEntry.v1.fir.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ library {
1212
public final annotation class test/Anno : kotlin/Annotation {
1313

1414
// signature: test/Anno.<init>|-2457917570611619111[0]
15-
public constructor(value: kotlin/String /* = ... */, x: kotlin/Int /* = ... */)
15+
public constructor(value: kotlin/String = "0", x: kotlin/Int = 0)
1616

1717
// signature: test/Anno.value|1987073854177347439[0]
1818
public final val value: kotlin/String

native/native.tests/testData/klib/dump-metadata/builtinsSerializer/annotatedEnumEntry.v2.fir.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ library {
1212
public final annotation class test/Anno : kotlin/Annotation {
1313

1414
// signature: test/Anno.<init>|<init>(kotlin.String;kotlin.Int){}[0]
15-
public constructor(value: kotlin/String /* = ... */, x: kotlin/Int /* = ... */)
15+
public constructor(value: kotlin/String = "0", x: kotlin/Int = 0)
1616

1717
// signature: test/Anno.value|{}value[0]
1818
public final val value: kotlin/String

0 commit comments

Comments
 (0)