summary refs log tree commit diff stats
path: root/tests/closure/uclosures.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/closure/uclosures.nim')
-rw-r--r--tests/closure/uclosures.nim23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/closure/uclosures.nim b/tests/closure/uclosures.nim
new file mode 100644
index 000000000..f259cfeb9
--- /dev/null
+++ b/tests/closure/uclosures.nim
@@ -0,0 +1,23 @@
+# This test is included from within tunittests
+import unittest
+
+test "loop variables are captured by ref":
+  var funcs: seq[proc (): int {.closure.}] = @[]
+
+  for i in 0..10:
+    let ii = i
+    funcs.add do -> int: return ii * ii
+
+  check funcs[0]() == 100
+  check funcs[3]() == 100
+
+test "loop variables in closureScope are captured by copy":
+  var funcs: seq[proc (): int {.closure.}] = @[]
+
+  for i in 0..10:
+    closureScope:
+      let ii = i
+      funcs.add do -> int: return ii * ii
+
+  check funcs[0]() == 0
+  check funcs[3]() == 9