[FIR] Display actual type for argument type mismatch error
Previously the argument type was being used for the actual type error display. However, safe-call arguments are unwrapped which causes nullable types to be displayed as non-null. Change to use the actual type provided by the diagnostic instead of extracting the type from the argument. #KT-58844 Fixed
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@ annotation class Ann
|
||||
fun <@Ann R : @Ann Any> f3(a: Array<@Ann R>): Array<@Ann R?> = null!!
|
||||
|
||||
fun test2(a: @Ann Array<in @Ann Int>) {
|
||||
val r: Array<in Int?> = f3(<!ARGUMENT_TYPE_MISMATCH("kotlin/Array<@R|Ann|() R>; @R|Ann|() kotlin/Array<in @R|Ann|() kotlin/Int>")!>a<!>)
|
||||
val r: Array<in Int?> = f3(<!ARGUMENT_TYPE_MISMATCH("kotlin/Array<@R|Ann|() R>; @R|Ann|() kotlin/Array<CapturedType(in @R|Ann|() kotlin/Int)>")!>a<!>)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// !RENDER_DIAGNOSTICS_MESSAGES
|
||||
|
||||
fun intFun(i: Int) {}
|
||||
fun byteFun(i: Byte) {}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var intVar: Int? = 1
|
||||
var byteVar: Byte? = 1
|
||||
|
||||
intFun(<!ARGUMENT_TYPE_MISMATCH("kotlin/Int; kotlin/Int?")!>intVar?.toInt()<!>)
|
||||
byteFun(<!ARGUMENT_TYPE_MISMATCH("kotlin/Byte; kotlin/Byte?")!>byteVar?.toByte()<!>)
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// !RENDER_DIAGNOSTICS_MESSAGES
|
||||
|
||||
fun intFun(i: Int) {}
|
||||
fun byteFun(i: Byte) {}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var intVar: Int? = 1
|
||||
var byteVar: Byte? = 1
|
||||
|
||||
intFun(<!TYPE_MISMATCH!>intVar?.toInt()<!>)
|
||||
byteFun(<!TYPE_MISMATCH!>byteVar?.toByte()<!>)
|
||||
}
|
||||
Reference in New Issue
Block a user