diff options
author | flywind <43030857+xflywind@users.noreply.github.com> | 2022-06-29 22:37:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-29 22:37:24 +0800 |
commit | bcff13debcbdd8108237c8033e4dc9c38bb331e0 (patch) | |
tree | 8ccaece57cc88b9d679423800743b0d6a93a0952 /tests | |
parent | 8a344cb25b9b9d1b185ba6e5a8e1cf14421fedb4 (diff) | |
download | Nim-bcff13debcbdd8108237c8033e4dc9c38bb331e0.tar.gz |
dec inLoop after exiting the while scope in computeLiveRanges [backport] (#19918)
* dec inLoop after exiting the while scope in computeLiveRanges * add testcase
Diffstat (limited to 'tests')
-rw-r--r-- | tests/arc/tcursorloop.nim | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/arc/tcursorloop.nim b/tests/arc/tcursorloop.nim new file mode 100644 index 000000000..a37a6a036 --- /dev/null +++ b/tests/arc/tcursorloop.nim @@ -0,0 +1,45 @@ +discard """ + cmd: '''nim c --gc:arc --expandArc:traverse --hint:Performance:off $file''' + nimout: ''' +--expandArc: traverse + +var + it + jt_cursor +try: + `=copy`(it, root) + block :tmp: + while ( + not (it == nil)): + if true: + echo [it.s] + `=copy`(it, it.ri) + jt_cursor = root + if ( + not (jt_cursor == nil)): + echo [jt_cursor.s] + jt_cursor = jt_cursor.ri +finally: + `=destroy`(it) +-- end of expandArc ------------------------ +''' +""" + +type + Node = ref object + le, ri: Node + s: string + +proc traverse(root: Node) = + var it = root + while it != nil: + if true: + echo it.s + it = it.ri + + var jt = root + if jt != nil: + echo jt.s + jt = jt.ri + +traverse(nil) |