[JS IR] Do not forbid typeOf inlining if it is not required
This commit is contained in:
+3
-2
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
|
||||
class FunctionInlining(val context: CommonBackendContext) : IrElementTransformerVoidWithContext() {
|
||||
class FunctionInlining(val context: CommonBackendContext, val dontInlineTypeOf: Boolean = true) : IrElementTransformerVoidWithContext() {
|
||||
|
||||
fun inline(irModule: IrModuleFragment) = irModule.accept(this, data = null)
|
||||
|
||||
@@ -47,7 +47,8 @@ class FunctionInlining(val context: CommonBackendContext) : IrElementTransformer
|
||||
return expression
|
||||
if (Symbols.isLateinitIsInitializedPropertyGetter(callee.symbol))
|
||||
return expression
|
||||
if (Symbols.isTypeOfIntrinsic(callee.symbol))
|
||||
// TODO: Temporary hack till typeOf is unimplemented in K/JS
|
||||
if (dontInlineTypeOf && Symbols.isTypeOfIntrinsic(callee.symbol))
|
||||
return expression
|
||||
|
||||
val actualCallee = getFunctionDeclaration(callee.symbol)
|
||||
|
||||
@@ -97,7 +97,7 @@ private val arrayConstructorPhase = makeJsModulePhase(
|
||||
|
||||
private val functionInliningPhase = makeCustomJsModulePhase(
|
||||
{ context, module ->
|
||||
FunctionInlining(context).inline(module)
|
||||
FunctionInlining(context, false).inline(module)
|
||||
module.patchDeclarationParents()
|
||||
},
|
||||
name = "FunctionInliningPhase",
|
||||
|
||||
Reference in New Issue
Block a user