IR to CFG: when implementation in function generator, some when tests

This commit is contained in:
Mikhail Glukhikh
2016-09-22 16:18:37 +03:00
committed by Dmitry Petrov
parent eaf10a4675
commit 979f2231a1
17 changed files with 492 additions and 4 deletions
+10
View File
@@ -0,0 +1,10 @@
fun toString(grade: String): String {
when (grade) {
"A" -> return "Excellent"
"B" -> return "Good"
"C" -> return "Mediocre"
"D" -> return "Fair"
else -> return "Failure"
}
return "???"
}
+37
View File
@@ -0,0 +1,37 @@
FILE /whenReturn.kt
FUN public fun toString(grade: kotlin.String): kotlin.String
BLOCK_BODY
BLOCK type=kotlin.Nothing origin=WHEN
VAR IR_TEMPORARY_VARIABLE val tmp0_subject: kotlin.String
GET_VAR 'value-parameter grade: String' type=kotlin.String origin=null
WHEN type=kotlin.Nothing origin=WHEN
BRANCH
if: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'tmp0_subject: String' type=kotlin.String origin=null
arg1: CONST String type=kotlin.String value='A'
then: RETURN type=kotlin.Nothing from='toString(String): String'
CONST String type=kotlin.String value='Excellent'
BRANCH
if: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'tmp0_subject: String' type=kotlin.String origin=null
arg1: CONST String type=kotlin.String value='B'
then: RETURN type=kotlin.Nothing from='toString(String): String'
CONST String type=kotlin.String value='Good'
BRANCH
if: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'tmp0_subject: String' type=kotlin.String origin=null
arg1: CONST String type=kotlin.String value='C'
then: RETURN type=kotlin.Nothing from='toString(String): String'
CONST String type=kotlin.String value='Mediocre'
BRANCH
if: CALL 'EQEQ(Any?, Any?): Boolean' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'tmp0_subject: String' type=kotlin.String origin=null
arg1: CONST String type=kotlin.String value='D'
then: RETURN type=kotlin.Nothing from='toString(String): String'
CONST String type=kotlin.String value='Fair'
BRANCH
if: CONST Boolean type=kotlin.Boolean value='true'
then: RETURN type=kotlin.Nothing from='toString(String): String'
CONST String type=kotlin.String value='Failure'
RETURN type=kotlin.Nothing from='toString(String): String'
CONST String type=kotlin.String value='???'