Pseudocode: Generate correct values for postfix increment/decrement
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
== bar ==
|
||||
fun bar(n: Int) {
|
||||
|
||||
}
|
||||
---------------------
|
||||
L0:
|
||||
1 <START>
|
||||
v(n: Int)
|
||||
magic(n: Int) -> <v0>
|
||||
w(n|<v0>)
|
||||
2 mark({ })
|
||||
read (Unit)
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
error:
|
||||
<ERROR> PREV:[]
|
||||
sink:
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
=====================
|
||||
== foo ==
|
||||
fun foo() {
|
||||
var a = 1
|
||||
bar(a++)
|
||||
bar(a--)
|
||||
bar(++a)
|
||||
bar(--a)
|
||||
}
|
||||
---------------------
|
||||
L0:
|
||||
1 <START>
|
||||
2 mark({ var a = 1 bar(a++) bar(a--) bar(++a) bar(--a) })
|
||||
v(var a = 1)
|
||||
r(1) -> <v0>
|
||||
w(a|<v0>)
|
||||
r(a) -> <v1>
|
||||
mark(a++)
|
||||
call(++, inc|<v1>) -> <v2>
|
||||
w(a|<v2>)
|
||||
mark(bar(a++))
|
||||
call(bar, bar|<v1>) -> <v3>
|
||||
r(a) -> <v4>
|
||||
mark(a--)
|
||||
call(--, dec|<v4>) -> <v5>
|
||||
w(a|<v5>)
|
||||
mark(bar(a--))
|
||||
call(bar, bar|<v4>) -> <v6>
|
||||
r(a) -> <v7>
|
||||
mark(++a)
|
||||
call(++, inc|<v7>) -> <v8>
|
||||
w(a|<v8>)
|
||||
mark(bar(++a))
|
||||
call(bar, bar|<v8>) -> <v9>
|
||||
r(a) -> <v10>
|
||||
mark(--a)
|
||||
call(--, dec|<v10>) -> <v11>
|
||||
w(a|<v11>)
|
||||
mark(bar(--a))
|
||||
call(bar, bar|<v11>) -> <v12>
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
error:
|
||||
<ERROR> PREV:[]
|
||||
sink:
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
=====================
|
||||
Reference in New Issue
Block a user