KT-609 Analyze not only local variables, but function parameters as well in 'unused values' analysis
This commit is contained in:
@@ -17,8 +17,10 @@ fun t1(b: Boolean) {
|
||||
}
|
||||
---------------------
|
||||
l0:
|
||||
<START> NEXT:[v(var u: String)] PREV:[]
|
||||
v(var u: String) NEXT:[r(b)] PREV:[<START>]
|
||||
<START> NEXT:[v(b: Boolean)] PREV:[]
|
||||
v(b: Boolean) NEXT:[w(b)] PREV:[<START>]
|
||||
w(b) NEXT:[v(var u: String)] PREV:[v(b: Boolean)]
|
||||
v(var u: String) NEXT:[r(b)] PREV:[w(b)]
|
||||
r(b) NEXT:[jf(l2)] PREV:[v(var u: String)]
|
||||
jf(l2) NEXT:[read (Unit), r("s")] PREV:[r(b)]
|
||||
r("s") NEXT:[w(u)] PREV:[jf(l2)]
|
||||
@@ -63,45 +65,49 @@ fun t2(b: Boolean) {
|
||||
}
|
||||
---------------------
|
||||
l0:
|
||||
<START> NEXT:[v(val i = 3)] PREV:[]
|
||||
v(val i = 3) NEXT:[r(3)] PREV:[<START>]
|
||||
r(3) NEXT:[w(i)] PREV:[v(val i = 3)]
|
||||
w(i) NEXT:[r(b)] PREV:[r(3)]
|
||||
r(b) NEXT:[jf(l2)] PREV:[w(i)]
|
||||
jf(l2) NEXT:[read (Unit), ret l1] PREV:[r(b)]
|
||||
ret l1 NEXT:[<END>] PREV:[jf(l2)]
|
||||
* jmp(l3) NEXT:[r(i)] PREV:[]
|
||||
<START> NEXT:[v(b: Boolean)] PREV:[]
|
||||
v(b: Boolean) NEXT:[w(b)] PREV:[<START>]
|
||||
w(b) NEXT:[v(val i = 3)] PREV:[v(b: Boolean)]
|
||||
v(val i = 3) NEXT:[r(3)] PREV:[w(b)]
|
||||
r(3) NEXT:[w(i)] PREV:[v(val i = 3)]
|
||||
w(i) NEXT:[r(b)] PREV:[r(3)]
|
||||
r(b) NEXT:[jf(l2)] PREV:[w(i)]
|
||||
jf(l2) NEXT:[read (Unit), ret l1] PREV:[r(b)]
|
||||
ret l1 NEXT:[<END>] PREV:[jf(l2)]
|
||||
* jmp(l3) NEXT:[r(i)] PREV:[]
|
||||
l2:
|
||||
read (Unit) NEXT:[r(i)] PREV:[jf(l2)]
|
||||
read (Unit) NEXT:[r(i)] PREV:[jf(l2)]
|
||||
l3:
|
||||
r(i) NEXT:[r(doSmth)] PREV:[read (Unit)]
|
||||
r(doSmth) NEXT:[r(doSmth(i))] PREV:[r(i)]
|
||||
r(doSmth(i)) NEXT:[r(i)] PREV:[r(doSmth)]
|
||||
r(i) NEXT:[r(i is Int)] PREV:[r(doSmth(i))]
|
||||
r(i is Int) NEXT:[jf(l4)] PREV:[r(i)]
|
||||
jf(l4) NEXT:[read (Unit), ret l1] PREV:[r(i is Int)]
|
||||
ret l1 NEXT:[<END>] PREV:[jf(l4)]
|
||||
* jmp(l5) NEXT:[<END>] PREV:[]
|
||||
r(i) NEXT:[r(doSmth)] PREV:[read (Unit)]
|
||||
r(doSmth) NEXT:[r(doSmth(i))] PREV:[r(i)]
|
||||
r(doSmth(i)) NEXT:[r(i)] PREV:[r(doSmth)]
|
||||
r(i) NEXT:[r(i is Int)] PREV:[r(doSmth(i))]
|
||||
r(i is Int) NEXT:[jf(l4)] PREV:[r(i)]
|
||||
jf(l4) NEXT:[read (Unit), ret l1] PREV:[r(i is Int)]
|
||||
ret l1 NEXT:[<END>] PREV:[jf(l4)]
|
||||
* jmp(l5) NEXT:[<END>] PREV:[]
|
||||
l4:
|
||||
read (Unit) NEXT:[<END>] PREV:[jf(l4)]
|
||||
read (Unit) NEXT:[<END>] PREV:[jf(l4)]
|
||||
l1:
|
||||
l5:
|
||||
<END> NEXT:[<SINK>] PREV:[ret l1, ret l1, read (Unit)]
|
||||
<END> NEXT:[<SINK>] PREV:[ret l1, ret l1, read (Unit)]
|
||||
error:
|
||||
<ERROR> NEXT:[] PREV:[]
|
||||
<ERROR> NEXT:[] PREV:[]
|
||||
sink:
|
||||
<SINK> NEXT:[] PREV:[<END>]
|
||||
<SINK> NEXT:[] PREV:[<END>]
|
||||
=====================
|
||||
== doSmth ==
|
||||
fun doSmth(s: String) {}
|
||||
---------------------
|
||||
l0:
|
||||
<START> NEXT:[read (Unit)] PREV:[]
|
||||
read (Unit) NEXT:[<END>] PREV:[<START>]
|
||||
<START> NEXT:[v(s: String)] PREV:[]
|
||||
v(s: String) NEXT:[w(s)] PREV:[<START>]
|
||||
w(s) NEXT:[read (Unit)] PREV:[v(s: String)]
|
||||
read (Unit) NEXT:[<END>] PREV:[w(s)]
|
||||
l1:
|
||||
<END> NEXT:[<SINK>] PREV:[read (Unit)]
|
||||
<END> NEXT:[<SINK>] PREV:[read (Unit)]
|
||||
error:
|
||||
<ERROR> NEXT:[] PREV:[]
|
||||
<ERROR> NEXT:[] PREV:[]
|
||||
sink:
|
||||
<SINK> NEXT:[] PREV:[<END>]
|
||||
<SINK> NEXT:[] PREV:[<END>]
|
||||
=====================
|
||||
|
||||
Reference in New Issue
Block a user