summary refs log tree commit diff stats
path: root/tests/closure
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2015-04-30 16:09:27 +0100
committerDominik Picheta <dominikpicheta@googlemail.com>2015-04-30 16:09:27 +0100
commit0be654efe11311fcf1200c0e7dba9ecd55fa5591 (patch)
tree7f55b6c5f467a7094fb0978841a08a9b1764f0c3 /tests/closure
parent4e778f9aac184655135daaff6579ef4a553d225a (diff)
parentd9d5aa60b7df936ffe6149143c7202604f71465f (diff)
downloadNim-0be654efe11311fcf1200c0e7dba9ecd55fa5591.tar.gz
Merge branch 'devel'
Diffstat (limited to 'tests/closure')
-rw-r--r--tests/closure/tfib50.nim22
-rw-r--r--tests/closure/tinvalidclosure.nim2
-rw-r--r--tests/closure/tissue1642.nim7
-rw-r--r--tests/closure/ttimeinfo.nim15
4 files changed, 45 insertions, 1 deletions
diff --git a/tests/closure/tfib50.nim b/tests/closure/tfib50.nim
new file mode 100644
index 000000000..719aa3ad5
--- /dev/null
+++ b/tests/closure/tfib50.nim
@@ -0,0 +1,22 @@
+discard """
+  output: "20365011074"
+"""
+
+import tables
+
+proc memoize(f: proc (a: int64): int64): proc (a: int64): int64 =
+    var previous = initTable[int64, int64]()
+    return proc(i: int64): int64 =
+        if not previous.hasKey i:
+            previous[i] = f(i)
+        return previous[i]
+
+var fib: proc(a: int64): int64
+
+fib = memoize(proc (i: int64): int64 =
+    if i == 0 or i == 1:
+        return 1
+    return fib(i-1) + fib(i-2)
+)
+
+echo fib(50)
diff --git a/tests/closure/tinvalidclosure.nim b/tests/closure/tinvalidclosure.nim
index 18968a6c6..c9136a736 100644
--- a/tests/closure/tinvalidclosure.nim
+++ b/tests/closure/tinvalidclosure.nim
@@ -1,6 +1,6 @@
 discard """
   line: 12
-  errormsg: "type mismatch: got (proc (int){.closure, gcsafe, locks: 0.})"
+  errormsg: "type mismatch: got (proc (x: int){.closure, gcsafe, locks: 0.})"
 """
 
 proc ugh[T](x: T) {.closure.} =
diff --git a/tests/closure/tissue1642.nim b/tests/closure/tissue1642.nim
new file mode 100644
index 000000000..e3028c88e
--- /dev/null
+++ b/tests/closure/tissue1642.nim
@@ -0,0 +1,7 @@
+discard """
+  file: "tissue1642.nim"
+  disabled: true
+"""
+block:
+  var i = 0
+  proc p() = inc(i)
diff --git a/tests/closure/ttimeinfo.nim b/tests/closure/ttimeinfo.nim
new file mode 100644
index 000000000..3138ae72e
--- /dev/null
+++ b/tests/closure/ttimeinfo.nim
@@ -0,0 +1,15 @@
+# bug #2073
+
+import sequtils
+import times
+
+# 1
+proc f(n: int): TimeInfo =
+  TimeInfo(year: n, month: mJan, monthday: 1)
+
+echo toSeq(2000 || 2015).map(f)
+
+# 2
+echo toSeq(2000 || 2015).map(proc (n: int): TimeInfo =
+  TimeInfo(year: n, month: mJan, monthday: 1)
+)