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.buildOuterClassTypeParameterRef
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.origin
|
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.declarations.utils.isLocal
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirExtension
|
import org.jetbrains.kotlin.fir.extensions.FirExtension
|
||||||
@@ -159,6 +160,7 @@ public fun FirExtension.createCompanionObject(
|
|||||||
modality = Modality.FINAL
|
modality = Modality.FINAL
|
||||||
status {
|
status {
|
||||||
isCompanion = true
|
isCompanion = true
|
||||||
|
isExpect = owner.isExpect
|
||||||
}
|
}
|
||||||
}.build()
|
}.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");
|
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
|
@Test
|
||||||
@TestMetadata("externalSerialierJava.kt")
|
@TestMetadata("externalSerialierJava.kt")
|
||||||
public void testExternalSerialierJava() throws Exception {
|
public void testExternalSerialierJava() throws Exception {
|
||||||
|
|||||||
+6
@@ -91,6 +91,12 @@ public class SerializationIrBoxTestGenerated extends AbstractSerializationIrBoxT
|
|||||||
runTest("plugins/kotlinx-serialization/testData/boxIr/expectActual.kt");
|
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
|
@Test
|
||||||
@TestMetadata("externalSerialierJava.kt")
|
@TestMetadata("externalSerialierJava.kt")
|
||||||
public void testExternalSerialierJava() throws Exception {
|
public void testExternalSerialierJava() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user