tests: Update external tests (1.1.2-dev-393)

This commit is contained in:
Ilya Matveev
2017-03-13 12:38:08 +03:00
committed by ilmat192
parent ac56fccb15
commit bc074e6d39
3178 changed files with 22396 additions and 696 deletions
@@ -0,0 +1,11 @@
annotation class A(val a: Int = 0)
@A fun test1() = 1
@A(2) fun test2() = 1
fun box(): String {
if ((test1() + test2()) == 2) {
return "OK"
}
return "fail"
}
@@ -0,0 +1,8 @@
annotation class Anno(val x: Array<String> = emptyArray())
@Anno fun test1() = 1
@Anno(arrayOf("K")) fun test2() = 2
fun box(): String {
return if (test1() + test2() == 3) "OK" else "Fail"
}
@@ -0,0 +1,11 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_RUNTIME
class A(value: Int = 1)
fun box(): String {
val constructors = A::class.java.getConstructors().filter { !it.isSynthetic() }
return if (constructors.size == 2) "OK" else constructors.size.toString()
}
@@ -0,0 +1,8 @@
class A(val a: Int = 0)
fun box(): String {
if (A().a == 0 && A(1).a == 1) {
return "OK"
}
return "fail"
}
@@ -0,0 +1,14 @@
class A {
inner class B(val a: String = "a", val b: Int = 55, val c: String = "c")
}
fun box(): String {
val bDefault = A().B()
val b = A().B("aa", 66, "cc")
if (bDefault.a == "a" && bDefault.b == 55 && bDefault.c == "c") {
if (b.a == "aa" && b.b == 66 && b.c == "cc") {
return "OK"
}
}
return "fail"
}
@@ -0,0 +1,13 @@
class A(val a: Int = 0, val b: String = "a")
fun box(): String {
val a1 = A()
val a2 = A(1)
val a3 = A(b = "b")
val a4 = A(2, "c")
if (a1.a != 0 && a1.b != "a") return "fail"
if (a2.a != 1 && a2.b != "a") return "fail"
if (a3.a != 0 && a3.b != "b") return "fail"
if (a4.a != 2 && a4.b != "c") return "fail"
return "OK"
}
@@ -0,0 +1,14 @@
class A {
inner class B(val a: Double = 1.0, val b: Int = 55, val c: String = "c")
}
fun box(): String {
val bDefault = A().B()
val b = A().B(2.0, 66, "cc")
if (bDefault.a == 1.0 && bDefault.b == 55 && bDefault.c == "c") {
if (b.a == 2.0 && b.b == 66 && b.c == "cc") {
return "OK"
}
}
return "fail"
}
@@ -0,0 +1,11 @@
enum class A(val a: Int = 1) {
FIRST(),
SECOND(2)
}
fun box(): String {
if (A.FIRST.a == 1 && A.SECOND.a == 2) {
return "OK"
}
return "fail"
}
@@ -0,0 +1,10 @@
enum class Foo(val a: Int = 1, val b: String) {
B(2, "b"),
C(b = "b")
}
fun box(): String {
if (Foo.B.a != 2 || Foo.B.b != "b") return "fail"
if (Foo.C.a != 1 || Foo.C.b != "b") return "fail"
return "OK"
}
@@ -0,0 +1,14 @@
enum class Foo(val a: Int = 1, val b: String = "a") {
A(),
B(2, "b"),
C(b = "b"),
D(a = 2)
}
fun box(): String {
if (Foo.A.a != 1 || Foo.A.b != "a") return "fail"
if (Foo.B.a != 2 || Foo.B.b != "b") return "fail"
if (Foo.C.a != 1 || Foo.C.b != "b") return "fail"
if (Foo.D.a != 2 || Foo.D.b != "a") return "fail"
return "OK"
}
@@ -0,0 +1,14 @@
enum class Foo(val a: Double = 1.0, val b: Double = 1.0) {
A(),
B(2.0, 2.0),
C(b = 2.0),
D(a = 2.0)
}
fun box(): String {
if (Foo.A.a != 1.0 || Foo.A.b != 1.0) return "fail"
if (Foo.B.a != 2.0 || Foo.B.b != 2.0) return "fail"
if (Foo.C.a != 1.0 || Foo.C.b != 2.0) return "fail"
if (Foo.D.a != 2.0 || Foo.D.b != 1.0) return "fail"
return "OK"
}
@@ -0,0 +1,7 @@
fun box(): String {
val o = object {
inner class A(val value: String = "OK")
}
return o.A().value
}
@@ -0,0 +1,10 @@
class Foo private constructor(val param: String = "OK") {
companion object {
val s = Foo()
}
}
fun box(): String {
Foo.s.param
return "OK"
}
@@ -0,0 +1,216 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_RUNTIME
class A(val a: Int = 1,
val b: Int = 2,
val c: Int = 3,
val d: Int = 4,
val e: Int = 5,
val f: Int = 6,
val g: Int = 7,
val h: Int = 8,
val i: Int = 9,
val j: Int = 10,
val k: Int = 11,
val l: Int = 12,
val m: Int = 13,
val n: Int = 14,
val o: Int = 15,
val p: Int = 16,
val q: Int = 17,
val r: Int = 18,
val s: Int = 19,
val t: Int = 20,
val u: Int = 21,
val v: Int = 22,
val w: Int = 23,
val x: Int = 24,
val y: Int = 25,
val z: Int = 26,
val aa: Int = 27,
val bb: Int = 28,
val cc: Int = 29,
val dd: Int = 30,
val ee: Int = 31,
val ff: Int = 32) {
override fun toString(): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff"
}
}
class B(val a: Int = 1,
val b: Int = 2,
val c: Int = 3,
val d: Int = 4,
val e: Int = 5,
val f: Int = 6,
val g: Int = 7,
val h: Int = 8,
val i: Int = 9,
val j: Int = 10,
val k: Int = 11,
val l: Int = 12,
val m: Int = 13,
val n: Int = 14,
val o: Int = 15,
val p: Int = 16,
val q: Int = 17,
val r: Int = 18,
val s: Int = 19,
val t: Int = 20,
val u: Int = 21,
val v: Int = 22,
val w: Int = 23,
val x: Int = 24,
val y: Int = 25,
val z: Int = 26,
val aa: Int = 27,
val bb: Int = 28,
val cc: Int = 29,
val dd: Int = 30,
val ee: Int = 31,
val ff: Int = 32,
val gg: Int = 33,
val hh: Int = 34,
val ii: Int = 35,
val jj: Int = 36,
val kk: Int = 37,
val ll: Int = 38,
val mm: Int = 39,
val nn: Int = 40) {
override fun toString(): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff " +
"$gg $hh $ii $jj $kk $ll $mm $nn"
}
}
class C(val a: Int = 1,
val b: Int = 2,
val c: Int = 3,
val d: Int = 4,
val e: Int = 5,
val f: Int = 6,
val g: Int = 7,
val h: Int = 8,
val i: Int = 9,
val j: Int = 10,
val k: Int = 11,
val l: Int = 12,
val m: Int = 13,
val n: Int = 14,
val o: Int = 15,
val p: Int = 16,
val q: Int = 17,
val r: Int = 18,
val s: Int = 19,
val t: Int = 20,
val u: Int = 21,
val v: Int = 22,
val w: Int = 23,
val x: Int = 24,
val y: Int = 25,
val z: Int = 26,
val aa: Int = 27,
val bb: Int = 28,
val cc: Int = 29,
val dd: Int = 30,
val ee: Int = 31,
val ff: Int = 32,
val gg: Int = 33,
val hh: Int = 34,
val ii: Int = 35,
val jj: Int = 36,
val kk: Int = 37,
val ll: Int = 38,
val mm: Int = 39,
val nn: Int = 40,
val oo: Int = 41,
val pp: Int = 42,
val qq: Int = 43,
val rr: Int = 44,
val ss: Int = 45,
val tt: Int = 46,
val uu: Int = 47,
val vv: Int = 48,
val ww: Int = 49,
val xx: Int = 50,
val yy: Int = 51,
val zz: Int = 52,
val aaa: Int = 53,
val bbb: Int = 54,
val ccc: Int = 55,
val ddd: Int = 56,
val eee: Int = 57,
val fff: Int = 58,
val ggg: Int = 59,
val hhh: Int = 60,
val iii: Int = 61,
val jjj: Int = 62,
val kkk: Int = 63,
val lll: Int = 64,
val mmm: Int = 65,
val nnn: Int = 66,
val ooo: Int = 67,
val ppp: Int = 68,
val qqq: Int = 69,
val rrr: Int = 70) {
override fun toString(): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff $gg $hh $ii $jj $kk " +
"$ll $mm $nn $oo $pp $qq $rr $ss $tt $uu $vv $ww $xx $yy $zz $aaa $bbb $ccc $ddd $eee $fff $ggg $hhh $iii $jjj $kkk $lll " +
"$mmm $nnn $ooo $ppp $qqq $rrr"
}
}
fun box(): String {
val test1 = A(4, e = 8, f = 15, w = 16, aa = 23, ff = 42).toString()
val test2 = A::class.java.newInstance().toString()
val test3 = A(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, q = 16, r = 15, s = 14, t = 13,
u = 12, v = 11, w = 10, x = 9, y = 8, z = 7, aa = 6, bb = 5, cc = 4, dd = 3, ee = 2, ff = 1).toString()
if (test1 != "4 2 3 4 8 15 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 16 24 25 26 23 28 29 30 31 42") {
return "test1 = $test1"
}
if (test2 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32") {
return "test2 = $test2"
}
if (test3 != "32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test3 = $test3"
}
val test4 = B(54, 217, h = 236, l = 18, q = 3216, u = 8, aa = 22, ff = 33, jj = 44, mm = 55).toString()
val test5 = B::class.java.newInstance().toString()
val test6 = B(40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, u = 20, v = 19,
w = 18, x = 17, y = 16, z = 15, aa = 14, bb = 13, cc = 12, dd = 11, ee = 10, ff = 9, gg = 8, hh = 7, ii = 6,
jj = 5, kk = 4, ll = 3, mm = 2, nn = 1).toString()
if (test4 != "54 217 3 4 5 6 7 236 9 10 11 18 13 14 15 16 3216 18 19 20 8 22 23 24 25 26 22 28 29 30 31 33 33 34 35 44 37 38 55 40") {
return "test4 = $test4"
}
if (test5 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40") {
return "test5 = $test5"
}
if (test6 != "40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test6 = $test6"
}
val test7 = C(5, f = 3, w = 1, aa = 71, nn = 2, qq = 15, ww = 97, aaa = 261258, iii = 3, nnn = 8, rrr = 7).toString()
val test8 = C::class.java.newInstance().toString()
val test9 = C(70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41,
40, 39, 38, 37, 36, jj = 35, kk = 34, ll = 33, mm = 32, nn = 31, oo = 30, pp = 29, qq = 28, rr = 27, ss = 26, tt = 25,
uu = 24, vv = 23, ww = 22, xx = 21, yy = 20, zz = 19, aaa = 18, bbb = 17, ccc = 16, ddd = 15, eee = 14, fff = 13,
ggg = 12, hhh = 11, iii = 10, jjj = 9, kkk = 8, lll = 7, mmm = 6, nnn = 5, ooo = 4, ppp = 3, qqq = 2, rrr = 1).toString()
if (test7 != "5 2 3 4 5 3 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 24 25 26 71 28 29 30 31 32 33 34 35 36 37 38 39 2 41 42 15 " +
"44 45 46 47 48 97 50 51 52 261258 54 55 56 57 58 59 60 3 62 63 64 65 8 67 68 69 7") {
return "test7 = $test7"
}
if (test8 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 " +
"43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70") {
return "test8 = $test8"
}
if (test9 != "70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 " +
"31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test9 = $test9"
}
return "OK"
}
@@ -0,0 +1,26 @@
var inc: String = ""
class X {
var result: String = "fail"
operator fun get(name: String, type: String = "none") = name + inc + type
operator fun set(name: String, s: String) {
result = name + s;
}
}
operator fun String.inc(): String {
inc = this + "1"
return this + "1"
}
fun box(): String {
var x = X()
val res = ++x["a"]
if (x.result != "aanone1") return "fail 1: ${x.result}"
if (res != "aanone1none") return "fail 2: ${res}"
return "OK"
}
@@ -0,0 +1,11 @@
class X {
operator fun get(name: String, type: String = "none") = name + type
}
fun box(): String {
if (X().get("a") != "anone") return "fail 1: ${X().get("a")}"
if (X()["a"] != "anone") return "fail 2: ${X()["a"]}"
return "OK"
}
@@ -0,0 +1,31 @@
class X {
var result: String = "fail"
operator fun get(name: String, type: String = "none") = name + type
operator fun set(name: String, s: String) {
result = name + s;
}
}
class Y {
var result: String = "fail"
operator fun get(name: String, type: String = "no", type2: String = "ne") = name + type + type2
operator fun set(name: String, s: String) {
result = name + s;
}
}
fun box(): String {
var x = X()
x["a"] += "OK"
if (x.result != "aanoneOK") return "fail: ${x.result}"
var y = Y()
y["a"] += "OK"
if (y.result != "aanoneOK") return "fail: ${y.result}"
return "OK"
}
@@ -0,0 +1,16 @@
abstract class Base {
abstract fun foo(a: String = "abc"): String
}
class Derived: Base() {
override fun foo(a: String): String {
return a
}
}
fun box(): String {
val result = Derived().foo()
if (result != "abc") return "Fail: $result"
return "OK"
}
@@ -0,0 +1,10 @@
open class Foo {
open fun foo(x: CharSequence = "O"): CharSequence = x
}
class Bar(): Foo() {
override fun foo(x: CharSequence): String { // Note the covariant return type
return x.toString() + "K"
}
}
fun box() = Bar().foo()
@@ -0,0 +1,10 @@
open class Foo {
open fun foo(x: CharSequence = "O"): CharSequence = x
}
class Bar<T : String>: Foo() {
override fun foo(x: CharSequence): T { // Note the covariant return type
return (x.toString() + "K") as T
}
}
fun box() = Bar<String>().foo()
@@ -0,0 +1,205 @@
fun Int.foo(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff"
}
fun String.bar(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff " +
"$gg $hh $ii $jj $kk $ll $mm $nn"
}
fun Char.baz(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40,
oo: Int = 41,
pp: Int = 42,
qq: Int = 43,
rr: Int = 44,
ss: Int = 45,
tt: Int = 46,
uu: Int = 47,
vv: Int = 48,
ww: Int = 49,
xx: Int = 50,
yy: Int = 51,
zz: Int = 52,
aaa: Int = 53,
bbb: Int = 54,
ccc: Int = 55,
ddd: Int = 56,
eee: Int = 57,
fff: Int = 58,
ggg: Int = 59,
hhh: Int = 60,
iii: Int = 61,
jjj: Int = 62,
kkk: Int = 63,
lll: Int = 64,
mmm: Int = 65,
nnn: Int = 66,
ooo: Int = 67,
ppp: Int = 68,
qqq: Int = 69,
rrr: Int = 70): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff $gg $hh $ii $jj $kk " +
"$ll $mm $nn $oo $pp $qq $rr $ss $tt $uu $vv $ww $xx $yy $zz $aaa $bbb $ccc $ddd $eee $fff $ggg $hhh $iii $jjj $kkk $lll " +
"$mmm $nnn $ooo $ppp $qqq $rrr"
}
fun box(): String {
val test1 = 1.foo(4, e = 8, f = 15, w = 16, aa = 23, ff = 42)
val test2 = 1.foo()
val test3 = 1.foo(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, q = 16, r = 15, s = 14, t = 13,
u = 12, v = 11, w = 10, x = 9, y = 8, z = 7, aa = 6, bb = 5, cc = 4, dd = 3, ee = 2, ff = 1)
if (test1 != "4 2 3 4 8 15 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 16 24 25 26 23 28 29 30 31 42") {
return "test1 = $test1"
}
if (test2 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32") {
return "test2 = $test2"
}
if (test3 != "32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test3 = $test3"
}
val test4 = "".bar(54, 217, h = 236, l = 18, q = 3216, u = 8, aa = 22, ff = 33, jj = 44, mm = 55)
val test5 = "".bar()
val test6 = "".bar(40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, u = 20, v = 19,
w = 18, x = 17, y = 16, z = 15, aa = 14, bb = 13, cc = 12, dd = 11, ee = 10, ff = 9, gg = 8, hh = 7, ii = 6,
jj = 5, kk = 4, ll = 3, mm = 2, nn = 1)
if (test4 != "54 217 3 4 5 6 7 236 9 10 11 18 13 14 15 16 3216 18 19 20 8 22 23 24 25 26 22 28 29 30 31 33 33 34 35 44 37 38 55 40") {
return "test4 = $test4"
}
if (test5 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40") {
return "test5 = $test5"
}
if (test6 != "40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test6 = $test6"
}
val test7 = 'a'.baz(5, f = 3, w = 1, aa = 71, nn = 2, qq = 15, ww = 97, aaa = 261258, iii = 3, nnn = 8, rrr = 7)
val test8 = 'a'.baz()
val test9 = 'a'.baz(70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41,
40, 39, 38, 37, 36, jj = 35, kk = 34, ll = 33, mm = 32, nn = 31, oo = 30, pp = 29, qq = 28, rr = 27, ss = 26, tt = 25,
uu = 24, vv = 23, ww = 22, xx = 21, yy = 20, zz = 19, aaa = 18, bbb = 17, ccc = 16, ddd = 15, eee = 14, fff = 13,
ggg = 12, hhh = 11, iii = 10, jjj = 9, kkk = 8, lll = 7, mmm = 6, nnn = 5, ooo = 4, ppp = 3, qqq = 2, rrr = 1)
if (test7 != "5 2 3 4 5 3 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 24 25 26 71 28 29 30 31 32 33 34 35 36 37 38 39 2 41 42 15 " +
"44 45 46 47 48 97 50 51 52 261258 54 55 56 57 58 59 60 3 62 63 64 65 8 67 68 69 7") {
return "test7 = $test7"
}
if (test8 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 " +
"43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70") {
return "test8 = $test8"
}
if (test9 != "70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 " +
"31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test9 = $test9"
}
return "OK"
}
@@ -0,0 +1,9 @@
fun Int.foo(a: Int = 1): Int {
return a
}
fun box(): String {
if (1.foo() != 1) return "fail"
if (1.foo(2) != 2) return "fail"
return "OK"
}
@@ -0,0 +1,9 @@
fun Double.foo(a: Double = 1.0): Double {
return a
}
fun box(): String {
if (1.0.foo() != 1.0) return "fail"
if (1.0.foo(2.0) != 2.0) return "fail"
return "OK"
}
@@ -0,0 +1,11 @@
fun Double.foo(a: Double = 1.0, b: Double = 1.0): Double {
return a + b
}
fun box(): String {
if (1.0.foo() != 2.0) return "fail"
if (1.0.foo(2.0, 2.0) != 4.0) return "fail"
if (1.0.foo(a = 2.0) != 3.0) return "fail"
if (1.0.foo(b = 2.0) != 3.0) return "fail"
return "OK"
}
@@ -0,0 +1,17 @@
class A {
companion object {
fun Int.foo(a: Int = 1): Int {
return a
}
fun test(): String {
if (1.foo() != 1) return "fail"
if (1.foo(2) != 2) return "fail"
return "OK"
}
}
}
fun box(): String {
return A.test()
}
@@ -0,0 +1,15 @@
object A {
fun Int.foo(a: Int = 1): Int {
return a
}
fun test(): String {
if (1.foo() != 1) return "fail"
if (1.foo(2) != 2) return "fail"
return "OK"
}
}
fun box(): String {
return A.test()
}
@@ -0,0 +1,9 @@
fun Int.foo(a: Int = 1, b: String): Int {
return a
}
fun box(): String {
if (1.foo(b = "b") != 1) return "fail"
if (1.foo(2, "b") != 2) return "fail"
return "OK"
}
@@ -0,0 +1,14 @@
interface Foo {
fun foo(a: Double = 1.0): Double
}
class FooImpl : Foo {
override fun foo(a: Double): Double {
return a
}
}
fun box(): String {
if (FooImpl().foo() != 1.0) return "fail"
if (FooImpl().foo(2.0) != 2.0) return "fail"
return "OK"
}
@@ -0,0 +1,15 @@
class A {
fun Int.foo(a: Int = 1): Int {
return a
}
fun test(): String {
if (1.foo() != 1) return "fail"
if (1.foo(2) != 2) return "fail"
return "OK"
}
}
fun box(): String {
return A().test()
}
@@ -0,0 +1,15 @@
class A {
fun Double.foo(a: Double = 1.0): Double {
return a
}
fun test(): String {
if (1.0.foo() != 1.0) return "fail"
if (1.0.foo(2.0) != 2.0) return "fail"
return "OK"
}
}
fun box(): String {
return A().test()
}
@@ -0,0 +1,17 @@
class A {
fun Double.foo(a: Double = 1.0, b: Double = 1.0): Double {
return a + b
}
fun test(): String {
if (1.0.foo() != 2.0) return "fail"
if (1.0.foo(2.0, 2.0) != 4.0) return "fail"
if (1.0.foo(a = 2.0) != 3.0) return "fail"
if (1.0.foo(b = 2.0) != 3.0) return "fail"
return "OK"
}
}
fun box(): String {
return A().test()
}
@@ -0,0 +1,211 @@
class A {
fun Int.foo(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff"
}
fun String.bar(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff " +
"$gg $hh $ii $jj $kk $ll $mm $nn"
}
fun Char.baz(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40,
oo: Int = 41,
pp: Int = 42,
qq: Int = 43,
rr: Int = 44,
ss: Int = 45,
tt: Int = 46,
uu: Int = 47,
vv: Int = 48,
ww: Int = 49,
xx: Int = 50,
yy: Int = 51,
zz: Int = 52,
aaa: Int = 53,
bbb: Int = 54,
ccc: Int = 55,
ddd: Int = 56,
eee: Int = 57,
fff: Int = 58,
ggg: Int = 59,
hhh: Int = 60,
iii: Int = 61,
jjj: Int = 62,
kkk: Int = 63,
lll: Int = 64,
mmm: Int = 65,
nnn: Int = 66,
ooo: Int = 67,
ppp: Int = 68,
qqq: Int = 69,
rrr: Int = 70): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff $gg $hh $ii $jj $kk " +
"$ll $mm $nn $oo $pp $qq $rr $ss $tt $uu $vv $ww $xx $yy $zz $aaa $bbb $ccc $ddd $eee $fff $ggg $hhh $iii $jjj $kkk $lll " +
"$mmm $nnn $ooo $ppp $qqq $rrr"
}
fun test(): String {
val test1 = 1.foo(4, e = 8, f = 15, w = 16, aa = 23, ff = 42)
val test2 = 1.foo()
val test3 = 1.foo(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, q = 16, r = 15, s = 14, t = 13,
u = 12, v = 11, w = 10, x = 9, y = 8, z = 7, aa = 6, bb = 5, cc = 4, dd = 3, ee = 2, ff = 1)
if (test1 != "4 2 3 4 8 15 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 16 24 25 26 23 28 29 30 31 42") {
return "test1 = $test1"
}
if (test2 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32") {
return "test2 = $test2"
}
if (test3 != "32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test3 = $test3"
}
val test4 = "".bar(54, 217, h = 236, l = 18, q = 3216, u = 8, aa = 22, ff = 33, jj = 44, mm = 55)
val test5 = "".bar()
val test6 = "".bar(40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, u = 20, v = 19,
w = 18, x = 17, y = 16, z = 15, aa = 14, bb = 13, cc = 12, dd = 11, ee = 10, ff = 9, gg = 8, hh = 7, ii = 6,
jj = 5, kk = 4, ll = 3, mm = 2, nn = 1)
if (test4 != "54 217 3 4 5 6 7 236 9 10 11 18 13 14 15 16 3216 18 19 20 8 22 23 24 25 26 22 28 29 30 31 33 33 34 35 44 37 38 55 40") {
return "test4 = $test4"
}
if (test5 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40") {
return "test5 = $test5"
}
if (test6 != "40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test6 = $test6"
}
val test7 = 'a'.baz(5, f = 3, w = 1, aa = 71, nn = 2, qq = 15, ww = 97, aaa = 261258, iii = 3, nnn = 8, rrr = 7)
val test8 = 'a'.baz()
val test9 = 'a'.baz(70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41,
40, 39, 38, 37, 36, jj = 35, kk = 34, ll = 33, mm = 32, nn = 31, oo = 30, pp = 29, qq = 28, rr = 27, ss = 26, tt = 25,
uu = 24, vv = 23, ww = 22, xx = 21, yy = 20, zz = 19, aaa = 18, bbb = 17, ccc = 16, ddd = 15, eee = 14, fff = 13,
ggg = 12, hhh = 11, iii = 10, jjj = 9, kkk = 8, lll = 7, mmm = 6, nnn = 5, ooo = 4, ppp = 3, qqq = 2, rrr = 1)
if (test7 != "5 2 3 4 5 3 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 24 25 26 71 28 29 30 31 32 33 34 35 36 37 38 39 2 41 42 15 " +
"44 45 46 47 48 97 50 51 52 261258 54 55 56 57 58 59 60 3 62 63 64 65 8 67 68 69 7") {
return "test7 = $test7"
}
if (test8 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 " +
"43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70") {
return "test8 = $test8"
}
if (test9 != "70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 " +
"31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test9 = $test9"
}
return "OK"
}
}
fun box(): String {
return A().test()
}
@@ -0,0 +1,14 @@
interface A {
fun visit(a:String, b:String="") : String = b + a
}
class B : A {
override fun visit(a:String, b:String) : String = b + a
}
fun box(): String {
val result = B().visit("K", "O")
if (result != "OK") return "fail $result"
return B().visit("OK")
}
@@ -0,0 +1,208 @@
class A() {
fun foo(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff"
}
fun bar(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff " +
"$gg $hh $ii $jj $kk $ll $mm $nn"
}
fun baz(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40,
oo: Int = 41,
pp: Int = 42,
qq: Int = 43,
rr: Int = 44,
ss: Int = 45,
tt: Int = 46,
uu: Int = 47,
vv: Int = 48,
ww: Int = 49,
xx: Int = 50,
yy: Int = 51,
zz: Int = 52,
aaa: Int = 53,
bbb: Int = 54,
ccc: Int = 55,
ddd: Int = 56,
eee: Int = 57,
fff: Int = 58,
ggg: Int = 59,
hhh: Int = 60,
iii: Int = 61,
jjj: Int = 62,
kkk: Int = 63,
lll: Int = 64,
mmm: Int = 65,
nnn: Int = 66,
ooo: Int = 67,
ppp: Int = 68,
qqq: Int = 69,
rrr: Int = 70): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff $gg $hh $ii $jj $kk " +
"$ll $mm $nn $oo $pp $qq $rr $ss $tt $uu $vv $ww $xx $yy $zz $aaa $bbb $ccc $ddd $eee $fff $ggg $hhh $iii $jjj $kkk $lll " +
"$mmm $nnn $ooo $ppp $qqq $rrr"
}
}
fun box(): String {
val a = A()
val test1 = a.foo(4, e = 8, f = 15, w = 16, aa = 23, ff = 42)
val test2 = a.foo()
val test3 = a.foo(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, q = 16, r = 15, s = 14, t = 13,
u = 12, v = 11, w = 10, x = 9, y = 8, z = 7, aa = 6, bb = 5, cc = 4, dd = 3, ee = 2, ff = 1)
if (test1 != "4 2 3 4 8 15 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 16 24 25 26 23 28 29 30 31 42") {
return "test1 = $test1"
}
if (test2 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32") {
return "test2 = $test2"
}
if (test3 != "32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test3 = $test3"
}
val test4 = a.bar(54, 217, h = 236, l = 18, q = 3216, u = 8, aa = 22, ff = 33, jj = 44, mm = 55)
val test5 = a.bar()
val test6 = a.bar(40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, u = 20, v = 19,
w = 18, x = 17, y = 16, z = 15, aa = 14, bb = 13, cc = 12, dd = 11, ee = 10, ff = 9, gg = 8, hh = 7, ii = 6,
jj = 5, kk = 4, ll = 3, mm = 2, nn = 1)
if (test4 != "54 217 3 4 5 6 7 236 9 10 11 18 13 14 15 16 3216 18 19 20 8 22 23 24 25 26 22 28 29 30 31 33 33 34 35 44 37 38 55 40") {
return "test4 = $test4"
}
if (test5 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40") {
return "test5 = $test5"
}
if (test6 != "40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test6 = $test6"
}
val test7 = a.baz(5, f = 3, w = 1, aa = 71, nn = 2, qq = 15, ww = 97, aaa = 261258, iii = 3, nnn = 8, rrr = 7)
val test8 = a.baz()
val test9 = a.baz(70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41,
40, 39, 38, 37, 36, jj = 35, kk = 34, ll = 33, mm = 32, nn = 31, oo = 30, pp = 29, qq = 28, rr = 27, ss = 26, tt = 25,
uu = 24, vv = 23, ww = 22, xx = 21, yy = 20, zz = 19, aaa = 18, bbb = 17, ccc = 16, ddd = 15, eee = 14, fff = 13,
ggg = 12, hhh = 11, iii = 10, jjj = 9, kkk = 8, lll = 7, mmm = 6, nnn = 5, ooo = 4, ppp = 3, qqq = 2, rrr = 1)
if (test7 != "5 2 3 4 5 3 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 24 25 26 71 28 29 30 31 32 33 34 35 36 37 38 39 2 41 42 15 " +
"44 45 46 47 48 97 50 51 52 261258 54 55 56 57 58 59 60 3 62 63 64 65 8 67 68 69 7") {
return "test7 = $test7"
}
if (test8 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 " +
"43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70") {
return "test8 = $test8"
}
if (test9 != "70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 " +
"31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test9 = $test9"
}
return "OK"
}
@@ -0,0 +1,16 @@
fun foo(a: String = "Companion", b: Int = 1, c: Long = 2): String {
return "$a $b $c"
}
fun box(): String {
val test1 = foo("test1", 2, c = 3)
if (test1 != "test1 2 3") return test1
val test2 = foo("test2", c = 3)
if (test2 != "test2 1 3") return test2
val test3 = foo("test3", b = 3)
if (test3 != "test3 3 2") return test3
return "OK"
}
@@ -0,0 +1,205 @@
fun foo(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff"
}
fun bar(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff " +
"$gg $hh $ii $jj $kk $ll $mm $nn"
}
fun baz(a: Int = 1,
b: Int = 2,
c: Int = 3,
d: Int = 4,
e: Int = 5,
f: Int = 6,
g: Int = 7,
h: Int = 8,
i: Int = 9,
j: Int = 10,
k: Int = 11,
l: Int = 12,
m: Int = 13,
n: Int = 14,
o: Int = 15,
p: Int = 16,
q: Int = 17,
r: Int = 18,
s: Int = 19,
t: Int = 20,
u: Int = 21,
v: Int = 22,
w: Int = 23,
x: Int = 24,
y: Int = 25,
z: Int = 26,
aa: Int = 27,
bb: Int = 28,
cc: Int = 29,
dd: Int = 30,
ee: Int = 31,
ff: Int = 32,
gg: Int = 33,
hh: Int = 34,
ii: Int = 35,
jj: Int = 36,
kk: Int = 37,
ll: Int = 38,
mm: Int = 39,
nn: Int = 40,
oo: Int = 41,
pp: Int = 42,
qq: Int = 43,
rr: Int = 44,
ss: Int = 45,
tt: Int = 46,
uu: Int = 47,
vv: Int = 48,
ww: Int = 49,
xx: Int = 50,
yy: Int = 51,
zz: Int = 52,
aaa: Int = 53,
bbb: Int = 54,
ccc: Int = 55,
ddd: Int = 56,
eee: Int = 57,
fff: Int = 58,
ggg: Int = 59,
hhh: Int = 60,
iii: Int = 61,
jjj: Int = 62,
kkk: Int = 63,
lll: Int = 64,
mmm: Int = 65,
nnn: Int = 66,
ooo: Int = 67,
ppp: Int = 68,
qqq: Int = 69,
rrr: Int = 70): String {
return "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z $aa $bb $cc $dd $ee $ff $gg $hh $ii $jj $kk " +
"$ll $mm $nn $oo $pp $qq $rr $ss $tt $uu $vv $ww $xx $yy $zz $aaa $bbb $ccc $ddd $eee $fff $ggg $hhh $iii $jjj $kkk $lll " +
"$mmm $nnn $ooo $ppp $qqq $rrr"
}
fun box(): String {
val test1 = foo(4, e = 8, f = 15, w = 16, aa = 23, ff = 42)
val test2 = foo()
val test3 = foo(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, q = 16, r = 15, s = 14, t = 13,
u = 12, v = 11, w = 10, x = 9, y = 8, z = 7, aa = 6, bb = 5, cc = 4, dd = 3, ee = 2, ff = 1)
if (test1 != "4 2 3 4 8 15 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 16 24 25 26 23 28 29 30 31 42") {
return "test1 = $test1"
}
if (test2 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32") {
return "test2 = $test2"
}
if (test3 != "32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test3 = $test3"
}
val test4 = bar(54, 217, h = 236, l = 18, q = 3216, u = 8, aa = 22, ff = 33, jj = 44, mm = 55)
val test5 = bar()
val test6 = bar(40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, u = 20, v = 19,
w = 18, x = 17, y = 16, z = 15, aa = 14, bb = 13, cc = 12, dd = 11, ee = 10, ff = 9, gg = 8, hh = 7, ii = 6,
jj = 5, kk = 4, ll = 3, mm = 2, nn = 1)
if (test4 != "54 217 3 4 5 6 7 236 9 10 11 18 13 14 15 16 3216 18 19 20 8 22 23 24 25 26 22 28 29 30 31 33 33 34 35 44 37 38 55 40") {
return "test4 = $test4"
}
if (test5 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40") {
return "test5 = $test5"
}
if (test6 != "40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test6 = $test6"
}
val test7 = baz(5, f = 3, w = 1, aa = 71, nn = 2, qq = 15, ww = 97, aaa = 261258, iii = 3, nnn = 8, rrr = 7)
val test8 = baz()
val test9 = baz(70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41,
40, 39, 38, 37, 36, jj = 35, kk = 34, ll = 33, mm = 32, nn = 31, oo = 30, pp = 29, qq = 28, rr = 27, ss = 26, tt = 25,
uu = 24, vv = 23, ww = 22, xx = 21, yy = 20, zz = 19, aaa = 18, bbb = 17, ccc = 16, ddd = 15, eee = 14, fff = 13,
ggg = 12, hhh = 11, iii = 10, jjj = 9, kkk = 8, lll = 7, mmm = 6, nnn = 5, ooo = 4, ppp = 3, qqq = 2, rrr = 1)
if (test7 != "5 2 3 4 5 3 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 24 25 26 71 28 29 30 31 32 33 34 35 36 37 38 39 2 41 42 15 " +
"44 45 46 47 48 97 50 51 52 261258 54 55 56 57 58 59 60 3 62 63 64 65 8 67 68 69 7") {
return "test7 = $test7"
}
if (test8 != "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 " +
"43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70") {
return "test8 = $test8"
}
if (test9 != "70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 " +
"31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1") {
return "test9 = $test9"
}
return "OK"
}
@@ -0,0 +1,14 @@
interface Base {
fun bar(a: String = "abc"): String = a + " from interface"
}
class Derived: Base {
override fun bar(a: String): String = a + " from class"
}
fun box(): String {
val result = Derived().bar()
if (result != "abc from class") return "Fail: $result"
return "OK"
}
@@ -0,0 +1,42 @@
// TARGET_BACKEND: JS
// This test causes JVM to generate incorrect bytecode
// Could not use IGNORE_BACKEND directive, since it makes LightAnalysisModeCodegenTestsGenerated fail on this test
interface I<T> {
val prop: T
fun f(x: String = "1"): String
fun g(x: String = "2"): String
fun h(x: T = prop): T
}
open class A<T> {
open fun f(x: String) = x
open fun g(x: T) = x
open fun h(x: String) = x
}
class B : A<String>(), I<String> {
override val prop
get() = "3"
}
fun box(): String {
val i: I<String> = B()
var result = i.f() + i.g() + i.h()
if (result != "123") return "fail1: $result"
val b = B()
result = b.f() + b.g() + b.h()
if (result != "123") return "fail2: $result"
val a: A<String> = B()
result = a.f("q") + a.g("w") + a.h("e")
if (result != "qwe") return "fail3: $result"
return "OK"
}
@@ -0,0 +1,16 @@
// WITH_RUNTIME
fun box(): String {
return if (A().run() == "Aabc") "OK" else "fail"
}
public class A {
fun run() =
with ("abc") {
show()
}
private fun String.show(p: Boolean = false): String = getName() + this
private fun getName() = "A"
}
@@ -0,0 +1,9 @@
class A {
private fun Int.foo(other: Int = 5): Int = this + other
inner class B {
fun bar() = 37.foo()
}
}
fun box() = if (A().B().bar() == 42) "OK" else "Fail"
@@ -0,0 +1,11 @@
// KT-5786 NoSuchMethodError: no accessor for private fun with default arguments
class A {
private fun foo(result: String = "OK"): String = result
companion object {
fun bar() = A().foo()
}
}
fun box() = A.bar()
@@ -0,0 +1,16 @@
var state: String = "Fail"
class A private constructor(x: String = "OK") {
init {
state = x
}
companion object {
fun foo() = A()
}
}
fun box(): String {
A.foo()
return state
}
@@ -0,0 +1,16 @@
var state: String = "Fail"
class A {
private constructor(x: String = "OK") {
state = x
}
companion object {
fun foo() = A()
}
}
fun box(): String {
A.foo()
return state
}
@@ -0,0 +1,23 @@
// FILE: Foo.kt
package foo
open class Foo() {
protected fun foo(value: Boolean = false) = if (!value) "OK" else "fail5"
}
// FILE: Bar.kt
package bar
import foo.Foo
class Bar() : Foo() {
fun execute(): String {
return { foo() } ()
}
}
fun box(): String {
return Bar().execute()
}
@@ -0,0 +1,23 @@
interface FooTrait<T> {
fun make(size: Int = 16) : T
fun makeFromTraitImpl() : T = make()
}
class FooClass : FooTrait<String> {
override fun make(size: Int): String {
return "$size"
}
}
fun box(): String {
val explicitParam = FooClass().make(16)
val defaultRes = FooClass().make()
val defaultTraitRes = FooClass().makeFromTraitImpl()
if (explicitParam != defaultRes) return "fail 1: ${explicitParam} != ${defaultRes}"
if (explicitParam != "16") return "fail 2: ${explicitParam}"
if (explicitParam != defaultTraitRes) return "fail 3: ${explicitParam} != ${defaultTraitRes}"
return "OK"
}
@@ -0,0 +1,23 @@
open class Player(val name: String)
open class SlashPlayer(name: String) : Player(name)
public abstract class Game<T : Player> {
abstract fun getPlayer(name: String, create: Boolean = true): T?
}
class SimpleGame : Game<SlashPlayer>() {
override fun getPlayer(name: String, create: Boolean): SlashPlayer? {
return if (create) {
SlashPlayer(name)
}
else null
}
}
fun box(): String {
val player1 = SimpleGame().getPlayer("fail", false)
if (player1 != null) return "fail 1"
val player2 = SimpleGame().getPlayer("OK")
return player2!!.name
}
@@ -0,0 +1,13 @@
abstract class A<T> {
abstract fun test(a: T, b:Boolean = false) : String
}
class B : A<String>() {
override fun test(a: String, b: Boolean): String {
return a
}
}
fun box(): String {
return B().test("OK")
}
@@ -0,0 +1,7 @@
// FILE: 1.kt
fun box() = ok()
// FILE: 2.kt
fun ok(res: String = "OK") = res
@@ -0,0 +1,30 @@
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// WITH_RUNTIME
open class MyClass {
fun def(i: Int = 0): Int {
return i
}
}
fun box():String {
val method = MyClass::class.java.getMethod("def\$default", MyClass::class.java, Int::class.java, Int::class.java, Any::class.java)
val result = method.invoke(null, MyClass(), -1, 1, null)
if (result != 0) return "fail 1: $result"
var failed = false
try {
method.invoke(null, MyClass(), -1, 1, "fail")
}
catch(e: Exception) {
val cause = e.cause
if (cause is UnsupportedOperationException && cause.message!!.startsWith("Super calls")) {
failed = true
}
}
return if (!failed) "fail" else "OK"
}