From 09a2c145a9008063001fdb8527e721583b322e01 Mon Sep 17 00:00:00 2001 From: Anton Bannykh Date: Tue, 24 Dec 2019 23:10:40 +0300 Subject: [PATCH] CallableReferenceLowering --- .../backend/js/lower/CallableReferenceLowering.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt index e0ed41359e9..ce7af07a176 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.ir.backend.js.lower -import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.backend.common.BodyLoweringPass import org.jetbrains.kotlin.backend.common.lower.BOUND_VALUE_PARAMETER import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.ir.IrStatement @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrTypeProjection import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.types.makeNullable +import org.jetbrains.kotlin.ir.util.file import org.jetbrains.kotlin.ir.util.isInlined import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid @@ -42,14 +43,15 @@ data class CallableReferenceKey( ) // TODO: generate $metadata$ property and fill it with corresponding KFunction/KProperty interface -class CallableReferenceLowering(val context: JsIrBackendContext) : FileLoweringPass { +class CallableReferenceLowering(val context: JsIrBackendContext) : BodyLoweringPass { private val callableToFactoryFunction = context.callableReferencesCache private val newDeclarations = mutableListOf() - private val implicitDeclarationFile = context.implicitDeclarationFile + private lateinit var implicitDeclarationFile: IrFile //= context.implicitDeclarationFile - override fun lower(irFile: IrFile) { + override fun lower(irBody: IrBody, container: IrDeclaration) { newDeclarations.clear() - irFile.transformChildrenVoid(CallableReferenceLowerTransformer()) + implicitDeclarationFile = container.file // TODO + irBody.transformChildrenVoid(CallableReferenceLowerTransformer()) implicitDeclarationFile.declarations += newDeclarations } @@ -496,7 +498,7 @@ class CallableReferenceLowering(val context: JsIrBackendContext) : FileLoweringP closureFunction.valueParameters += unboundParamDeclarations - val callTarget = context.mapping.defaultArgumentsDispatchFunction[declaration] ?: declaration + val callTarget = declaration val target = callTarget.symbol