[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.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
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)
|
fun inline(irModule: IrModuleFragment) = irModule.accept(this, data = null)
|
||||||
|
|
||||||
@@ -47,7 +47,8 @@ class FunctionInlining(val context: CommonBackendContext) : IrElementTransformer
|
|||||||
return expression
|
return expression
|
||||||
if (Symbols.isLateinitIsInitializedPropertyGetter(callee.symbol))
|
if (Symbols.isLateinitIsInitializedPropertyGetter(callee.symbol))
|
||||||
return expression
|
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
|
return expression
|
||||||
|
|
||||||
val actualCallee = getFunctionDeclaration(callee.symbol)
|
val actualCallee = getFunctionDeclaration(callee.symbol)
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ private val arrayConstructorPhase = makeJsModulePhase(
|
|||||||
|
|
||||||
private val functionInliningPhase = makeCustomJsModulePhase(
|
private val functionInliningPhase = makeCustomJsModulePhase(
|
||||||
{ context, module ->
|
{ context, module ->
|
||||||
FunctionInlining(context).inline(module)
|
FunctionInlining(context, false).inline(module)
|
||||||
module.patchDeclarationParents()
|
module.patchDeclarationParents()
|
||||||
},
|
},
|
||||||
name = "FunctionInliningPhase",
|
name = "FunctionInliningPhase",
|
||||||
|
|||||||
Reference in New Issue
Block a user