[NI] Don't check type for constants too early to avoid mismatch

This commit is contained in:
Mikhail Zarechenskiy
2017-12-06 20:38:58 +03:00
parent 6c27a49114
commit d47130eff8
8 changed files with 67 additions and 39 deletions
+1 -3
View File
@@ -1,10 +1,8 @@
// !WITH_NEW_INFERENCE
var x : Int = 1 + <!UNINITIALIZED_VARIABLE!>x<!>
get() : Int = 1
set(value : <!WRONG_SETTER_PARAMETER_TYPE!>Long<!>) {
field = value.toInt()
field = <!TYPE_MISMATCH!>1.<!NI;TYPE_MISMATCH!>toLong()<!><!>
field = <!TYPE_MISMATCH!>1.toLong()<!>
}
val xx : Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>1 + x<!>
@@ -1,26 +1,24 @@
// !WITH_NEW_INFERENCE
val p1: Int = 1 - 1
val p2: Long = <!NI;TYPE_MISMATCH!>1 - 1<!>
val p3: Byte = <!NI;TYPE_MISMATCH!>1 - 1<!>
val p4: Short = <!NI;TYPE_MISMATCH!>1 - 1<!>
val p2: Long = 1 - 1
val p3: Byte = 1 - 1
val p4: Short = 1 - 1
val l1: Long = 1 - 1.toLong()
val l2: Byte = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toLong()<!>
val l3: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toLong()<!>
val l4: Short = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toLong()<!>
val l2: Byte = <!TYPE_MISMATCH!>1 - 1.toLong()<!>
val l3: Int = <!TYPE_MISMATCH!>1 - 1.toLong()<!>
val l4: Short = <!TYPE_MISMATCH!>1 - 1.toLong()<!>
val b1: Byte = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toByte()<!>
val b1: Byte = <!TYPE_MISMATCH!>1 - 1.toByte()<!>
val b2: Int = 1 - 1.toByte()
val b3: Long = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toByte()<!>
val b4: Short = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toByte()<!>
val b3: Long = <!TYPE_MISMATCH!>1 - 1.toByte()<!>
val b4: Short = <!TYPE_MISMATCH!>1 - 1.toByte()<!>
val i1: Byte = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toInt()<!>
val i1: Byte = <!TYPE_MISMATCH!>1 - 1.toInt()<!>
val i2: Int = 1 - 1.toInt()
val i3: Long = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toInt()<!>
val i4: Short = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toInt()<!>
val i3: Long = <!TYPE_MISMATCH!>1 - 1.toInt()<!>
val i4: Short = <!TYPE_MISMATCH!>1 - 1.toInt()<!>
val s1: Byte = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toShort()<!>
val s1: Byte = <!TYPE_MISMATCH!>1 - 1.toShort()<!>
val s2: Int = 1 - 1.toShort()
val s3: Long = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toShort()<!>
val s4: Short = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>1 - 1.toShort()<!>
val s3: Long = <!TYPE_MISMATCH!>1 - 1.toShort()<!>
val s4: Short = <!TYPE_MISMATCH!>1 - 1.toShort()<!>
@@ -1,12 +1,10 @@
// !WITH_NEW_INFERENCE
val p1: Byte = <!NI;TYPE_MISMATCH!>(1 + 2) * 2<!>
val p2: Short = <!NI;TYPE_MISMATCH!>(1 + 2) * 2<!>
val p1: Byte = (1 + 2) * 2
val p2: Short = (1 + 2) * 2
val p3: Int = (1 + 2) * 2
val p4: Long = <!NI;TYPE_MISMATCH!>(1 + 2) * 2<!>
val p4: Long = (1 + 2) * 2
val b1: Byte = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>(1.toByte() + 2) * 2<!>
val b2: Short = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>(1.toShort() + 2) * 2<!>
val b1: Byte = <!TYPE_MISMATCH!>(1.toByte() + 2) * 2<!>
val b2: Short = <!TYPE_MISMATCH!>(1.toShort() + 2) * 2<!>
val b3: Int = (1.toInt() + 2) * 2
val b4: Long = (1.toLong() + 2) * 2