| // Some silly things you can do with unit types. | |
| fun foo() { | |
| } | |
| fun zoot(): String { | |
| return "str" | |
| } | |
| class Blumbs { | |
| var t: Unit = Unit | |
| } | |
| fun varfoo(vararg t: Unit) { | |
| } | |
| fun foo1() { | |
| if (zoot() == "str") | |
| return | |
| return | |
| } | |
| fun box(): String { | |
| // Only check that this code can be compiled and verified. | |
| 1 | |
| {} | |
| val tmp = Unit | |
| { | |
| }.let { it() } | |
| val tmp2 = { | |
| }.let { it() } | |
| val tmp3 = Blumbs() | |
| tmp3.t = Unit | |
| val tmp4 = Blumbs() | |
| tmp4.t = foo() | |
| val units = arrayOf(Unit, Unit, Unit) | |
| varfoo(Unit, *units, foo(), Unit) | |
| val tmp5 = foo() as? Blumbs | |
| val tmp6 = if (zoot() == "str") Unit else foo() | |
| // From spec | |
| val a /* : () -> Unit */ = { | |
| if (true) 42 | |
| // CSB with no last expression | |
| // Type is defined to be `kotlin.Unit` | |
| } | |
| val b: () -> Unit = { | |
| if (true) 42 else -42 | |
| // CSB with last expression of type `kotlin.Int` | |
| // Type is expected to be `kotlin.Unit` | |
| // Coercion to kotlin.Unit applied | |
| } | |
| return "OK" | |
| } |