summary refs log tree commit diff stats
path: root/tests/run/tclosure.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-11-19 15:45:51 +0100
committerAraq <rumpf_a@web.de>2011-11-19 15:45:51 +0100
commita274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82 (patch)
tree95dc5bf7fe3716a3ab266f78094fccce38c94ccf /tests/run/tclosure.nim
parentd0772feb08baaea12bfdad0a7c20a41733f977bd (diff)
downloadNim-a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82.tar.gz
got rid of 'accept' dir in the tests
Diffstat (limited to 'tests/run/tclosure.nim')
-rwxr-xr-xtests/run/tclosure.nim33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/run/tclosure.nim b/tests/run/tclosure.nim
new file mode 100755
index 000000000..d7c0ec0e3
--- /dev/null
+++ b/tests/run/tclosure.nim
@@ -0,0 +1,33 @@
+discard """
+  file: "tclosure.nim"
+  output: "2 4 6 8 10"
+  disabled: true
+"""
+# Test the closure implementation
+
+proc map(n: var openarray[int], fn: proc (x: int): int {.closure}) =
+  for i in 0..n.len-1: n[i] = fn(n[i])
+
+proc foldr(n: openarray[int], fn: proc (x, y: int): int {.closure}): int =
+  for i in 0..n.len-1:
+    result = fn(result, n[i])
+
+var
+  myData: array[0..4, int] = [0, 1, 2, 3, 4]
+
+proc testA() =
+  var p = 0
+  map(myData, proc (x: int): int =
+                result = x + 1 shl (proc (y: int): int =
+                  return y + p
+                )(0)
+                inc(p))
+
+testA()
+for x in items(myData):
+  write(stout, x)
+#OUT 2 4 6 8 10
+
+
+
+