diff options
Diffstat (limited to 'tests/compile')
-rw-r--r-- | tests/compile/tisop.nim | 42 | ||||
-rw-r--r-- | tests/compile/ttypeclasses.nim | 4 |
2 files changed, 44 insertions, 2 deletions
diff --git a/tests/compile/tisop.nim b/tests/compile/tisop.nim new file mode 100644 index 000000000..509cc4e95 --- /dev/null +++ b/tests/compile/tisop.nim @@ -0,0 +1,42 @@ +import typetraits + +type + TRecord = (tuple) or (object) + + TFoo[T, U] = object + x: int + + when T is string: + y: float + else: + y: string + + when U is TRecord: + z: float + + E = enum A, B, C + +macro m(t: typedesc): typedesc = + if t is enum: + result = string + else: + result = int + +var f: TFoo[int, int] +static: assert(f.y.type.name == "string") + +when compiles(f.z): + {.error: "Foo should not have a `z` field".} + +proc p(a, b) = + when a.type is int: + static: assert false + + var f: TFoo[m(a.type), b.type] + static: + assert f.x.type.name == "int" + assert f.y.type.name == "float" + assert f.z.type.name == "float" + +p(A, f) + diff --git a/tests/compile/ttypeclasses.nim b/tests/compile/ttypeclasses.nim index e22ede1dc..5e23e8489 100644 --- a/tests/compile/ttypeclasses.nim +++ b/tests/compile/ttypeclasses.nim @@ -2,8 +2,8 @@ type TFoo[T] = object val: T - T1 = distinct expr - T2 = distinct expr + T1 = expr + T2 = expr proc takesExpr(x, y) = echo x, y |