[FIR] Report ASSIGNMENT_TYPE_MISMATCH on properties with numeric types

^KT-46047
^KT-56951 Fixed
This commit is contained in:
Dmitriy Novozhilov
2023-04-28 14:47:25 +03:00
committed by Space Team
parent f7733e819d
commit 71d6103122
16 changed files with 111 additions and 76 deletions
@@ -1,24 +1,24 @@
val p1: Int = 1 - 1
val p2: Long = 1 - 1
val p3: Byte = <!TYPE_MISMATCH!>1 - 1<!>
val p4: Short = <!TYPE_MISMATCH!>1 - 1<!>
val p3: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1<!>
val p4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1<!>
val l1: Long = 1 - 1.toLong()
val l2: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toLong()<!>
val l3: Int = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toLong()<!>
val l4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toLong()<!>
val b1: Byte = <!TYPE_MISMATCH!>1 - 1.toByte()<!>
val b1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toByte()<!>
val b2: Int = 1 - 1.toByte()
val b3: Long = <!TYPE_MISMATCH!>1 - 1.toByte()<!>
val b4: Short = <!TYPE_MISMATCH!>1 - 1.toByte()<!>
val b3: Long = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toByte()<!>
val b4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toByte()<!>
val i1: Byte = <!TYPE_MISMATCH!>1 - 1.toInt()<!>
val i1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toInt()<!>
val i2: Int = 1 - 1.toInt()
val i3: Long = <!TYPE_MISMATCH!>1 - 1.toInt()<!>
val i4: Short = <!TYPE_MISMATCH!>1 - 1.toInt()<!>
val i3: Long = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toInt()<!>
val i4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toInt()<!>
val s1: Byte = <!TYPE_MISMATCH!>1 - 1.toShort()<!>
val s1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toShort()<!>
val s2: Int = 1 - 1.toShort()
val s3: Long = <!TYPE_MISMATCH!>1 - 1.toShort()<!>
val s4: Short = <!TYPE_MISMATCH!>1 - 1.toShort()<!>
val s3: Long = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toShort()<!>
val s4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toShort()<!>
@@ -15,7 +15,7 @@ val a10 = <!DIVISION_BY_ZERO!>1 / 0.0f<!>
val a11 = <!DIVISION_BY_ZERO!>1 / 0.0<!>
val a12 = <!DIVISION_BY_ZERO!>1L / 0<!>
val b1: Byte = <!DIVISION_BY_ZERO, TYPE_MISMATCH!>1 / 0<!>
val b1: Byte = <!DIVISION_BY_ZERO, INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>1 / 0<!>
@Ann(<!DIVISION_BY_ZERO!>1 / 0<!>) val b2 = 1
annotation class Ann(val i : Int)
@@ -1,10 +1,10 @@
val p1: Byte = <!TYPE_MISMATCH!>(1 + 2) * 2<!>
val p2: Short = <!TYPE_MISMATCH!>(1 + 2) * 2<!>
val p1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>(1 + 2) * 2<!>
val p2: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>(1 + 2) * 2<!>
val p3: Int = (1 + 2) * 2
val p4: Long = (1 + 2) * 2
val b1: Byte = <!TYPE_MISMATCH!>(1.toByte() + 2) * 2<!>
val b2: Short = <!TYPE_MISMATCH!>(1.toShort() + 2) * 2<!>
val b1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>(1.toByte() + 2) * 2<!>
val b2: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>(1.toShort() + 2) * 2<!>
val b3: Int = (1.toInt() + 2) * 2
val b4: Long = (1.toLong() + 2) * 2
@@ -13,17 +13,17 @@ val l2: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toLong()<!>
val l3: Int = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toLong()<!>
val l4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toLong()<!>
val b1: Byte = <!TYPE_MISMATCH!>-1.toByte()<!>
val b1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toByte()<!>
val b2: Int = -1.toByte()
val b3: Long = <!TYPE_MISMATCH!>-1.toByte()<!>
val b4: Short = <!TYPE_MISMATCH!>-1.toByte()<!>
val b3: Long = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toByte()<!>
val b4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toByte()<!>
val i1: Byte = <!TYPE_MISMATCH!>-1.toInt()<!>
val i1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toInt()<!>
val i2: Int = -1.toInt()
val i3: Long = <!TYPE_MISMATCH!>-1.toInt()<!>
val i4: Short = <!TYPE_MISMATCH!>-1.toInt()<!>
val i3: Long = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toInt()<!>
val i4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toInt()<!>
val s1: Byte = <!TYPE_MISMATCH!>-1.toShort()<!>
val s1: Byte = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toShort()<!>
val s2: Int = -1.toShort()
val s3: Long = <!TYPE_MISMATCH!>-1.toShort()<!>
val s4: Short = <!TYPE_MISMATCH!>-1.toShort()<!>
val s3: Long = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toShort()<!>
val s4: Short = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>-1.toShort()<!>