JS: don't optimize RTTI when possible, i.e. don't remove is and as when object is known at compile time to have type in RHS of expression. Substitute kotlin.Any with Object. Fix #KT-7665, #KT-7664

This commit is contained in:
Alexey Andreev
2016-09-09 16:43:31 +03:00
parent c581ec6dd6
commit 66c78be10f
14 changed files with 71 additions and 74 deletions
+32
View File
@@ -0,0 +1,32 @@
// CHECK_CALLED_IN_SCOPE: function=isType scope=box
package foo
class A : Any()
fun Any?.asAny() = this
fun box(): String {
val x = Any().asAny()
if (x !is Any) return "fail1"
if (x.asDynamic().constructor !== js("Object")) return "fail1a"
if (A().asAny() !is Any) return "fail2"
if (arrayOf(1, 2, 3).asAny() !is Any) return "fail3"
if (createNakedObject() is Any) return "fail4"
if (({ }).asAny() !is Any) return "fail5"
if ((23).asAny() !is Any) return "fail6"
if ((3.14).asAny() !is Any) return "fail7"
if (false.asAny() !is Any) return "fail8"
if ("bar".asAny() !is Any) return "fail9"
return "OK"
}
fun createNakedObject(): Any? = js("Object.create(null)")