K2 plugins: create companions with same expect/actual as their owners
#KT-59299 Fixed
This commit is contained in:
committed by
Space Team
parent
77e5f077f3
commit
8e882ea797
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildOuterClassTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.origin
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtension
|
||||
@@ -159,6 +160,7 @@ public fun FirExtension.createCompanionObject(
|
||||
modality = Modality.FINAL
|
||||
status {
|
||||
isCompanion = true
|
||||
isExpect = owner.isExpect
|
||||
}
|
||||
}.build()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// LANGUAGE: +MultiPlatformProjects
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR
|
||||
// IGNORE REASON: multimodule MPP tests are not supported for K1
|
||||
// WITH_STDLIB
|
||||
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
expect sealed class Some
|
||||
|
||||
fun s(): KSerializer<Some> = Some.Companion.serializer()
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
actual sealed class Some
|
||||
|
||||
fun box(): String = if (s().descriptor.toString() == Some.serializer().descriptor.toString()) "OK" else "fail"
|
||||
+6
@@ -93,6 +93,12 @@ public class SerializationFirLightTreeBlackBoxTestGenerated extends AbstractSeri
|
||||
runTest("plugins/kotlinx-serialization/testData/boxIr/expectActual.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("expectActualSealedClass.kt")
|
||||
public void testExpectActualSealedClass() throws Exception {
|
||||
runTest("plugins/kotlinx-serialization/testData/boxIr/expectActualSealedClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("externalSerialierJava.kt")
|
||||
public void testExternalSerialierJava() throws Exception {
|
||||
|
||||
+6
@@ -91,6 +91,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT
|
||||
runTest("plugins/kotlinx-serialization/testData/boxIr/expectActual.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("expectActualSealedClass.kt")
|
||||
public void testExpectActualSealedClass() throws Exception {
|
||||
runTest("plugins/kotlinx-serialization/testData/boxIr/expectActualSealedClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("externalSerialierJava.kt")
|
||||
public void testExternalSerialierJava() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user