diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt index 8b4f3330183..7e9dd1ed7a5 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/descriptors/WrappedDescriptors.kt @@ -798,7 +798,7 @@ open class WrappedPropertyDescriptor( override fun getAccessors(): List = listOfNotNull(getter, setter) - override fun getTypeParameters(): List = emptyList() + override fun getTypeParameters(): List = getter?.typeParameters.orEmpty() override fun getVisibility() = owner.visibility diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/GenerateMultifileFacades.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/GenerateMultifileFacades.kt index 4c8ffde4122..d9324d1ca61 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/GenerateMultifileFacades.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/GenerateMultifileFacades.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.deepCopyWithWrappedDescriptors import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor +import org.jetbrains.kotlin.backend.common.ir.passTypeArgumentsFrom import org.jetbrains.kotlin.backend.common.lower import org.jetbrains.kotlin.backend.common.lower.InitializersLowering import org.jetbrains.kotlin.backend.common.lower.createIrBuilder @@ -164,6 +165,7 @@ private fun IrFunction.createMultifileDelegateIfNeeded(context: JvmBackendContex function.body = context.createIrBuilder(symbol).irBlockBody { val functionForCall = computeFunctionForCall() +irReturn(irCall(functionForCall).also { call -> + call.passTypeArgumentsFrom(function) function.extensionReceiverParameter?.let { parameter -> call.extensionReceiver = irGet(parameter) } diff --git a/compiler/testData/codegen/box/jvmPackageName/multifileClass.kt b/compiler/testData/codegen/box/jvmPackageName/multifileClass.kt index e4cfab4a5c7..aba8692fa6b 100644 --- a/compiler/testData/codegen/box/jvmPackageName/multifileClass.kt +++ b/compiler/testData/codegen/box/jvmPackageName/multifileClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/multifileClasses/genericProperty.kt b/compiler/testData/codegen/box/multifileClasses/genericProperty.kt new file mode 100644 index 00000000000..914b84f1444 --- /dev/null +++ b/compiler/testData/codegen/box/multifileClasses/genericProperty.kt @@ -0,0 +1,17 @@ +// TARGET_BACKEND: JVM +// WITH_RUNTIME +// FILE: A.kt + +@file:kotlin.jvm.JvmMultifileClass +@file:kotlin.jvm.JvmName("A") + +package test + +public val Array.foo: String + get() = this[0].toString() + this[1].toString() + +// FILE: B.kt + +import test.foo + +fun box(): String = arrayOf('O', "K").foo diff --git a/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOptimizedMultifileClass.kt b/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOptimizedMultifileClass.kt index 2d54472d3c8..1922d5eaf82 100644 --- a/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOptimizedMultifileClass.kt +++ b/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOptimizedMultifileClass.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME // !INHERIT_MULTIFILE_PARTS diff --git a/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOtherPackage.kt b/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOtherPackage.kt index 9a2cc3bdb7a..4071a3fa702 100644 --- a/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOtherPackage.kt +++ b/compiler/testData/codegen/boxInline/multifileClasses/inlineFromOtherPackage.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // TARGET_BACKEND: JVM // FILE: 1.kt // WITH_RUNTIME diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 368083939b1..4a3be830b81 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -16254,6 +16254,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/multifileClasses/constPropertyReferenceFromMultifileClass.kt"); } + @TestMetadata("genericProperty.kt") + public void testGenericProperty() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/genericProperty.kt"); + } + @TestMetadata("inlineMultifileClassMemberFromOtherPackage.kt") public void testInlineMultifileClassMemberFromOtherPackage() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/inlineMultifileClassMemberFromOtherPackage.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 5988f64177b..32e38204923 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -16254,6 +16254,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/multifileClasses/constPropertyReferenceFromMultifileClass.kt"); } + @TestMetadata("genericProperty.kt") + public void testGenericProperty() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/genericProperty.kt"); + } + @TestMetadata("inlineMultifileClassMemberFromOtherPackage.kt") public void testInlineMultifileClassMemberFromOtherPackage() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/inlineMultifileClassMemberFromOtherPackage.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 0745636b55a..446ff1a0de3 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -15139,6 +15139,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/multifileClasses/constPropertyReferenceFromMultifileClass.kt"); } + @TestMetadata("genericProperty.kt") + public void testGenericProperty() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/genericProperty.kt"); + } + @TestMetadata("inlineMultifileClassMemberFromOtherPackage.kt") public void testInlineMultifileClassMemberFromOtherPackage() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/inlineMultifileClassMemberFromOtherPackage.kt");