[FIR] Add CANNOT_CHECK_FOR_ERASED

This commit is contained in:
Ivan Kochurkin
2021-09-15 20:44:47 +03:00
committed by TeamCityServer
parent e52a410599
commit 291bc74676
44 changed files with 514 additions and 134 deletions
@@ -0,0 +1,9 @@
interface A
interface B: A
interface D
interface BaseSuper<out T>
interface BaseImpl: BaseSuper<D>
interface DerivedSuper<out S>: <!INCONSISTENT_TYPE_PARAMETER_VALUES!>BaseSuper<S>, BaseImpl<!>
fun test(t: BaseSuper<B>) = t is <!CANNOT_CHECK_FOR_ERASED!>DerivedSuper<A><!>
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
interface A
interface B: A
interface D
@@ -1 +0,0 @@
fun f(a: MutableList<String>) = a is MutableList<CharSequence>
@@ -1 +1,2 @@
// FIR_IDENTICAL
fun f(a: MutableList<String>) = a is <!CANNOT_CHECK_FOR_ERASED!>MutableList<CharSequence><!>
@@ -1,8 +0,0 @@
open class A
open class B: A()
open class Base<out T>
open class SubBase<T> : Base<T>()
fun ff(l: Base<B>) = l is SubBase<A>
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
open class A
open class B: A()
@@ -1,6 +0,0 @@
interface A
interface B: A
interface Base<T>
fun <T> test(a: Base<B>) where T: Base<A> = a is T
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface A
interface B: A
@@ -1,2 +0,0 @@
fun ff(l: Any) = l is MutableList<String>
@@ -1,2 +1,3 @@
// FIR_IDENTICAL
fun ff(l: Any) = l is <!CANNOT_CHECK_FOR_ERASED!>MutableList<String><!>
@@ -1 +0,0 @@
fun f(a: MutableList<in String>) = a is MutableList<CharSequence>
@@ -1 +1,2 @@
// FIR_IDENTICAL
fun f(a: MutableList<in String>) = a is <!CANNOT_CHECK_FOR_ERASED!>MutableList<CharSequence><!>
@@ -1,2 +0,0 @@
fun f(a : MutableList<out Any>) = a is MutableList<out Int>
@@ -1,2 +1,3 @@
// FIR_IDENTICAL
fun f(a : MutableList<out Any>) = a is <!CANNOT_CHECK_FOR_ERASED!>MutableList<out Int><!>
@@ -1 +0,0 @@
fun f(a: List<Any>) = a is List<Number>
@@ -1 +1,2 @@
// FIR_IDENTICAL
fun f(a: List<Any>) = a is <!CANNOT_CHECK_FOR_ERASED!>List<Number><!>
@@ -1,8 +0,0 @@
open class A
open class B: A()
open class D
open class Base<out T, out U>
open class Derived<out S>: Base<S, S>()
fun test(a: Base<D, B>) = a is Derived<A>
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
open class A
open class B: A()
open class D
@@ -1,8 +0,0 @@
open class A
open class B: A()
open class D
open class Base<out T, out U>
open class Derived<out S>: Base<S, S>()
fun test(a: Base<B, D>) = a is Derived<A>
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
open class A
open class B: A()
open class D
@@ -1,5 +1,5 @@
fun <T, S : T> test(x: T?, y: S, z: T) {
x is T
x is <!CANNOT_CHECK_FOR_ERASED!>T<!>
<!USELESS_IS_CHECK!>x is T?<!>
<!USELESS_IS_CHECK!>y is T<!>
@@ -2,5 +2,5 @@ open class RecA<T>: <!CYCLIC_INHERITANCE_HIERARCHY!>RecB<T><!>()
open class RecB<T>: <!CYCLIC_INHERITANCE_HIERARCHY!>RecA<T><!>()
open class SelfR<T>: <!CYCLIC_INHERITANCE_HIERARCHY!>SelfR<T><!>()
fun test(f: SelfR<String>) = f is RecA<String>
fun test(f: RecB<String>) = f is RecA<String>
fun test(f: SelfR<String>) = f is <!CANNOT_CHECK_FOR_ERASED!>RecA<String><!>
fun test(f: RecB<String>) = f is <!CANNOT_CHECK_FOR_ERASED!>RecA<String><!>
@@ -1,5 +0,0 @@
fun ff(l: Any) = when(l) {
is MutableList<String> -> 1
else <!SYNTAX!>2<!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
fun ff(l: Any) = when(l) {
is <!CANNOT_CHECK_FOR_ERASED!>MutableList<String><!> -> 1
@@ -9,7 +9,7 @@ public class A {
// FILE: main.kt
fun main(a: A, ml: Any) {
if (ml is MutableList<String>) {
if (ml is <!CANNOT_CHECK_FOR_ERASED!>MutableList<String><!>) {
a.foo(<!JAVA_TYPE_MISMATCH!>ml<!>)
a.foo(ml as List<Any>)
}
@@ -1,11 +0,0 @@
// KT-398 Internal error when property initializes with function
class X<T>() {
val check = { a : Any -> a is T }
}
fun box() : String {
if(X<String>().check(10)) return "fail"
if(!X<String>().check("lala")) return "fail"
return "OK"
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// KT-398 Internal error when property initializes with function
class X<T>() {
@@ -1,11 +0,0 @@
// KT-399 Type argument inference not implemented for CALL_EXPRESSION
fun <T> getSameTypeChecker(obj: T) : Function1<Any,Boolean> {
return { a : Any -> a is T }
}
fun box() : String {
if(getSameTypeChecker<String>("lala")(10)) return "fail"
if(!getSameTypeChecker<String>("mama")("lala")) return "fail"
return "OK"
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// KT-399 Type argument inference not implemented for CALL_EXPRESSION
fun <T> getSameTypeChecker(obj: T) : Function1<Any,Boolean> {