[K/Wasm] Fix object optimization false trigger on non-pure objects ^KT-66471 Fixed
This commit is contained in:
+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");
|
||||
|
||||
Reference in New Issue
Block a user