diff options
author | Zahary Karadjov <zahary@gmail.com> | 2012-09-25 02:01:16 +0300 |
---|---|---|
committer | Zahary Karadjov <zahary@gmail.com> | 2012-09-25 02:03:15 +0300 |
commit | c899b51b52e8afbf940c0869dc3d35b55adf9ceb (patch) | |
tree | 7e57022304bcf61335d7f5fa1a562d605c023d0c /tests/run | |
parent | badb6c0f665e22bff77d91bb2f64f195110b9887 (diff) | |
download | Nim-c899b51b52e8afbf940c0869dc3d35b55adf9ceb.tar.gz |
test cases for the new typedesc features
Diffstat (limited to 'tests/run')
-rw-r--r-- | tests/run/ttypedesc1.nim | 7 | ||||
-rw-r--r-- | tests/run/ttypetraits.nim | 23 |
2 files changed, 28 insertions, 2 deletions
diff --git a/tests/run/ttypedesc1.nim b/tests/run/ttypedesc1.nim index eedb00792..0c6f5dce4 100644 --- a/tests/run/ttypedesc1.nim +++ b/tests/run/ttypedesc1.nim @@ -1,10 +1,12 @@ -import unittest +import unittest, typetraits type TFoo[T, U] = object x: T y: U +proc getTypeName(t: typedesc): string = t.name + proc foo(T: typedesc[float], a: expr): string = result = "float " & $(a.len > 5) @@ -21,6 +23,9 @@ template foo(T: typedesc[seq]): expr = "seq" test "types can be used as proc params": # XXX: `check` needs to know that TFoo[int, float] is a type and # cannot be assigned for a local variable for later inspection + check ((string.getTypeName == "string")) + check ((getTypeName(int) == "int")) + check ((foo(TFoo[int, float], 1000) == "TFoo 1000")) var f = 10.0 diff --git a/tests/run/ttypetraits.nim b/tests/run/ttypetraits.nim index cba610871..9a4a7d0d3 100644 --- a/tests/run/ttypetraits.nim +++ b/tests/run/ttypetraits.nim @@ -1,6 +1,6 @@ discard """ msg: "int\nstring\nTBar[int]" - output: "int\nstring\nTBar[int]\nint\nrange 0..2" + output: "int\nstring\nTBar[int]\nint\nrange 0..2\nstring" """ import typetraits @@ -36,3 +36,24 @@ proc foo3[R, T](x: array[R, T]) = echo name(R) foo3 arr + +const TypeList = [int, string, seq[int]] + +macro selectType(inType: typedesc): typedesc = + var typeSeq = @[float, TBar[int]] + + for t in TypeList: + typeSeq.add(t) + + typeSeq.add(inType) + typeSeq.add(type(10)) + + var typeSeq2: seq[typedesc] = @[] + typeSeq2 = typeSeq + + result = typeSeq2[5] + +var xvar: selectType(string) +xvar = "proba" +echo xvar.type.name + |