== Bar == class Bar { fun invoke(x: Int): Int = x } --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == invoke == fun invoke(x: Int): Int = x --------------------- L0: 1 v(x: Int) magic[FAKE_INITIALIZER](x: Int) -> w(x|) r(x) -> ret(*|) L1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == Foo == class Foo { val get: Bar = Bar() } --------------------- L0: 1 v(val get: Bar = Bar()) mark(Bar()) call(Bar(), ) -> w(get|) L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == test1 == fun test1(foo: Foo) { foo[1] } --------------------- L0: 1 v(foo: Foo) magic[FAKE_INITIALIZER](foo: Foo) -> w(foo|) 2 mark({ foo[1] }) mark(foo[1]) r(foo) -> r(foo[1], get|) -> r(1) -> mark(foo[1]) call(foo[1], invoke|, ) -> L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == test2 == fun test2(foo: Foo, get: Foo.(Int) -> Int) { foo[1] } --------------------- L0: 1 v(foo: Foo) magic[FAKE_INITIALIZER](foo: Foo) -> w(foo|) v(get: Foo.(Int) -> Int) magic[FAKE_INITIALIZER](get: Foo.(Int) -> Int) -> w(get|) 2 mark({ foo[1] }) mark(foo[1]) r(foo[1], get) -> r(foo) -> r(1) -> mark(foo[1]) call(foo[1], invoke|, , ) -> L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] =====================