[K/N][optmz] Fix for https://youtrack.jetbrains.com/issue/KT-49234
This commit is contained in:
+2
-4
@@ -439,10 +439,8 @@ internal object FileInitializersOptimization {
|
||||
} else {
|
||||
require(objectClass.isExternal || objectClass is IrLazyClass) { "No constructor for ${objectClass.render()}" }
|
||||
}
|
||||
val file = objectClass.fileOrNull ?: return data
|
||||
val fileId = initializedFiles.fileIds[file]!!
|
||||
if (data.get(fileId)) return data
|
||||
return data.copy().also { it.set(fileId) }
|
||||
// Don't update [data] as the constructor might not be called here (the object might be initialized already).
|
||||
return data
|
||||
}
|
||||
|
||||
private fun processCall(expression: IrFunctionAccessExpression, actualCallee: IrFunction, data: BitSet): BitSet {
|
||||
|
||||
@@ -1622,6 +1622,11 @@ standaloneTest("initializers_return2") {
|
||||
useGoldenData = true
|
||||
}
|
||||
|
||||
standaloneTest("initializers_object") {
|
||||
source = "codegen/initializers/object.kt"
|
||||
flags = ['-Xir-property-lazy-initialization=enable']
|
||||
}
|
||||
|
||||
linkTest("initializers_linkTest1") {
|
||||
useGoldenData = true
|
||||
source = "codegen/initializers/linkTest1_main.kt"
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// FILE: lib.kt
|
||||
var z = false
|
||||
|
||||
// FILE: lib2.kt
|
||||
val x = foo()
|
||||
|
||||
fun foo(): Int {
|
||||
z = true
|
||||
return 42
|
||||
}
|
||||
|
||||
object Z {
|
||||
fun bar() { }
|
||||
fun baz() = x
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
import kotlin.test.*
|
||||
|
||||
fun main() {
|
||||
Z.bar()
|
||||
assertFalse(z)
|
||||
assertEquals(42, Z.baz())
|
||||
assertTrue(z)
|
||||
}
|
||||
Reference in New Issue
Block a user