[JS BE] Fix the crash on compound operations with a qualified call on left side

#KT-22001 Fixed
This commit is contained in:
Zalim Bashorov
2018-03-27 16:59:30 +03:00
parent c3b6abfb1f
commit 9349b9bc67
9 changed files with 174 additions and 18 deletions
@@ -0,0 +1,31 @@
var log = ""
class A(p: String) {
var pp = p
init {
log += "init($p);"
}
}
operator fun A.plusAssign(s: String) {
pp += s
log += "pp = $pp;"
}
inline fun <T, R> T.foo(f: (T) -> R) = f(this)
fun <T, R> T.bar(f: (T) -> R) = f(this)
fun box(): String {
"rrr".foo { A(it) } += "aaa"
if (log != "init(rrr);pp = rrraaa;") return "1: log = \"$log\""
log = ""
"foo".bar { A(it) } += "baaar"
if (log != "init(foo);pp = foobaaar;") return "2: log = \"$log\""
return "OK"
}
@@ -0,0 +1,48 @@
var log = ""
class A(p: String) {
var pp = p
init {
log += "init($p);"
}
}
operator fun A.plusAssign(s: String) {
pp += s
log += "pp = $pp;"
}
class D {
val a = A("D")
}
object E {
val t = A("E")
}
fun box(): String {
log = ""
val d = D()
d.a += "foo"
if (log != "init(D);pp = Dfoo;") return "1: log = \"$log\""
log = ""
E.t += "ET"
if (log != "init(E);pp = EET;") return "2: log = \"$log\""
log = ""
val c = object { val b = object { val a = A("xcv") } }
c.b.a += "eee"
if (log != "init(xcv);pp = xcveee;") return "3: log = \"$log\""
val b = object { val a = A("qwe") }
b.a.pp += "ui"
if (b.a.pp != "qweui") return "4: b.a.pp = \"${b.a.pp}\""
return "OK"
}