summary refs log tree commit diff stats
path: root/tests/iter/titer3.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/iter/titer3.nim')
-rw-r--r--tests/iter/titer3.nim54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/iter/titer3.nim b/tests/iter/titer3.nim
new file mode 100644
index 000000000..defd56c98
--- /dev/null
+++ b/tests/iter/titer3.nim
@@ -0,0 +1,54 @@
+discard """
+  output: '''1231
+4
+6
+8
+--------
+4
+6
+8
+'''
+"""
+
+iterator count1_3: int =
+  yield 1
+  yield 2
+  yield 3
+
+for x in count1_3():
+  write(stdout, $x)
+
+# yield inside an iterator, but not in a loop:
+iterator iter1(a: openArray[int]): int =
+  yield a[0]
+
+var x = [[1, 2, 3], [4, 5, 6]]
+for y in iter1(x[0]): write(stdout, $y)
+writeLine(stdout, "")
+
+# ensure closure and inline iterators have the same behaviour regarding
+# parameter passing
+
+iterator clo(a: int): int {.closure.} =
+  yield 0+a
+  yield 1+a
+  yield 2+a
+
+iterator inl(a: int): int {.inline.} =
+  yield 0+a
+  yield 1+a
+  yield 2+a
+
+proc main =
+  var y = 4
+  for i in clo(y):
+    echo i
+    inc y
+
+  echo "--------"
+  y = 4
+  for i in inl(y):
+    echo i
+    inc y
+
+main()