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
@@ -8,7 +8,7 @@ fun foo(x : String?, y : String?) {
x<!UNSAFE_CALL!>.<!>length
y<!UNSAFE_CALL!>.<!>length
}
if (y != null || x == <!ALWAYS_NULL!>y<!>) {
if (y != null || x == <!DEBUG_INFO_CONSTANT!>y<!>) {
x<!UNSAFE_CALL!>.<!>length
y<!UNSAFE_CALL!>.<!>length
}
@@ -17,7 +17,7 @@ fun foo(x : String?, y : String?) {
<!DEBUG_INFO_SMARTCAST!>x<!>.length
<!ALWAYS_NULL!>y<!><!UNSAFE_CALL!>.<!>length
}
if (y == null && x != <!ALWAYS_NULL!>y<!>) {
if (y == null && x != <!DEBUG_INFO_CONSTANT!>y<!>) {
// y == null but x != y
<!DEBUG_INFO_SMARTCAST!>x<!>.length
<!ALWAYS_NULL!>y<!><!UNSAFE_CALL!>.<!>length