CallsLowering

This commit is contained in:
Anton Bannykh
2019-12-24 20:24:07 +03:00
committed by Anton Bannykh
parent 64a5039ebe
commit 76c7668162
@@ -5,18 +5,19 @@
package org.jetbrains.kotlin.ir.backend.js.lower.calls
import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.backend.common.BodyLoweringPass
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
import org.jetbrains.kotlin.ir.util.hasAnnotation
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
class CallsLowering(val context: JsIrBackendContext) : FileLoweringPass {
class CallsLowering(val context: JsIrBackendContext) : BodyLoweringPass {
private val transformers = listOf(
NumberOperatorCallsTransformer(context),
NumberConversionCallsTransformer(context),
@@ -30,8 +31,10 @@ class CallsLowering(val context: JsIrBackendContext) : FileLoweringPass {
JsonIntrinsics(context)
)
override fun lower(irFile: IrFile) {
irFile.transformChildrenVoid(object : IrElementTransformerVoid() {
override fun lower(irBody: IrBody, container: IrDeclaration) {
if (container is IrFunction && container.hasAnnotation(context.intrinsics.doNotIntrinsifyAnnotationSymbol)) return
irBody.transformChildrenVoid(object : IrElementTransformerVoid() {
override fun visitFunction(declaration: IrFunction): IrStatement {
if (declaration.hasAnnotation(context.intrinsics.doNotIntrinsifyAnnotationSymbol))
return declaration