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 -8
View File
@@ -4,7 +4,7 @@ fun test() {
<!DEBUG_INFO_SMARTCAST!>a<!>.plus(1)
}
else {
<!ALWAYS_NULL!>a<!>?.plus(1)
<!DEBUG_INFO_CONSTANT!>a<!>?.plus(1)
}
val out : java.io.PrintStream? = null
@@ -28,7 +28,7 @@ fun test() {
}
if (out == null) {
<!ALWAYS_NULL!>out<!>?.println()
<!DEBUG_INFO_CONSTANT!>out<!>?.println()
} else {
<!DEBUG_INFO_SMARTCAST!>out<!>.println()
}
@@ -88,7 +88,7 @@ fun test() {
}
if (out == null) {
<!ALWAYS_NULL!>out<!>?.println()
<!DEBUG_INFO_CONSTANT!>out<!>?.println()
} else {
<!DEBUG_INFO_SMARTCAST!>out<!>.println()
}
@@ -140,12 +140,12 @@ fun test() {
while (out != null) {
<!DEBUG_INFO_SMARTCAST!>out<!>.println();
}
<!ALWAYS_NULL!>out<!>?.println();
<!DEBUG_INFO_CONSTANT!>out<!>?.println();
val out2 : java.io.PrintStream? = null
while (out2 == null) {
<!ALWAYS_NULL!>out2<!>?.println();
<!DEBUG_INFO_CONSTANT!>out2<!>?.println();
<!ALWAYS_NULL!>out2<!><!UNSAFE_CALL!>.<!>println();
}
<!DEBUG_INFO_SMARTCAST!>out2<!>.println()
@@ -235,7 +235,7 @@ fun f7(s : String?, t : String?) {
}
s?.get(0)
if (!(s != null)) {
<!ALWAYS_NULL!>s<!>?.get(0)
<!DEBUG_INFO_CONSTANT!>s<!>?.get(0)
}
else {
<!DEBUG_INFO_SMARTCAST!>s<!>.get(0)
@@ -245,7 +245,7 @@ fun f7(s : String?, t : String?) {
<!DEBUG_INFO_SMARTCAST!>s<!>.get(0)
}
else {
<!ALWAYS_NULL!>s<!>?.get(0)
<!DEBUG_INFO_CONSTANT!>s<!>?.get(0)
}
s?.get(0)
t?.get(0)
@@ -264,7 +264,7 @@ fun f7(s : String?, t : String?) {
t?.get(0)
}
else {
<!ALWAYS_NULL!>s<!>?.get(0)
<!DEBUG_INFO_CONSTANT!>s<!>?.get(0)
t?.get(0)
}
}