| == Ab == |
| abstract class Ab { |
| abstract fun getArray() : Array<Int> |
| } |
| --------------------- |
| L0: |
| 1 <START> |
| L1: |
| <END> NEXT:[<SINK>] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>] |
| ===================== |
| == getArray == |
| abstract fun getArray() : Array<Int> |
| --------------------- |
| L0: |
| 1 <START> |
| L1: |
| <END> NEXT:[<SINK>] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>] |
| ===================== |
| == test == |
| fun test(ab: Ab) { |
| ab.getArray()[1] |
| } |
| --------------------- |
| L0: |
| 1 <START> |
| v(ab: Ab) |
| magic[FAKE_INITIALIZER](ab: Ab) -> <v0> |
| w(ab|<v0>) |
| 2 mark({ ab.getArray()[1] }) |
| mark(ab.getArray()[1]) |
| mark(ab.getArray()) |
| r(ab) -> <v1> |
| mark(getArray()) |
| call(getArray(), getArray|<v1>) -> <v2> |
| r(1) -> <v3> |
| mark(ab.getArray()[1]) |
| call(ab.getArray()[1], get|<v2>, <v3>) -> <v4> |
| L1: |
| 1 <END> NEXT:[<SINK>] |
| error: |
| <ERROR> PREV:[] |
| sink: |
| <SINK> PREV:[<ERROR>, <END>] |
| ===================== |