ClassReferenceLowering

This commit is contained in:
Anton Bannykh
2019-12-24 21:00:33 +03:00
committed by Anton Bannykh
parent d9646a5361
commit 21ef35bc25
@@ -5,19 +5,14 @@
package org.jetbrains.kotlin.ir.backend.js.lower 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.IrElementTransformerVoidWithContext import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext
import org.jetbrains.kotlin.backend.common.ir.Symbols import org.jetbrains.kotlin.backend.common.ir.Symbols
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
import org.jetbrains.kotlin.ir.backend.js.utils.toJsArrayLiteral import org.jetbrains.kotlin.ir.backend.js.utils.toJsArrayLiteral
import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrClassReference
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrGetClass
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
@@ -28,7 +23,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.*
class ClassReferenceLowering(val context: JsIrBackendContext) : FileLoweringPass { class ClassReferenceLowering(val context: JsIrBackendContext) : BodyLoweringPass {
private val intrinsics = context.intrinsics private val intrinsics = context.intrinsics
private val primitiveClassesObject = context.primitiveClassesObject private val primitiveClassesObject = context.primitiveClassesObject
@@ -223,8 +218,8 @@ class ClassReferenceLowering(val context: JsIrBackendContext) : FileLoweringPass
) )
} }
override fun lower(irFile: IrFile) { override fun lower(irBody: IrBody, container: IrDeclaration) {
irFile.transformChildrenVoid(object : IrElementTransformerVoidWithContext() { irBody.transformChildrenVoid(object : IrElementTransformerVoidWithContext() {
override fun visitGetClass(expression: IrGetClass) = override fun visitGetClass(expression: IrGetClass) =
callGetKClassFromExpression( callGetKClassFromExpression(
returnType = expression.type, returnType = expression.type,