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
+32
View File
@@ -0,0 +1,32 @@
// SKIP_MINIFICATION
fun foo(): Char = '1'
val p1: Char = '2'
var p2: Char = '3'
var p3: Char = '4'
get() = field + 1
set(value) {
field = value + 1
}
fun box(): String {
var root = eval("_")
var r = typeOf(root.foo())
if (r !== "number") return "fail1: $r"
r = typeOf(root.p1)
if (r !== "number") return "fail2: $r"
r = typeOf(root.p2)
if (r !== "number") return "fail3: $r"
r = typeOf(root.p3)
if (r !== "number") return "fail4: $r"
return "OK"
}
fun typeOf(x: dynamic): String = js("typeof x")
@@ -0,0 +1,24 @@
// EXPECTED_REACHABLE_NODES: 1099
private inline fun typeOf(x: dynamic): String = js("typeof x").unsafeCast<String>()
fun box(): String {
val arr = charArrayOf('A')
var r = typeOf(arr.iterator().asDynamic().nextChar())
if (r != "number") return "fail1: $r"
r = typeOf(arr.iterator().asDynamic().next())
if (r != "object") return "fail1a: $r"
var progression = 'A'..'Z'
r = typeOf(progression.asDynamic().first)
if (r != "number") return "fail2: $r"
r = typeOf(progression.asDynamic().last)
if (r != "number") return "fail3: $r"
r = typeOf(Char.asDynamic().MIN_HIGH_SURROGATE)
if (r != "number") return "fail4: $r"
return "OK"
}
fun getInt() = 65