diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 4c844489901..b3f81fb07de 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -42057,6 +42057,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @Test + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @Test @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 402a03e1b4a..7a7853f2103 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -207,9 +207,13 @@ class ExpressionCodegen( noLineNumberScope = previousState } - // TODO remove - fun gen(expression: IrExpression, type: Type, irType: IrType, data: BlockInfo): StackValue { + fun gen(expression: IrExpression, type: Type, irType: IrType, data: BlockInfo) { expression.accept(this, data).materializeAt(type, irType) + } + + // TODO remove + fun genToStackValue(expression: IrExpression, type: Type, irType: IrType, data: BlockInfo): StackValue { + gen(expression, type, irType, data) return StackValue.onStack(type, irType.toIrBasedKotlinType()) } @@ -665,7 +669,7 @@ class ExpressionCodegen( expression.symbol.owner.realType.toIrBasedKotlinType() ) else - gen(expression, type, parameterType, data) + genToStackValue(expression, type, parameterType, data) // We do not mangle functions if Result is the only parameter of the function. This means that if a function // taking `Result` as a parameter overrides a function taking `Any?`, there is no bridge unless needed for diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt index a5a29ddaa95..ca71f1830f9 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/IrInlineCodegen.kt @@ -137,7 +137,7 @@ class IrInlineCodegen( val argValue = if (irValueParameter.index >= 0) codegen.genOrGetLocal(argumentExpression, parameterType, irValueParameter.type, blockInfo) else - codegen.gen(argumentExpression, parameterType, irValueParameter.type, blockInfo) + codegen.genToStackValue(argumentExpression, parameterType, irValueParameter.type, blockInfo) if (inlineArgumentsInPlace) { codegen.visitor.addInplaceArgumentEndMarker() } diff --git a/compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt b/compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt new file mode 100644 index 00000000000..4c8a4e954ba --- /dev/null +++ b/compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt @@ -0,0 +1,18 @@ +// IGNORE_BACKEND: NATIVE, JS_IR, WASM +// IGNORE_BACKEND_FIR: JVM_IR +// MODULE: lib +// FILE: 1.kt +interface B + +object T : B + +fun B<*>.foo() {} + +// MODULE: main(lib) +// FILE: 2.kt +interface B + +fun box(): String { + T.foo() + return "OK" +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 413a71ba91e..867cda87421 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -41595,6 +41595,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @Test + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @Test @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 8fe1c113b96..bb6977f8fda 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -42057,6 +42057,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @Test + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @Test @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index f144af74900..609e9355ac3 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -33532,6 +33532,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/functionDeclaration.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index e0fd380b5e4..73a3ef131bf 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -29993,6 +29993,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @Test + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @Test @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index 3b256e8eec5..2ea5347d9f7 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -30095,6 +30095,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @Test + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @Test @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 8f679164e5a..0376cb23cf1 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -25054,6 +25054,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception { runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/functionDeclaration.kt"); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/ExternalTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/ExternalTestGenerated.java index 556d870fac5..d8b87bb8d68 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/ExternalTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/ExternalTestGenerated.java @@ -32290,6 +32290,12 @@ public class ExternalTestGenerated extends AbstractExternalNativeBlackBoxTest { runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/classDeclaration.kt"); } + @Test + @TestMetadata("differingNumberOfGenericTypeParameters.kt") + public void testDifferingNumberOfGenericTypeParameters() throws Exception { + runTest("compiler/testData/codegen/box/sameFileInSourceAndDependencies/differingNumberOfGenericTypeParameters.kt"); + } + @Test @TestMetadata("functionDeclaration.kt") public void testFunctionDeclaration() throws Exception {