summary refs log tree commit diff stats
path: root/tests/generics/tforwardgenericconstrained.nim
diff options
context:
space:
mode:
authorArne Döring <arne.doering@gmx.net>2019-10-17 09:55:41 +0200
committerAndreas Rumpf <rumpf_a@web.de>2019-10-17 09:55:41 +0200
commit21cbfd72ec9fce04fab98326376651806c8adf0b (patch)
treebbdfd560551627b11a292c2f5913fae7d1104c98 /tests/generics/tforwardgenericconstrained.nim
parent5ba932e43c9c971555d8fdc9e25e2edcdcdd70b4 (diff)
downloadNim-21cbfd72ec9fce04fab98326376651806c8adf0b.tar.gz
Refactor json macro (#12391)
* closes #12316
* make tjsonmacro work at js target
* closes #12289
* closes #11988
* also fixed gdb related stuff
Diffstat (limited to 'tests/generics/tforwardgenericconstrained.nim')
-rw-r--r--tests/generics/tforwardgenericconstrained.nim73
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/generics/tforwardgenericconstrained.nim b/tests/generics/tforwardgenericconstrained.nim
new file mode 100644
index 000000000..6163ea1a8
--- /dev/null
+++ b/tests/generics/tforwardgenericconstrained.nim
@@ -0,0 +1,73 @@
+discard """
+output: '''
+hello some integer
+hello range
+hello tuple
+hello seq
+hello object
+hello distinct
+hello enum
+'''
+"""
+
+
+
+# SomeInteger
+
+proc foo[T : SomeInteger](arg: T)
+proc foo[T : SomeInteger](arg: T) =
+  echo "hello some integer"
+foo(123)
+
+# range
+
+proc foo2[T : range[0..100]](arg: T)
+proc foo2[T : range[0..100]](arg: T) =
+  echo "hello range"
+foo2(7)
+
+# tuple
+
+proc foo3[T : tuple](arg: T)
+proc foo3[T : tuple](arg: T) =
+  echo "hello tuple"
+
+foo3((a:123,b:321))
+
+# seq
+
+proc foo4[T: seq](arg: T)
+proc foo4[T: seq](arg: T) =
+  echo "hello seq"
+
+foo4(@[1,2,3])
+
+# object
+
+proc foo5[T : object](arg: T)
+proc foo5[T : object](arg: T) =
+  echo "hello object"
+
+type MyType = object
+var mt: MyType
+foo5(mt)
+
+# distinct
+
+proc foo6[T : distinct](arg: T)
+proc foo6[T : distinct](arg: T) =
+  echo "hello distinct"
+
+type MyDistinct = distinct string
+var md: MyDistinct
+foo6(md)
+
+# enum
+
+proc foo7[T : enum](arg: T)
+proc foo7[T : enum](arg: T) =
+  echo "hello enum"
+
+type MyEnum = enum
+  ValueA
+foo7(ValueA)