diff options
author | Araq <rumpf_a@web.de> | 2018-10-18 16:59:20 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2018-10-18 17:00:23 +0200 |
commit | 4644484fb73feed9fd314e7798436bd17456f937 (patch) | |
tree | 92b657d55a844fc98587e9fa54764f2e97e96058 /tests/iter | |
parent | ec4985a5733c9e65e162ece35dca90b37b193f1c (diff) | |
download | Nim-4644484fb73feed9fd314e7798436bd17456f937.tar.gz |
closes #5321
Diffstat (limited to 'tests/iter')
-rw-r--r-- | tests/iter/tclosureiters.nim | 24 |
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 |