JS IR: minor fix for callable ref translation

The caching variable has to have no initializers so that there is no
dependence on evaluation order.
This commit is contained in:
Anton Bannykh
2018-06-18 13:01:03 +03:00
parent 43e3314255
commit b551afb202
10 changed files with 4 additions and 13 deletions
@@ -257,12 +257,12 @@ class CallableReferenceLowering(val context: JsIrBackendContext) : FileLoweringP
val cacheName = "${getterFunction.name}_${Namer.KCALLABLE_CACHE_SUFFIX}"
val cacheVarSymbol =
JsSymbolBuilder.buildVar(getterFunction.descriptor.containingDeclaration, getterFunction.returnType, cacheName, true)
val irCacheNull = JsIrBuilder.buildNull(cacheVarSymbol.descriptor.type)
val irCacheDeclaration = JsIrBuilder.buildVar(cacheVarSymbol, irCacheNull)
val irNull = JsIrBuilder.buildNull(cacheVarSymbol.descriptor.type)
val irCacheDeclaration = JsIrBuilder.buildVar(cacheVarSymbol)
val irCacheValue = JsIrBuilder.buildGetValue(cacheVarSymbol)
val irIfCondition = JsIrBuilder.buildCall(context.irBuiltIns.eqeqeqSymbol).apply {
val irIfCondition = JsIrBuilder.buildCall(context.irBuiltIns.eqeqSymbol).apply {
putValueArgument(0, irCacheValue)
putValueArgument(1, irCacheNull)
putValueArgument(1, irNull)
}
val irSetCache = JsIrBuilder.buildSetVariable(cacheVarSymbol, JsIrBuilder.buildGetValue(varSymbol))
val thenStatements = mutableListOf<IrStatement>().apply {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
import kotlin.reflect.KProperty
class Delegate<T>(val f: (T) -> Int) {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
class A {
companion object
}
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
package a.b
interface Test {
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
typealias S = String
typealias SF<T> = (T) -> S
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1114
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1116
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1111
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1112
/*
* Copy of JVM-backend test