summary refs log tree commit diff stats
path: root/tests/macros/tclosuremacro.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/macros/tclosuremacro.nim')
-rw-r--r--tests/macros/tclosuremacro.nim43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/macros/tclosuremacro.nim b/tests/macros/tclosuremacro.nim
new file mode 100644
index 000000000..d5d9b656c
--- /dev/null
+++ b/tests/macros/tclosuremacro.nim
@@ -0,0 +1,43 @@
+discard """
+  output: '''10
+10
+10
+3
+3
+noReturn
+6
+'''
+"""
+
+import future
+
+proc twoParams(x: (int, int) -> int): int =
+  result = x(5, 5)
+
+proc oneParam(x: int -> int): int =
+  x(5)
+
+proc noParams(x: () -> int): int =
+  result = x()
+
+proc noReturn(x: () -> void) =
+  x()
+
+proc doWithOneAndTwo(f: (int, int) -> int): int =
+  f(1,2)
+
+echo twoParams(proc (a, b): auto = a + b)
+echo twoParams((x, y) => x + y)
+
+echo oneParam(x => x+5) 
+
+echo noParams(() => 3)
+
+echo doWithOneAndTwo((x, y) => x + y)
+
+noReturn((() -> void) => echo("noReturn"))
+
+proc pass2(f: (int, int) -> int): (int) -> int =
+  ((x: int) -> int) => f(2, x)
+
+echo pass2((x, y) => x + y)(4)