From bbc5fa4705760bfecd6468577e98c17deca3a9fd Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 8 Aug 2018 15:34:29 +0300 Subject: [PATCH] Perform InnerClassLowerings after CallableReferenceLowering --- .../src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt | 7 +++++-- .../function/innerConstructorFromClass.kt | 1 - .../function/innerConstructorFromExtension.kt | 1 - .../function/innerConstructorFromTopLevelNoArgs.kt | 1 - .../function/innerConstructorFromTopLevelOneStringArg.kt | 1 - .../outerEnumEntryCapturedInLambdaInInnerClass.kt | 1 - compiler/testData/codegen/box/closures/kt3152.kt | 1 - .../box/dataClasses/copy/copyInObjectNestedDataClass.kt | 1 - .../codegen/box/defaultArguments/constructor/kt2852.kt | 1 - compiler/testData/codegen/box/enum/kt9711.kt | 1 - .../objectExtendsInnerOfLocalVarargAndDefault.kt | 1 - .../objectExtendsInnerOfLocalWithCapture.kt | 1 - .../box/super/superConstructor/objectExtendsLocalInner.kt | 1 - 13 files changed, 5 insertions(+), 14 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index edea722b1ba..5f467b29258 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -44,8 +44,6 @@ class JvmLower(val context: JvmBackendContext) { InterfaceLowering(context.state).runOnFilePostfix(irFile) InterfaceDelegationLowering(context.state).runOnFilePostfix(irFile) SharedVariablesLowering(context).runOnFilePostfix(irFile) - InnerClassesLowering(context).runOnFilePostfix(irFile) - InnerClassConstructorCallsLowering(context).runOnFilePostfix(irFile) irFile.acceptVoid(PatchDeclarationParentsVisitor()) @@ -59,6 +57,11 @@ class JvmLower(val context: JvmBackendContext) { ).runOnFilePostfix(irFile) CallableReferenceLowering(context).lower(irFile) + InnerClassesLowering(context).runOnFilePostfix(irFile) + InnerClassConstructorCallsLowering(context).runOnFilePostfix(irFile) + + irFile.acceptVoid(PatchDeclarationParentsVisitor()) + EnumClassLowering(context).runOnFilePostfix(irFile) //Should be before SyntheticAccessorLowering cause of synthetic accessor for companion constructor ObjectClassLowering(context).lower(irFile) diff --git a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromClass.kt b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromClass.kt index a499f9551ef..31bb102ee62 100644 --- a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromClass.kt +++ b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR class A { inner class Inner { val o = 111 diff --git a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromExtension.kt b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromExtension.kt index 8913655baac..bcde4b24cae 100644 --- a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromExtension.kt +++ b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromExtension.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR class A { inner class Inner { val o = 111 diff --git a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelNoArgs.kt b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelNoArgs.kt index 380a6251550..577eb19e7af 100644 --- a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelNoArgs.kt +++ b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelNoArgs.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR class A { inner class Inner { val o = 111 diff --git a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelOneStringArg.kt b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelOneStringArg.kt index 6ed017518ef..0eb2b831a2b 100644 --- a/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelOneStringArg.kt +++ b/compiler/testData/codegen/box/callableReference/function/innerConstructorFromTopLevelOneStringArg.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR class A { inner class Inner(val result: Int) } diff --git a/compiler/testData/codegen/box/closures/captureInSuperConstructorCall/outerEnumEntryCapturedInLambdaInInnerClass.kt b/compiler/testData/codegen/box/closures/captureInSuperConstructorCall/outerEnumEntryCapturedInLambdaInInnerClass.kt index 5e7c1014361..1efe120d20a 100644 --- a/compiler/testData/codegen/box/closures/captureInSuperConstructorCall/outerEnumEntryCapturedInLambdaInInnerClass.kt +++ b/compiler/testData/codegen/box/closures/captureInSuperConstructorCall/outerEnumEntryCapturedInLambdaInInnerClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR abstract class Base(val fn: () -> Test) enum class Test(val ok: String) { diff --git a/compiler/testData/codegen/box/closures/kt3152.kt b/compiler/testData/codegen/box/closures/kt3152.kt index 6bed9a6ec6f..59bf3eaaeeb 100644 --- a/compiler/testData/codegen/box/closures/kt3152.kt +++ b/compiler/testData/codegen/box/closures/kt3152.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR public class Test { val content = 1 inner class A { diff --git a/compiler/testData/codegen/box/dataClasses/copy/copyInObjectNestedDataClass.kt b/compiler/testData/codegen/box/dataClasses/copy/copyInObjectNestedDataClass.kt index 1adc9bb3c4b..935389c50cb 100644 --- a/compiler/testData/codegen/box/dataClasses/copy/copyInObjectNestedDataClass.kt +++ b/compiler/testData/codegen/box/dataClasses/copy/copyInObjectNestedDataClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR class Bar(val name: String) abstract class Foo { diff --git a/compiler/testData/codegen/box/defaultArguments/constructor/kt2852.kt b/compiler/testData/codegen/box/defaultArguments/constructor/kt2852.kt index f850a78f98e..9a5434a99cf 100644 --- a/compiler/testData/codegen/box/defaultArguments/constructor/kt2852.kt +++ b/compiler/testData/codegen/box/defaultArguments/constructor/kt2852.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR fun box(): String { val o = object { inner class A(val value: String = "OK") diff --git a/compiler/testData/codegen/box/enum/kt9711.kt b/compiler/testData/codegen/box/enum/kt9711.kt index ce4a36c8cd4..096316ed24b 100644 --- a/compiler/testData/codegen/box/enum/kt9711.kt +++ b/compiler/testData/codegen/box/enum/kt9711.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR enum class X { B { diff --git a/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalVarargAndDefault.kt b/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalVarargAndDefault.kt index 2aa27d51d42..eef3131ae2b 100644 --- a/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalVarargAndDefault.kt +++ b/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalVarargAndDefault.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR fun box(): String { val capture = "oh" diff --git a/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalWithCapture.kt b/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalWithCapture.kt index 8508ff58df6..b4fb7a47cee 100644 --- a/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalWithCapture.kt +++ b/compiler/testData/codegen/box/innerNested/superConstructorCall/objectExtendsInnerOfLocalWithCapture.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR fun box(): String { class Local { open inner class Inner(val s: String) { diff --git a/compiler/testData/codegen/box/super/superConstructor/objectExtendsLocalInner.kt b/compiler/testData/codegen/box/super/superConstructor/objectExtendsLocalInner.kt index d9a3811b439..ab3c695f278 100644 --- a/compiler/testData/codegen/box/super/superConstructor/objectExtendsLocalInner.kt +++ b/compiler/testData/codegen/box/super/superConstructor/objectExtendsLocalInner.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JVM_IR fun box(): String { val capture = "O"