Limit "always null" scope: only for !!, is and dot; senseless comparison rolled back; "smart constant" information for nulls #KT-10029 Fixed

This commit is contained in:
Mikhail Glukhikh
2015-11-23 14:50:20 +03:00
parent db42941586
commit 89e56093a2
41 changed files with 323 additions and 151 deletions
@@ -16,15 +16,15 @@ fun foo() {
}
if (<!SENSELESS_COMPARISON!>x == null<!>) bar(x) else bar(x)
bar(bar(x))
} else if (<!ALWAYS_NULL!>x<!> == null) {
bar(<!ALWAYS_NULL, TYPE_MISMATCH!>x<!>)
if (<!ALWAYS_NULL!>x<!> != null) {
} else if (<!SENSELESS_COMPARISON!><!DEBUG_INFO_CONSTANT!>x<!> == null<!>) {
bar(<!TYPE_MISMATCH, DEBUG_INFO_CONSTANT!>x<!>)
if (<!SENSELESS_COMPARISON!><!DEBUG_INFO_CONSTANT!>x<!> != null<!>) {
bar(x)
if (<!SENSELESS_COMPARISON!>x == null<!>) bar(x)
if (<!SENSELESS_COMPARISON!>x == null<!>) bar(x) else bar(x)
bar(bar(x) + bar(x))
} else if (<!ALWAYS_NULL!>x<!> == null) {
bar(<!ALWAYS_NULL, TYPE_MISMATCH!>x<!>)
} else if (<!SENSELESS_COMPARISON!><!DEBUG_INFO_CONSTANT!>x<!> == null<!>) {
bar(<!TYPE_MISMATCH, DEBUG_INFO_CONSTANT!>x<!>)
}
}