diff options
author | Zahary Karadjov <zahary@gmail.com> | 2013-12-27 18:34:28 +0200 |
---|---|---|
committer | Zahary Karadjov <zahary@gmail.com> | 2013-12-27 18:34:28 +0200 |
commit | a27eb51535f9ff233b67e5bac80cc51b81c343c7 (patch) | |
tree | 02d29f44788e7ddc00ee9bba3381eb86d349ba6a /tests/compile | |
parent | 4eea2f17d36b2cf239f0a987b5d9715a81b2b70f (diff) | |
download | Nim-a27eb51535f9ff233b67e5bac80cc51b81c343c7.tar.gz |
towards support for composite type classes such as seq[Number] and SquareMatrix[T]
Diffstat (limited to 'tests/compile')
-rw-r--r-- | tests/compile/tcompositetypeclasses.nim | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/compile/tcompositetypeclasses.nim b/tests/compile/tcompositetypeclasses.nim new file mode 100644 index 000000000..ea966f1a9 --- /dev/null +++ b/tests/compile/tcompositetypeclasses.nim @@ -0,0 +1,30 @@ +template accept(e) = + static: assert(compiles(e)) + +template reject(e) = + static: assert(not compiles(e)) + +type + TFoo[T, U] = tuple + x: T + y: U + + TBar[K] = TFoo[K, K] + + TUserClass = int|string + + # TBaz = TBar[TUserClass] + +var + vfoo: TFoo[int, string] + vbar: TFoo[string, string] + +proc foo(x: TFoo) = echo "foo" +proc bar(x: TBar) = echo "bar" +# proc baz(x: TBaz) = echo "baz" + +accept(foo(vfoo)) +accept(bar(vbar)) +# baz vbar +reject(bar(vfoo)) + |