| // 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" |
| } |