summary refs log tree commit diff stats
path: root/tests/generics/tgenericprocvar.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/generics/tgenericprocvar.nim')
-rw-r--r--tests/generics/tgenericprocvar.nim36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/generics/tgenericprocvar.nim b/tests/generics/tgenericprocvar.nim
new file mode 100644
index 000000000..1eba81fec
--- /dev/null
+++ b/tests/generics/tgenericprocvar.nim
@@ -0,0 +1,36 @@
+discard """
+  output: "0false12"
+"""
+
+# Test multiple generic instantiation of generic proc vars:
+
+proc threadProcWrapper[TMsg]() =
+  var x: TMsg
+  stdout.write($x)
+
+#var x = threadProcWrapper[int]
+#x()
+
+#var y = threadProcWrapper[bool]
+#y()
+
+threadProcWrapper[int]()
+threadProcWrapper[bool]()
+
+type
+  TFilterProc[T,D] = proc (item: T, env:D): bool {.nimcall.}
+
+proc filter[T,D](data: seq[T], env:D, pred: TFilterProc[T,D]): seq[T] =
+  result = @[]
+  for e in data:
+    if pred(e, env): result.add(e)
+
+proc predTest(item: int, value: int): Bool =
+  return item <= value
+
+proc test(data: seq[int], value: int): seq[int] =
+  return filter(data, value, predTest)
+
+for x in items(test(@[1,2,3], 2)):
+  stdout.write(x)
+