summary refs log tree commit diff stats
path: root/tests/closure/tjester.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-07-15 09:37:45 +0200
committerAraq <rumpf_a@web.de>2014-07-15 09:37:45 +0200
commit6d3b632b47d626f6915dc2cbef8745baf04b8d76 (patch)
treecd2097090977d241065d1415bc9d0845689063f8 /tests/closure/tjester.nim
parent41bb0bf9dcccdfcebdb0f823fea8b2853b89ea4e (diff)
parent5f8ab1653ad38faf395daf1b8a70249f6954b1ba (diff)
downloadNim-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.nim32
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"