diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index e10bea12101..6c6953d78e8 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -28798,6 +28798,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/vararg/kt1978.kt"); } + @TestMetadata("kt37715.kt") + public void testKt37715() throws Exception { + runTest("compiler/testData/codegen/box/vararg/kt37715.kt"); + } + @TestMetadata("kt37779.kt") public void testKt37779() throws Exception { runTest("compiler/testData/codegen/box/vararg/kt37779.kt"); diff --git a/compiler/testData/codegen/box/vararg/kt37715.kt b/compiler/testData/codegen/box/vararg/kt37715.kt new file mode 100644 index 00000000000..023b7340e9e --- /dev/null +++ b/compiler/testData/codegen/box/vararg/kt37715.kt @@ -0,0 +1,12 @@ +// !LANGUAGE: +NewInference +// WITH_RUNTIME +// KJS_WITH_FULL_RUNTIME + +import kotlin.collections.toList + +fun foo(vararg values: T) = values.toList() + +fun box(): String { + val a = foo(1, 4.5) + return "OK" +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 7b6ded59f65..57a5e76dd91 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -30384,6 +30384,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/vararg/kt1978.kt"); } + @TestMetadata("kt37715.kt") + public void testKt37715() throws Exception { + runTest("compiler/testData/codegen/box/vararg/kt37715.kt"); + } + @TestMetadata("kt37779.kt") public void testKt37779() throws Exception { runTest("compiler/testData/codegen/box/vararg/kt37779.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index f8014d9147e..126764324e5 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -29201,6 +29201,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/vararg/kt1978.kt"); } + @TestMetadata("kt37715.kt") + public void testKt37715() throws Exception { + runTest("compiler/testData/codegen/box/vararg/kt37715.kt"); + } + @TestMetadata("kt37779.kt") public void testKt37779() throws Exception { runTest("compiler/testData/codegen/box/vararg/kt37779.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 0b07f3fb5d7..0f9db1d7ead 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -28798,6 +28798,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/vararg/kt1978.kt"); } + @TestMetadata("kt37715.kt") + public void testKt37715() throws Exception { + runTest("compiler/testData/codegen/box/vararg/kt37715.kt"); + } + @TestMetadata("kt37779.kt") public void testKt37779() throws Exception { runTest("compiler/testData/codegen/box/vararg/kt37779.kt"); diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt index df15f4b635f..1c5174b7ce4 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/typeSignatureMapping.kt @@ -77,7 +77,8 @@ fun mapType( val constructor = kotlinType.constructor if (constructor is IntersectionTypeConstructor) { - val commonSupertype = typeMappingConfiguration.commonSupertype(constructor.supertypes) + val intersectionType = constructor.getAlternativeType() ?: + typeMappingConfiguration.commonSupertype(constructor.supertypes) // interface In // open class A : In // open class B : In @@ -85,7 +86,7 @@ fun mapType( // So replace arguments with star-projections to prevent infinite recursive mapping // It's not very important because such types anyway are prohibited in declarations return mapType( - commonSupertype.replaceArgumentsWithStarProjections(), + intersectionType.replaceArgumentsWithStarProjections(), factory, mode, typeMappingConfiguration, descriptorTypeWriter, writeGenericType ) } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index f63c224ad32..00a5dedc0db 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -23299,6 +23299,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/vararg/kt1978.kt"); } + @TestMetadata("kt37715.kt") + public void testKt37715() throws Exception { + runTest("compiler/testData/codegen/box/vararg/kt37715.kt"); + } + @TestMetadata("kt37779.kt") public void testKt37779() throws Exception { runTest("compiler/testData/codegen/box/vararg/kt37779.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index f02bce10943..92c8e198e72 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -23359,6 +23359,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/vararg/kt1978.kt"); } + @TestMetadata("kt37715.kt") + public void testKt37715() throws Exception { + runTest("compiler/testData/codegen/box/vararg/kt37715.kt"); + } + @TestMetadata("kt37779.kt") public void testKt37779() throws Exception { runTest("compiler/testData/codegen/box/vararg/kt37779.kt");