From 07eae1d206d50c0371d283da8f3d360be570dfd2 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 23 Sep 2016 17:30:58 +0300 Subject: [PATCH] IR to CFG: type operator unrolling --- .../kotlin/ir2cfg/generators/FunctionGenerator.kt | 8 ++++++++ compiler/testData/ir/irCfg/loop/digitCount.txt | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/generators/FunctionGenerator.kt b/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/generators/FunctionGenerator.kt index 92a9169a63e..629dceee774 100644 --- a/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/generators/FunctionGenerator.kt +++ b/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/generators/FunctionGenerator.kt @@ -200,6 +200,14 @@ class FunctionGenerator(val function: IrFunction) { return expression } + override fun visitTypeOperator(expression: IrTypeOperatorCall, data: Boolean): IrElement? { + expression.argument.process() + if (data) { + builder.add(expression) + } + return expression + } + override fun visitElement(element: IrElement, data: Boolean): IrElement? { TODO("not implemented") } diff --git a/compiler/testData/ir/irCfg/loop/digitCount.txt b/compiler/testData/ir/irCfg/loop/digitCount.txt index 78d2f6f0bee..e1d16d701fb 100644 --- a/compiler/testData/ir/irCfg/loop/digitCount.txt +++ b/compiler/testData/ir/irCfg/loop/digitCount.txt @@ -25,7 +25,11 @@ BB 2 INCOMING <- BB 1 CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQ CONTENT - 1 TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + 1 GET_VAR 'count: Int' type=kotlin.Int origin=POSTFIX_INCR + 2 VAR IR_TEMPORARY_VARIABLE val tmp0: kotlin.Int + 3 SET_VAR 'count: Int' type=kotlin.Unit origin=POSTFIX_INCR + 4 GET_VAR 'tmp0: Int' type=kotlin.Int origin=null + 5 TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit OUTGOING -> BB 3 When exit: WHEN type=kotlin.Unit origin=null BB 3