Fix for KT-9140: Default parameters are passed as nulls when using indexing [ ] invocation

#KT-9140 Fixed
This commit is contained in:
Michael Bogdanov
2015-11-03 15:49:20 +03:00
parent b556037915
commit 0fcaaa80df
7 changed files with 143 additions and 18 deletions
@@ -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"
}