diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt index 4672c05d386..6a66814d591 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InliningContext.kt @@ -70,7 +70,13 @@ open class InliningContext( nameGenerator.subGenerator("lambda"), //mark lambda inlined hashMapOf(lambdaInfo.lambdaClassType.internalName to null), - lambdaInfo + lambdaInfo, + // TODO we also want this for the old backend (KT-28064), but this changes EnclosingMethod of objects + // in inline lambdas, so use a language version flag. + if (state.isIrBackend) + false // Do not regenerate objects in lambdas inlined into regenerated objects unless needed for some other reason. + else + classRegeneration ) fun subInlineWithClassRegeneration( @@ -86,7 +92,8 @@ open class InliningContext( fun subInline( generator: NameGenerator, additionalTypeMappings: Map = emptyMap(), - lambdaInfo: LambdaInfo? = this.lambdaInfo + lambdaInfo: LambdaInfo? = this.lambdaInfo, + classRegeneration: Boolean = this.classRegeneration ): InliningContext { val isInliningLambda = lambdaInfo != null return InliningContext( diff --git a/compiler/testData/codegen/box/coroutines/crossInlineWithCapturedOuterReceiver.kt b/compiler/testData/codegen/box/coroutines/crossInlineWithCapturedOuterReceiver.kt index 96459e600c5..296199d5562 100644 --- a/compiler/testData/codegen/box/coroutines/crossInlineWithCapturedOuterReceiver.kt +++ b/compiler/testData/codegen/box/coroutines/crossInlineWithCapturedOuterReceiver.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // WITH_RUNTIME // COMMON_COROUTINES_TEST // WITH_COROUTINES diff --git a/compiler/testData/codegen/box/coroutines/featureIntersection/delegate.kt b/compiler/testData/codegen/box/coroutines/featureIntersection/delegate.kt index e0e912b95d6..4a4c44d03b3 100644 --- a/compiler/testData/codegen/box/coroutines/featureIntersection/delegate.kt +++ b/compiler/testData/codegen/box/coroutines/featureIntersection/delegate.kt @@ -1,5 +1,4 @@ // KJS_WITH_FULL_RUNTIME -// IGNORE_BACKEND: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST diff --git a/compiler/testData/codegen/box/coroutines/kt21605.kt b/compiler/testData/codegen/box/coroutines/kt21605.kt index e2f7740d7c1..738382154f8 100644 --- a/compiler/testData/codegen/box/coroutines/kt21605.kt +++ b/compiler/testData/codegen/box/coroutines/kt21605.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST diff --git a/compiler/testData/codegen/boxInline/anonymousObject/kt13182.kt b/compiler/testData/codegen/boxInline/anonymousObject/kt13182.kt index 181665e1659..91d42494a12 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/kt13182.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/kt13182.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/kt14011_3.kt b/compiler/testData/codegen/boxInline/anonymousObject/kt14011_3.kt index 599a43cc701..77cf8a653b5 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/kt14011_3.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/kt14011_3.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChainSimple.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChainSimple.kt index 8b991e995a1..8cba9323d98 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChainSimple.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChainSimple.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_2.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_2.kt index 39761b5695e..b746026fa96 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_2.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_2.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_3.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_3.kt index d4f8fc2235f..a65c88f9e09 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_3.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/lambdaChain_3.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/noInlineLambda.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/noInlineLambda.kt index 08f8d7cc8fb..8aa242bb0fd 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/noInlineLambda.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturing/noInlineLambda.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/inlinelambdaChain.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/inlinelambdaChain.kt index b7aa9062fe5..2d1ad3de754 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/inlinelambdaChain.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/inlinelambdaChain.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple.kt index 95ba330a2bf..6a46172ff5c 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple_2.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple_2.kt index 20791f79d94..2229d03b306 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple_2.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChainSimple_2.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_2.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_2.kt index a2c0f01f770..52e6faed839 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_2.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_2.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_3.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_3.kt index d7fb50150b1..94cfc46759f 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_3.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/lambdaChain_3.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/noInlineLambda.kt b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/noInlineLambda.kt index eaf660ff014..fa95495148c 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/noInlineLambda.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/properRecapturingInClass/noInlineLambda.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/anonymousObject/sam/kt22304.kt b/compiler/testData/codegen/boxInline/anonymousObject/sam/kt22304.kt index 710a085ca46..a2b64453497 100644 --- a/compiler/testData/codegen/boxInline/anonymousObject/sam/kt22304.kt +++ b/compiler/testData/codegen/boxInline/anonymousObject/sam/kt22304.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // FULL_JDK diff --git a/compiler/testData/codegen/boxInline/enclosingInfo/inlineChain2.kt b/compiler/testData/codegen/boxInline/enclosingInfo/inlineChain2.kt index 59f4f5aca62..64e36c99087 100644 --- a/compiler/testData/codegen/boxInline/enclosingInfo/inlineChain2.kt +++ b/compiler/testData/codegen/boxInline/enclosingInfo/inlineChain2.kt @@ -1,4 +1,6 @@ // TARGET_BACKEND: JVM +// IGNORE_BACKEND: JVM_IR +// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt // WITH_REFLECT package test diff --git a/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/directFieldAccessInCrossInline.kt b/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/directFieldAccessInCrossInline.kt index 6d13f96a3dc..ff03266a302 100644 --- a/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/directFieldAccessInCrossInline.kt +++ b/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/directFieldAccessInCrossInline.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/privateInCrossInline.kt b/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/privateInCrossInline.kt index 4e0f83ee5fe..4bf507eea06 100644 --- a/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/privateInCrossInline.kt +++ b/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/privateInCrossInline.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test diff --git a/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/superInCrossInline.kt b/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/superInCrossInline.kt index 5231dbfdd35..4c5559410c1 100644 --- a/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/superInCrossInline.kt +++ b/compiler/testData/codegen/boxInline/syntheticAccessors/withinInlineLambda/superInCrossInline.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: 1.kt package test