| // TARGET_BACKEND: NATIVE |
| // FILECHECK_STAGE: CStubs |
| |
| // CHECK-LABEL: define i64 @"kfun:#foo(){}kotlin.Long"() |
| fun foo(): Long { |
| // CHECK-NOT: @LONG_CACHE |
| val data: Map<String, Any> = mapOf() |
| return data.getOrElse("id") { 0L } as Long |
| } |
| // CHECK: ret i64 |
| |
| inline fun <T> bar(x: T?, f: Boolean): Any { |
| when { |
| x != null -> return@bar x |
| f -> return@bar 0L |
| else -> return@bar 1UL |
| } |
| } |
| |
| // CHECK-LABEL: define i64 @"kfun:#callBar(kotlin.Boolean){}kotlin.ULong |
| fun callBar(f: Boolean): ULong { |
| // CHECK: @LONG_CACHE |
| val data: Map<String, Any> = mapOf() |
| val x = data["id"] |
| return bar(x, f) as ULong |
| } |
| // CHECK: ret i64 |
| |
| // CHECK-LABEL: define ptr @"kfun:#box(){}kotlin.String" |
| fun box(): String { |
| val resultFoo = foo() |
| val resultBar = callBar(false) |
| return if (resultFoo == 0L && resultBar == 1UL) |
| "OK" |
| else "FAIL: resultFoo=$resultFoo resultBar=$resultBar" |
| } |