JS: fix behaviour of char-returning functions with multiple inheritance

See KT-19772
This commit is contained in:
Alexey Andreev
2017-09-26 12:55:53 +03:00
parent 13d6e96c2f
commit 46526db8f0
17 changed files with 401 additions and 17 deletions
+41
View File
@@ -0,0 +1,41 @@
// EXPECTED_REACHABLE_NODES: 1039
open class A {
fun foo(): Char = 'X'
}
interface I {
fun foo(): Any
}
class B : A(), I
fun typeOf(x: dynamic): String = js("typeof x")
fun box(): String {
val b = B()
val i: I = B()
val a: A = B()
val r1 = typeOf(b.asDynamic().foo())
if (r1 != "object") return "fail1: $r1"
val r2 = typeOf(i.asDynamic().foo())
if (r2 != "object") return "fail2: $r2"
val r3 = typeOf(a.asDynamic().foo())
if (r3 != "object") return "fail3: $r3"
val x4 = b.foo()
val r4 = typeOf(x4)
if (r4 != "number") return "fail4: $r4"
val x5 = i.foo()
val r5 = typeOf(x5)
if (r5 != "object") return "fail5: $r5"
val x6 = a.foo()
val r6 = typeOf(x6)
if (r6 != "number") return "fail6: $r6"
return "OK"
}