12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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
|