JVM_IR: optimize out redundant delegated property receiver fields

Now this:

    class C {
        val x = something
        val y by x::property
    }

is *exactly* the same as this:

    class C {
        val x = something
        val y get() = x.property
    }

(plus a `getY$delegate` method)
This commit is contained in:
pyos
2021-07-02 12:35:02 +02:00
committed by Alexander Udalov
parent 2fe7cf27ad
commit d988853c11
11 changed files with 175 additions and 17 deletions
@@ -9551,6 +9551,16 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnotherMutable.kt");
}
@TestMetadata("delegateToAnotherWithSideEffects.kt")
public void testDelegateToAnotherWithSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnotherWithSideEffects.kt");
}
@TestMetadata("delegateToOpenProperty.kt")
public void testDelegateToOpenProperty() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToOpenProperty.kt");
}
@TestMetadata("delegateWithPrivateSet.kt")
public void testDelegateWithPrivateSet() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateWithPrivateSet.kt");
@@ -8957,6 +8957,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnotherMutable.kt");
}
@TestMetadata("delegateToAnotherWithSideEffects.kt")
public void testDelegateToAnotherWithSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnotherWithSideEffects.kt");
}
@TestMetadata("delegateToOpenProperty.kt")
public void testDelegateToOpenProperty() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToOpenProperty.kt");
}
@TestMetadata("delegateWithPrivateSet.kt")
public void testDelegateWithPrivateSet() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateWithPrivateSet.kt");
@@ -8957,6 +8957,16 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnotherMutable.kt");
}
@TestMetadata("delegateToAnotherWithSideEffects.kt")
public void testDelegateToAnotherWithSideEffects() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToAnotherWithSideEffects.kt");
}
@TestMetadata("delegateToOpenProperty.kt")
public void testDelegateToOpenProperty() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateToOpenProperty.kt");
}
@TestMetadata("delegateWithPrivateSet.kt")
public void testDelegateWithPrivateSet() throws Exception {
runTest("compiler/testData/codegen/box/delegatedProperty/delegateWithPrivateSet.kt");