| |
| package foo |
| |
| fun box(): String { |
| try { |
| testCompanionObjectAccess() |
| testInCall() |
| testDoubleConstants() |
| testFloatConstants() |
| testLocalFun() |
| testTopLevelFun() |
| testVarTopField() |
| } |
| catch (e: Throwable) { |
| return "Error: \n" + e |
| } |
| |
| return "OK" |
| } |
| |
| fun testCompanionObjectAccess() { |
| val i = Int |
| val d = Double |
| val f = Float |
| val l = Long |
| val sh = Short |
| val b = Byte |
| val ch = Char |
| val st = String |
| val en = Enum |
| } |
| |
| fun testInCall() { |
| test(Int) |
| test(Double) |
| test(Float) |
| test(Long) |
| test(Short) |
| test(Byte) |
| test(Char) |
| test(String) |
| test(Enum) |
| } |
| |
| fun testDoubleConstants() { |
| val pi = Double.POSITIVE_INFINITY |
| val ni = Double.NEGATIVE_INFINITY |
| val nan = Double.NaN |
| |
| myAssertEquals(pi, Double.POSITIVE_INFINITY) |
| myAssertEquals(ni, Double.NEGATIVE_INFINITY) |
| } |
| |
| fun testFloatConstants() { |
| val pi = Float.POSITIVE_INFINITY |
| val ni = Float.NEGATIVE_INFINITY |
| val nan = Float.NaN |
| |
| myAssertEquals(pi, Float.POSITIVE_INFINITY) |
| myAssertEquals(ni, Float.NEGATIVE_INFINITY) |
| } |
| |
| fun testLocalFun() { |
| fun Int.Companion.LocalFun() : String = "LocalFun" |
| myAssertEquals("LocalFun", Int.LocalFun()) |
| } |
| |
| fun testTopLevelFun() { |
| myAssertEquals("TopFun", Int.TopFun()) |
| } |
| |
| fun testVarTopField() { |
| myAssertEquals(0, Int.TopField) |
| |
| Int.TopField++ |
| myAssertEquals(1, Int.TopField) |
| |
| Int.TopField += 5 |
| myAssertEquals(6, Int.TopField) |
| } |
| |
| fun test(a: Any) {} |
| |
| var _field: Int = 0 |
| var Int.Companion.TopField : Int |
| get() = _field |
| set(value) { _field = value }; |
| |
| fun Int.Companion.TopFun() : String = "TopFun" |
| |
| fun <T> myAssertEquals(a: T, b: T) { |
| if (a != b) throw Exception("$a != $b") |
| } |
| |
| |