JS/RTTI: in expressions like a as T when inferred type for a is S, where S <: T, don't generate type checking

This commit is contained in:
Alexey Andreev
2016-04-28 19:29:27 +03:00
parent 0f6a6a3ba4
commit 6454613b51
8 changed files with 113 additions and 20 deletions
@@ -0,0 +1,28 @@
package foo
// CHECK_METHOD_NOT_CALLED_IN_SCOPE: scope=box function=isType
open class A()
class B() : A()
fun box(): String {
assertTrue(B() is A)
assertTrue(B() is A?)
assertTrue(B() is B)
assertTrue(B() is B?)
assertTrue((B() as B?) is A?)
assertTrue((null as A?) is A?)
assertNotEquals(null, B() as? A)
assertNotEquals(null, B() as? A?)
assertNotEquals(null, B() as? B)
assertNotEquals(null, B() as? B?)
assertNotEquals(null, B() as A)
assertNotEquals(null, B() as A?)
assertNotEquals(null, B() as B)
assertNotEquals(null, B() as B?)
return "OK"
}