summary refs log tree commit diff stats
path: root/tests/compile
diff options
context:
space:
mode:
Diffstat (limited to 'tests/compile')
-rw-r--r--tests/compile/tisop.nim42
-rw-r--r--tests/compile/ttypeclasses.nim4
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