1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- discard """
- output: ''''''
- cmd: '''nim c --gc:arc --expandArc:traverse --hint:Performance:off $file'''
- nimout: '''--expandArc: traverse
- var
- it_cursor
- jt
- try:
- it_cursor = root
- block :tmp:
- while (
- not (it_cursor == nil)):
- echo [it_cursor.s]
- it_cursor = it_cursor.ri
- `=copy`(jt, root)
- block :tmp_1:
- while (
- not (jt == nil)):
- var ri_1
- try:
- `=copy`(ri_1, jt.ri)
- echo [jt.s]
- `=sink`(jt, ri_1)
- wasMoved(ri_1)
- finally:
- `=destroy`(ri_1)
- finally:
- `=destroy`(jt)
- -- end of expandArc ------------------------'''
- """
- type
- Node = ref object
- le, ri: Node
- s: string
- proc traverse(root: Node) =
- var it = root
- while it != nil:
- echo it.s
- it = it.ri
- var jt = root
- while jt != nil:
- let ri = jt.ri
- echo jt.s
- jt = ri
- traverse(nil)
- # XXX: This optimization is not sound
|