Initial implementation of platformStatic

This commit is contained in:
Michael Bogdanov
2014-09-01 15:12:31 +04:00
parent 7bbedd9685
commit e26d635633
36 changed files with 718 additions and 47 deletions
@@ -0,0 +1,36 @@
object A {
val b: String = "OK"
platformStatic fun test1() : String {
return b
}
platformStatic fun test2() : String {
return test1()
}
fun test3(): String {
return "1".test5()
}
platformStatic fun test4(): String {
return "1".test5()
}
platformStatic fun String.test5() : String {
return this + b
}
}
fun box(): String {
if (A.(A::test1)() != "OK") return "fail 1"
if (A.(A::test2)() != "OK") return "fail 2"
if (A.(A::test3)() != "1OK") return "fail 3"
if (A.(A::test4)() != "1OK") return "fail 4"
return "OK"
}
@@ -0,0 +1,38 @@
object A {
val b: String = "OK"
platformStatic fun test1() : String {
return {b}()
}
platformStatic fun test2() : String {
return {test1()}()
}
fun test3(): String {
return {"1".test5()}()
}
platformStatic fun test4(): String {
return {"1".test5()}()
}
platformStatic fun String.test5() : String {
return {this + b}()
}
}
fun box(): String {
if (A.test1() != "OK") return "fail 1"
if (A.test2() != "OK") return "fail 2"
if (A.test3() != "1OK") return "fail 3"
if (A.test4() != "1OK") return "fail 4"
if (with(A) {"1".test5()} != "1OK") return "fail 5"
return "OK"
}
@@ -0,0 +1,31 @@
class B(var s: Int = 0) {
}
object A {
fun test1(v: B) {
v += B(1000)
}
platformStatic fun B.plusAssign(b: B) {
this.s += b.s
}
}
fun box(): String {
val b1 = B(11)
with(A) {
b1 += B(1000)
}
if (b1.s != 1011) return "fail 1"
val b = B(11)
A.test1(b)
if (b.s != 1011) return "fail 2"
return "OK"
}
@@ -0,0 +1,14 @@
object A {
platformStatic fun test(b: String = "OK") : String {
return b
}
}
fun box(): String {
if (A.test() != "OK") return "fail 1"
return "OK"
}
@@ -0,0 +1,24 @@
object AX {
platformStatic fun aStatic(): String {
return AX.b()
}
fun aNonStatic(): String {
return AX.b()
}
platformStatic fun b(): String {
return "OK"
}
}
fun box() : String {
if (AX.aStatic() != "OK") return "fail 1"
if (AX.aNonStatic() != "OK") return "fail 1"
return "OK"
}
@@ -0,0 +1,14 @@
object A {
platformStatic inline fun test(b: String = "OK") : String {
return b
}
}
fun box(): String {
if (A.test() != "OK") return "fail 1"
return "OK"
}
@@ -0,0 +1,38 @@
object A {
val b: String = "OK"
platformStatic fun test1() : String {
return b
}
platformStatic fun test2() : String {
return test1()
}
fun test3(): String {
return "1".test5()
}
platformStatic fun test4(): String {
return "1".test5()
}
platformStatic fun String.test5() : String {
return this + b
}
}
fun box(): String {
if (A.test1() != "OK") return "fail 1"
if (A.test2() != "OK") return "fail 2"
if (A.test3() != "1OK") return "fail 3"
if (A.test4() != "1OK") return "fail 4"
if (with(A) {"1".test5()} != "1OK") return "fail 5"
return "OK"
}