More cases for nullability analysis
This commit is contained in:
@@ -224,26 +224,28 @@ fun t3() {
|
||||
---------------------
|
||||
l0:
|
||||
<START>
|
||||
l3:
|
||||
l2:
|
||||
l5:
|
||||
r(true)
|
||||
jf(l2)
|
||||
jmp?(l4)
|
||||
jf(l3)
|
||||
l4:
|
||||
jmp?(l6)
|
||||
r(1)
|
||||
r(2)
|
||||
r(3)
|
||||
r(>)
|
||||
r(2 > 3)
|
||||
jf(l5)
|
||||
r(2)
|
||||
jmp(l2)
|
||||
jmp(l6)
|
||||
l5:
|
||||
read (Unit)
|
||||
l4:
|
||||
l6:
|
||||
jf(l7)
|
||||
r(2)
|
||||
jmp(l3)
|
||||
l2:
|
||||
jmp(l8)
|
||||
l7:
|
||||
read (Unit)
|
||||
l6:
|
||||
l8:
|
||||
r(2)
|
||||
jmp(l2)
|
||||
l3:
|
||||
read (Unit)
|
||||
l1:
|
||||
<END>
|
||||
@@ -268,22 +270,24 @@ fun t3() {
|
||||
l0:
|
||||
<START>
|
||||
jmp?(l2)
|
||||
l4:
|
||||
l3:
|
||||
l6:
|
||||
r(true)
|
||||
jf(l3)
|
||||
jf(l4)
|
||||
l5:
|
||||
r(1)
|
||||
r(2)
|
||||
r(3)
|
||||
r(>)
|
||||
r(2 > 3)
|
||||
jf(l5)
|
||||
jmp(l3)
|
||||
jmp(l6)
|
||||
l5:
|
||||
read (Unit)
|
||||
l6:
|
||||
jf(l7)
|
||||
jmp(l4)
|
||||
l3:
|
||||
jmp(l8)
|
||||
l7:
|
||||
read (Unit)
|
||||
l8:
|
||||
jmp(l3)
|
||||
l4:
|
||||
read (Unit)
|
||||
r(5)
|
||||
l2:
|
||||
@@ -310,22 +314,24 @@ fun t3() {
|
||||
l0:
|
||||
<START>
|
||||
jmp?(l2)
|
||||
l4:
|
||||
l3:
|
||||
l6:
|
||||
r(true)
|
||||
jf(l3)
|
||||
jf(l4)
|
||||
l5:
|
||||
r(1)
|
||||
r(2)
|
||||
r(3)
|
||||
r(>)
|
||||
r(2 > 3)
|
||||
jf(l5)
|
||||
jmp(l3)
|
||||
jmp(l6)
|
||||
l5:
|
||||
read (Unit)
|
||||
l6:
|
||||
jf(l7)
|
||||
jmp(l4)
|
||||
l3:
|
||||
jmp(l8)
|
||||
l7:
|
||||
read (Unit)
|
||||
l8:
|
||||
jmp(l3)
|
||||
l4:
|
||||
read (Unit)
|
||||
l2:
|
||||
r(2)
|
||||
@@ -354,24 +360,26 @@ l0:
|
||||
r(a)
|
||||
r(..)
|
||||
r(1..a)
|
||||
jmp?(l2)
|
||||
l3:
|
||||
jmp?(l4)
|
||||
jmp?(l2)
|
||||
l4:
|
||||
l5:
|
||||
jmp?(l6)
|
||||
r(1)
|
||||
r(2)
|
||||
r(3)
|
||||
r(>)
|
||||
r(2 > 3)
|
||||
jf(l5)
|
||||
jf(l7)
|
||||
r(2)
|
||||
jmp(l3)
|
||||
jmp(l6)
|
||||
l5:
|
||||
jmp(l4)
|
||||
jmp(l8)
|
||||
l7:
|
||||
read (Unit)
|
||||
l4:
|
||||
l6:
|
||||
l8:
|
||||
r(2)
|
||||
jmp?(l3)
|
||||
jmp?(l4)
|
||||
l2:
|
||||
read (Unit)
|
||||
l1:
|
||||
@@ -401,20 +409,22 @@ l0:
|
||||
r(a)
|
||||
r(..)
|
||||
r(1..a)
|
||||
jmp?(l3)
|
||||
l4:
|
||||
jmp?(l3)
|
||||
l5:
|
||||
l6:
|
||||
r(1)
|
||||
r(2)
|
||||
r(3)
|
||||
r(>)
|
||||
r(2 > 3)
|
||||
jf(l5)
|
||||
jmp(l4)
|
||||
jmp(l6)
|
||||
l5:
|
||||
jf(l7)
|
||||
jmp(l5)
|
||||
jmp(l8)
|
||||
l7:
|
||||
read (Unit)
|
||||
l6:
|
||||
jmp?(l4)
|
||||
l8:
|
||||
jmp?(l5)
|
||||
l3:
|
||||
read (Unit)
|
||||
r(5)
|
||||
@@ -446,20 +456,22 @@ l0:
|
||||
r(a)
|
||||
r(..)
|
||||
r(1..a)
|
||||
jmp?(l3)
|
||||
l4:
|
||||
jmp?(l3)
|
||||
l5:
|
||||
l6:
|
||||
r(1)
|
||||
r(2)
|
||||
r(3)
|
||||
r(>)
|
||||
r(2 > 3)
|
||||
jf(l5)
|
||||
jmp(l4)
|
||||
jmp(l6)
|
||||
l5:
|
||||
jf(l7)
|
||||
jmp(l5)
|
||||
jmp(l8)
|
||||
l7:
|
||||
read (Unit)
|
||||
l6:
|
||||
jmp?(l4)
|
||||
l8:
|
||||
jmp?(l5)
|
||||
l3:
|
||||
read (Unit)
|
||||
l2:
|
||||
|
||||
@@ -7,15 +7,17 @@ fun main() {
|
||||
---------------------
|
||||
l0:
|
||||
<START>
|
||||
l3:
|
||||
l2:
|
||||
l5:
|
||||
r(1)
|
||||
r(0)
|
||||
r(>)
|
||||
r(1 > 0)
|
||||
jf(l2)
|
||||
jf(l3)
|
||||
l4:
|
||||
r(2)
|
||||
jmp(l3)
|
||||
l2:
|
||||
jmp(l2)
|
||||
l3:
|
||||
read (Unit)
|
||||
l1:
|
||||
<END>
|
||||
@@ -30,14 +32,16 @@ fun dowhile() {
|
||||
---------------------
|
||||
l0:
|
||||
<START>
|
||||
l3:
|
||||
l2:
|
||||
l4:
|
||||
ret l1
|
||||
l5:
|
||||
r(1)
|
||||
r(0)
|
||||
r(>)
|
||||
r(1 > 0)
|
||||
jt(l3)
|
||||
l2:
|
||||
jt(l2)
|
||||
l3:
|
||||
read (Unit)
|
||||
l1:
|
||||
<END>
|
||||
|
||||
@@ -139,3 +139,78 @@ fun test() {
|
||||
out.println()
|
||||
|
||||
}
|
||||
|
||||
|
||||
fun f(out : String?) {
|
||||
out?.get(0)
|
||||
if (out != null) else return;
|
||||
out.get(0)
|
||||
}
|
||||
|
||||
fun f1(out : String?) {
|
||||
out?.get(0)
|
||||
if (out != null) else {
|
||||
1 + 2
|
||||
return;
|
||||
}
|
||||
out.get(0)
|
||||
}
|
||||
|
||||
fun f2(out : String?) {
|
||||
out?.get(0)
|
||||
if (out == null) {
|
||||
1 + 2
|
||||
return;
|
||||
}
|
||||
out.get(0)
|
||||
}
|
||||
|
||||
fun f3(out : String?) {
|
||||
out?.get(0)
|
||||
if (out == null) {
|
||||
1 + 2
|
||||
return;
|
||||
}
|
||||
else {
|
||||
1 + 2
|
||||
}
|
||||
out.get(0)
|
||||
}
|
||||
|
||||
fun f4(s : String?) {
|
||||
s?.get(0)
|
||||
while (1 < 2 && s != null) {
|
||||
s.get(0)
|
||||
}
|
||||
s?.get(0)
|
||||
while (s == null || 1 < 2) {
|
||||
s?.get(0)
|
||||
}
|
||||
s.get(0)
|
||||
}
|
||||
|
||||
fun f5(s : String?) {
|
||||
s?.get(0)
|
||||
while (1 < 2 && s != null) {
|
||||
s.get(0)
|
||||
}
|
||||
s?.get(0)
|
||||
while (s == null || 1 < 2) {
|
||||
if (1 > 2) break
|
||||
s?.get(0)
|
||||
}
|
||||
s?.get(0);
|
||||
}
|
||||
|
||||
fun f6(s : String?) {
|
||||
s?.get(0)
|
||||
do {
|
||||
s?.get(0)
|
||||
if (1 < 2) break;
|
||||
} while (s == null)
|
||||
s?.get(0)
|
||||
do {
|
||||
s?.get(0)
|
||||
} while (s == null)
|
||||
s.get(0)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user