| == foo == |
| fun foo() { |
| class A { |
| var a : Int |
| get() { |
| return field |
| } |
| set(v: Int) { |
| field = v |
| } |
| } |
| } |
| --------------------- |
| L0: |
| 1 <START> INIT: in: {} out: {} |
| 2 mark({ class A { var a : Int get() { return field } set(v: Int) { field = v } } }) |
| jmp?(L2) |
| v(var a : Int get() { return field } set(v: Int) { field = v }) INIT: in: {} out: {a=D} |
| jmp?(L3) INIT: in: {a=D} out: {a=D} |
| d(get() { return field }) INIT: in: {a=I?} out: {a=I?} |
| L3 [after local declaration]: |
| jmp?(L6) INIT: in: {a=D} out: {a=D} |
| d(set(v: Int) { field = v }) INIT: in: {a=I?} out: {a=I?} |
| L1: |
| L2 [after local class]: |
| L6 [after local declaration]: |
| 1 <END> INIT: in: {} out: {} |
| error: |
| <ERROR> |
| sink: |
| <SINK> USE: in: {} out: {} |
| ===================== |
| == get_a == |
| get() { |
| return field |
| } |
| --------------------- |
| L4: |
| 3 <START> INIT: in: {a=D} out: {a=D} |
| 4 mark({ return field }) |
| r(field) -> <v0> |
| ret(*|<v0>) L5 |
| L5: |
| 3 <END> |
| error: |
| <ERROR> INIT: in: {} out: {} |
| sink: |
| <SINK> INIT: in: {a=I?} out: {a=I?} USE: in: {} out: {} |
| ===================== |
| == set_a == |
| set(v: Int) { |
| field = v |
| } |
| --------------------- |
| L7: |
| 3 <START> INIT: in: {a=D} out: {a=D} |
| v(v: Int) INIT: in: {a=D} out: {a=D} |
| magic[FAKE_INITIALIZER](v: Int) -> <v0> INIT: in: {a=D} out: {a=D} |
| w(v|<v0>) INIT: in: {a=D} out: {a=D} |
| 4 mark({ field = v }) INIT: in: {a=D} out: {a=D} |
| r(v) -> <v1> |
| w(field|<v1>) |
| L8: |
| 3 <END> |
| error: |
| <ERROR> INIT: in: {} out: {} |
| sink: |
| <SINK> INIT: in: {a=I?} out: {a=I?} USE: in: {} out: {} |
| ===================== |