diff options
author | Araq <rumpf_a@web.de> | 2014-07-15 09:37:45 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-07-15 09:37:45 +0200 |
commit | 6d3b632b47d626f6915dc2cbef8745baf04b8d76 (patch) | |
tree | cd2097090977d241065d1415bc9d0845689063f8 /tests/closure/tjester.nim | |
parent | 41bb0bf9dcccdfcebdb0f823fea8b2853b89ea4e (diff) | |
parent | 5f8ab1653ad38faf395daf1b8a70249f6954b1ba (diff) | |
download | Nim-6d3b632b47d626f6915dc2cbef8745baf04b8d76.tar.gz |
Merge branch 'new_spawn' into devel
Conflicts: todo.txt web/news.txt web/nimrod.ini
Diffstat (limited to 'tests/closure/tjester.nim')
-rw-r--r-- | tests/closure/tjester.nim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/closure/tjester.nim b/tests/closure/tjester.nim new file mode 100644 index 000000000..48e5186f0 --- /dev/null +++ b/tests/closure/tjester.nim @@ -0,0 +1,32 @@ +discard """ + output: '''baro0''' +""" + +type + Future[T] = ref object + data: T + callback: proc () {.closure.} + +proc cbOuter(response: string) {.closure, discardable.} = + iterator cbIter(): Future[int] {.closure.} = + for i in 0..7: + proc foo(): int = + iterator fooIter(): Future[int] {.closure.} = + echo response, i + yield Future[int](data: 17) + var iterVar = fooIter + iterVar().data + yield Future[int](data: foo()) + + var iterVar2 = cbIter + proc cb2() {.closure.} = + try: + if not finished(iterVar2): + let next = iterVar2() + if next != nil: + next.callback = cb2 + except: + echo "WTF" + cb2() + +cbOuter "baro" |