[FIR] Add UNCHECKED_CAST
Regenerate diagnostics code
This commit is contained in:
committed by
TeamCityServer
parent
1fbccff1bd
commit
d0a4ca199d
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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<*>) {
|
||||
|
||||
+1
-1
@@ -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()
|
||||
|
||||
|
||||
+2
-2
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user