summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2019-11-18 12:33:44 +0100
committerGitHub <noreply@github.com>2019-11-18 12:33:44 +0100
commit5278cf80eb4adce3110fd991d772c18e7b4cb0be (patch)
treea46db803a417d5ce7b8371e20e56d95d30ae7ce5 /tests
parentbab5351d4399fc740ff9e9042466b7404e1192d3 (diff)
downloadNim-5278cf80eb4adce3110fd991d772c18e7b4cb0be.tar.gz
ARC: closure bugfixes (#12677)
* ARC: closure bugfixes
* progress
* ARC closures: create =hooks for captured parameters
* ARC: always destroy constructions like tuples, arrays properly, even in edge cases
* fixes a regression
Diffstat (limited to 'tests')
-rw-r--r--tests/destructor/tlists.nim19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/destructor/tlists.nim b/tests/destructor/tlists.nim
index 78c09b105..f5786d936 100644
--- a/tests/destructor/tlists.nim
+++ b/tests/destructor/tlists.nim
@@ -51,7 +51,26 @@ proc tleakingNewStmt =
   for i in 0..10:
     new(x)
 
+iterator infinite(): int {.closure.} =
+  var i = 0
+  while true:
+    yield i
+    inc i
+
+iterator take(it: iterator (): int, numToTake: int): int {.closure.} =
+  var i = 0
+  for x in it():
+    if i >= numToTake:
+      break
+    yield x
+    inc i
+
+proc take3 =
+  for x in infinite.take(3):
+    discard
+
 let startMem = getOccupiedMem()
+take3()
 tlazyList()
 
 mkManyLeaks()