[FIR] Add UNCHECKED_CAST

Regenerate diagnostics code
This commit is contained in:
Ivan Kochurkin
2021-09-16 23:24:58 +03:00
committed by TeamCityServer
parent 1fbccff1bd
commit d0a4ca199d
70 changed files with 118 additions and 933 deletions
@@ -39,7 +39,7 @@ fun main1() {
// --- from Kotlin --- //
public class Bar<T> {
var value: T = null as T
var value: T = null <!UNCHECKED_CAST!>as T<!>
}
fun takeStarBar(x: Bar<*>) {
@@ -115,4 +115,4 @@ fun main6() {
bar.value = 1
takeStarBar3(bar)
println(bar.value) // CCE: String cannot be cast to Number
}
}
@@ -39,7 +39,7 @@ fun main1() {
// --- from Kotlin --- //
public class Bar<T> {
var value: T = null as T
var value: T = null <!UNCHECKED_CAST!>as T<!>
}
fun takeStarBar(x: Bar<*>) {
@@ -2,7 +2,7 @@
fun foo() = 1
fun <T> foo() = foo() as T
fun <T> foo() = foo() <!UNCHECKED_CAST!>as T<!>
fun <T> foo2(): T = TODO()
@@ -12,7 +12,7 @@ object WriterAppender {
class Builder1<B : Builder1<B>> {
fun asBuilder(): B {
return this as B
return this <!UNCHECKED_CAST!>as B<!>
}
}
@@ -23,4 +23,4 @@ object WriterAppender {
fun <B> intersectTwoSelfTypes(): B where B : Builder1<B>, B: Builder2<B> {
return Builder1<B>().asBuilder()
}
}
}
@@ -37,7 +37,7 @@ object WriterAppender {
class Builder1<B : Builder1<B>> {
fun asBuilder(): B {
return this as B
return this <!UNCHECKED_CAST!>as B<!>
}
}
@@ -48,4 +48,4 @@ object WriterAppender {
fun <B> intersectTwoSelfTypes(): B where B : Builder1<B>, B: Builder2<B> {
return Builder1<B>().asBuilder()
}
}
}
@@ -11,7 +11,7 @@ class B<T> {
fun <Y> foo(c: A<Y>): Y = TODO()
fun <E> main(a: A<E>) {
a as A<B<*>>
a <!UNCHECKED_CAST!>as A<B<*>><!>
foo(a).b()
}
@@ -21,7 +21,7 @@ class AOut<out X>
fun <Y> foo(c: AOut<Y>): Y = TODO()
fun <E> mainOut(a: AOut<E>) {
a as AOut<B<*>>
a <!UNCHECKED_CAST!>as AOut<B<*>><!>
foo(a).b()
}
@@ -1,14 +0,0 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
class Inv<T>
fun <T> materializeInv() = Inv<T>()
fun <X> foo(x: Inv<X>, y: X) = materializeInv<X>()
fun <X> foo(x: Inv<X>, y: () -> X) = materializeInv<X>()
fun <R> main(fn: () -> R) {
fun bar(): R = null as R
val x1 = foo<R>(materializeInv()) { fn() } // OVERLOAD_RESOLUTION_AMBIGUITY only in NI
val x2 = foo<R>(materializeInv(), fn) // OK
val x3 = foo<R>(materializeInv(), ::bar) // OK
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
@@ -1,20 +0,0 @@
//KT-2856 Fix the getOrElse signature to be able to return any supertype of V
package d
import java.util.HashMap
public inline fun <K,V1, V: V1> Map<K,V>.getOrElse1(key: K, defaultValue: ()-> V1) : V1 {
if (this.containsKey(key)) {
return this.get(key) as V
} else {
return defaultValue()
}
}
fun main() {
val map = HashMap<Int, Int>()
println(map.getOrElse1(2, { null })) // Error
}
//from standard library
fun println(message : Any?) {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
//KT-2856 Fix the getOrElse signature to be able to return any supertype of V
package d