PrimitiveCompanionLowering

This commit is contained in:
Anton Bannykh
2019-12-24 21:28:37 +03:00
committed by Anton Bannykh
parent edf6dec63b
commit fb36432cb5
@@ -5,12 +5,13 @@
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.descriptors.ClassDescriptor
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrGetObjectValue
@@ -22,7 +23,7 @@ import org.jetbrains.kotlin.ir.util.irCall
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
class PrimitiveCompanionLowering(val context: JsIrBackendContext) : FileLoweringPass {
class PrimitiveCompanionLowering(val context: JsIrBackendContext) : BodyLoweringPass {
private fun getActualPrimitiveCompanion(irClass: IrClass): IrClass? {
if (!irClass.isCompanion)
@@ -55,8 +56,8 @@ class PrimitiveCompanionLowering(val context: JsIrBackendContext) : FileLowering
.single { it.name == function.name }
}
override fun lower(irFile: IrFile) {
irFile.transformChildrenVoid(object : IrElementTransformerVoid() {
override fun lower(irBody: IrBody, container: IrDeclaration) {
irBody.transformChildrenVoid(object : IrElementTransformerVoid() {
override fun visitGetObjectValue(expression: IrGetObjectValue): IrExpression {
val irClass = expression.symbol.owner
val actualCompanion = getActualPrimitiveCompanion(irClass) ?: return expression