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