summary refs log tree commit diff stats
path: root/tests/iter
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2018-10-18 16:59:20 +0200
committerAraq <rumpf_a@web.de>2018-10-18 17:00:23 +0200
commit4644484fb73feed9fd314e7798436bd17456f937 (patch)
tree92b657d55a844fc98587e9fa54764f2e97e96058 /tests/iter
parentec4985a5733c9e65e162ece35dca90b37b193f1c (diff)
downloadNim-4644484fb73feed9fd314e7798436bd17456f937.tar.gz
closes #5321
Diffstat (limited to 'tests/iter')
-rw-r--r--tests/iter/tclosureiters.nim24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/iter/tclosureiters.nim b/tests/iter/tclosureiters.nim
index 37313d4d7..9eb27bb93 100644
--- a/tests/iter/tclosureiters.nim
+++ b/tests/iter/tclosureiters.nim
@@ -79,3 +79,27 @@ proc foo(f: (iterator(): int)) =
 
 let fIt = iterator(): int = yield 70
 foo fIt
+
+# bug #5321
+
+proc lineIter*(filename: string): iterator(): string =
+  result = iterator(): string {.closure.} =
+    for line in lines(filename):
+      yield line
+
+proc unused =
+  var count = 0
+  let iter = lineIter("temp10.nim")
+  for line in iter():
+    count += 1
+
+iterator lineIter2*(filename: string): string {.closure.} =
+  var f = open(filename, bufSize=8000)
+  defer: close(f)   # <-- commenting defer "solves" the problem
+  var res = TaintedString(newStringOfCap(80))
+  while f.readLine(res): yield res
+
+proc unusedB =
+  var count = 0
+  for line in lineIter2("temp10.nim"):
+    count += 1