Temporary fix for IR2CFG: use originalKotlinType
This commit is contained in:
+5
-5
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.IrStatement
|
|||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
|
import org.jetbrains.kotlin.ir.types.impl.originalKotlinType
|
||||||
import org.jetbrains.kotlin.ir.util.dump
|
import org.jetbrains.kotlin.ir.util.dump
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
import org.jetbrains.kotlin.ir2cfg.graph.ControlFlowGraph
|
import org.jetbrains.kotlin.ir2cfg.graph.ControlFlowGraph
|
||||||
@@ -66,7 +67,8 @@ class FunctionGenerator(val function: IrFunction) {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrElement?.isNothing() = this is IrExpression && KotlinBuiltIns.isNothing(type)
|
private fun IrElement?.isNothing() =
|
||||||
|
this is IrExpression && KotlinBuiltIns.isNothing(type.originalKotlinType!!) // TODO
|
||||||
|
|
||||||
override fun visitBlockBody(body: IrBlockBody, data: Boolean): IrStatement? {
|
override fun visitBlockBody(body: IrBlockBody, data: Boolean): IrStatement? {
|
||||||
return body.process()
|
return body.process()
|
||||||
@@ -81,8 +83,7 @@ class FunctionGenerator(val function: IrFunction) {
|
|||||||
return if (data) {
|
return if (data) {
|
||||||
builder.add(declaration)
|
builder.add(declaration)
|
||||||
declaration
|
declaration
|
||||||
}
|
} else null
|
||||||
else null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitReturn(expression: IrReturn, data: Boolean): IrStatement? {
|
override fun visitReturn(expression: IrReturn, data: Boolean): IrStatement? {
|
||||||
@@ -121,8 +122,7 @@ class FunctionGenerator(val function: IrFunction) {
|
|||||||
builder.move(branch.condition)
|
builder.move(branch.condition)
|
||||||
if (!result.process().isNothing()) {
|
if (!result.process().isNothing()) {
|
||||||
builder.jump(whenExit)
|
builder.jump(whenExit)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
builder.move(branch.condition)
|
builder.move(branch.condition)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user