| == foo == |
| fun foo() { |
| class B { |
| val a: Int |
| get() { |
| val b: Int |
| return b |
| } |
| } |
| } |
| --------------------- |
| L0: |
| 1 <START> |
| 2 mark({ class B { val a: Int get() { val b: Int return b } } }) |
| jmp?(L2) NEXT:[<END>, v(val a: Int get() { val b: Int return b })] |
| v(val a: Int get() { val b: Int return b }) |
| jmp?(L3) NEXT:[<END>, d(get() { val b: Int return b })] |
| d(get() { val b: Int return b }) 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(get() { val b: Int return b })] |
| ===================== |
| == get_a == |
| get() { |
| val b: Int |
| return b |
| } |
| --------------------- |
| L4: |
| 3 <START> |
| 4 mark({ val b: Int return b }) |
| v(val b: Int) |
| r(b) -> <v0> |
| ret(*|<v0>) L5 |
| L5: |
| 3 <END> NEXT:[<SINK>] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>] |
| ===================== |