[K/Wasm] Fix object optimization false trigger on non-pure objects ^KT-66471 Fixed
This commit is contained in:
+6
@@ -4882,6 +4882,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4882,6 +4882,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4865,6 +4865,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4865,6 +4865,12 @@ public class FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGener
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4865,6 +4865,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ class PurifyObjectInstanceGettersLowering(val context: JsCommonBackendContext) :
|
||||
|
||||
private fun IrStatement.isPureStatementForObjectInitialization(owner: IrClass): Boolean {
|
||||
return (
|
||||
this is IrReturn ||
|
||||
(this is IrReturn && value.isPureStatementForObjectInitialization(owner)) ||
|
||||
// Only objects which don't have a class parent
|
||||
(this is IrDelegatingConstructorCall && symbol.owner.parent == context.irBuiltIns.anyClass.owner) ||
|
||||
(this is IrExpression && isPure(anyVariable = true, checkFields = false, context = context)) ||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
// KT-66471
|
||||
|
||||
interface TestInterface {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
var result: Any? = "Fail: not initialized"
|
||||
|
||||
object TestObject {
|
||||
private val test = run {
|
||||
result = TestInterface::foo
|
||||
"OK"
|
||||
}
|
||||
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
TestObject.bar()
|
||||
return if (result is Function<*>) "OK" else result.toString()
|
||||
}
|
||||
+6
@@ -4865,6 +4865,12 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4667,6 +4667,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4865,6 +4865,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4865,6 +4865,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+6
@@ -4865,6 +4865,12 @@ public class FirBlackBoxCodegenTestWithInlineScopesGenerated extends AbstractFir
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
|
||||
+5
@@ -4255,6 +4255,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("javaField.kt")
|
||||
public void testJavaField() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/javaField.kt");
|
||||
|
||||
+6
@@ -3611,6 +3611,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
Generated
+6
@@ -3611,6 +3611,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
+6
@@ -3611,6 +3611,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
+6
@@ -3611,6 +3611,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
+6
@@ -3697,6 +3697,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
+6
@@ -3781,6 +3781,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
+6
@@ -3613,6 +3613,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
+6
@@ -3698,6 +3698,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
Generated
+6
@@ -3599,6 +3599,12 @@ public class FirWasmJsCodegenBoxTestGenerated extends AbstractFirWasmJsCodegenBo
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
Generated
+6
@@ -3599,6 +3599,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/callableReference/inlineArrayConstructors.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("interfaceMethodReference.kt")
|
||||
public void testInterfaceMethodReference() {
|
||||
runTest("compiler/testData/codegen/box/callableReference/interfaceMethodReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt21014.kt")
|
||||
public void testKt21014() {
|
||||
|
||||
Reference in New Issue
Block a user