[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:
Brian Norman
2023-06-15 08:25:22 -05:00
committed by Space Team
parent a7ff0cfc9d
commit 269dfc61c8
10 changed files with 57 additions and 3 deletions
@@ -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()<!>)
}