| == f == |
| fun f() { |
| class LocalClass() { |
| fun f() { |
| val x = "" |
| |
| fun loc() { |
| val x3 = "" |
| } |
| } |
| } |
| } |
| --------------------- |
| L0: |
| 1 <START> |
| 2 mark({ class LocalClass() { fun f() { val x = "" fun loc() { val x3 = "" } } } }) |
| jmp?(L2) NEXT:[<END>, jmp?(L3)] |
| jmp?(L3) NEXT:[<END>, d(fun f() { val x = "" fun loc() { val x3 = "" } })] |
| d(fun f() { val x = "" fun loc() { val x3 = "" } }) NEXT:[<SINK>] |
| L1: |
| L2 [after local class]: |
| L3 [after local declaration]: |
| 1 <END> NEXT:[<SINK>] PREV:[jmp?(L2), jmp?(L3)] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>, d(fun f() { val x = "" fun loc() { val x3 = "" } })] |
| ===================== |
| == f == |
| fun f() { |
| val x = "" |
| |
| fun loc() { |
| val x3 = "" |
| } |
| } |
| --------------------- |
| L4: |
| 3 <START> |
| 4 mark({ val x = "" fun loc() { val x3 = "" } }) |
| v(val x = "") |
| mark("") |
| r("") -> <v0> |
| w(x|<v0>) |
| jmp?(L6) NEXT:[<END>, d(fun loc() { val x3 = "" })] |
| d(fun loc() { val x3 = "" }) NEXT:[<SINK>] |
| L5: |
| L6 [after local declaration]: |
| 3 <END> NEXT:[<SINK>] PREV:[jmp?(L6)] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>, d(fun loc() { val x3 = "" })] |
| ===================== |
| == loc == |
| fun loc() { |
| val x3 = "" |
| } |
| --------------------- |
| L7: |
| 5 <START> |
| 6 mark({ val x3 = "" }) |
| v(val x3 = "") |
| mark("") |
| r("") -> <v0> |
| w(x3|<v0>) |
| L8: |
| 5 <END> NEXT:[<SINK>] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>] |
| ===================== |