summary refs log tree commit diff stats
path: root/tests/closure/tclosure3.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/closure/tclosure3.nim')
-rw-r--r--tests/closure/tclosure3.nim20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/closure/tclosure3.nim b/tests/closure/tclosure3.nim
new file mode 100644
index 000000000..bb217387f
--- /dev/null
+++ b/tests/closure/tclosure3.nim
@@ -0,0 +1,20 @@
+discard """
+  file: "tclosure3.nim"
+  output: "success"
+"""
+
+proc main =
+  const n = 30
+  for iterations in 0..50_000:
+    var s: seq[proc(): string {.closure.}] = @[]
+    for i in 0 .. n-1:
+      let ii = i
+      s.add(proc(): string = return $(ii*ii))
+    for i in 0 .. n-1:
+      let val = s[i]()
+      if val != $(i*i): echo "bug  ", val
+    
+    if getOccupiedMem() > 3000_000: quit("still a leak!")
+  echo "success"
+
+main()