summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/types/taliasassignment.nim50
-rw-r--r--tests/types/taliasinequality.nim66
2 files changed, 116 insertions, 0 deletions
diff --git a/tests/types/taliasassignment.nim b/tests/types/taliasassignment.nim
new file mode 100644
index 000000000..bf4fe8520
--- /dev/null
+++ b/tests/types/taliasassignment.nim
@@ -0,0 +1,50 @@
+discard """
+  output: '''19
+(c: 0)
+(c: 13)
+@[(c: 11)]
+@[(c: 17)]'''
+"""
+# bug #5238
+
+type
+  Rgba8 = object
+    c: int
+  BlenderRgb*[ColorT] = object
+
+template getColorType*[C](x: typedesc[BlenderRgb[C]]): typedesc = C
+
+type
+  ColorT = getColorType(BlenderRgb[int])
+
+proc setColor(c: var ColorT) =
+  c = 19
+
+var n: ColorT
+n.setColor()
+echo n
+
+type
+  ColorType = getColorType(BlenderRgb[Rgba8])
+
+var x: ColorType
+echo x
+
+proc setColor(c: var ColorType) =
+  c = Rgba8(c: 13)
+
+proc setColor(c: var seq[ColorType]) =
+  c[0] = Rgba8(c: 11)
+
+proc setColorArray(c: var openArray[ColorType]) =
+  c[0] = Rgba8(c: 17)
+
+x.setColor()
+echo x
+
+var y = @[Rgba8(c:15)]
+y.setColor()
+echo y
+
+y.setColorArray()
+echo y
\ No newline at end of file
diff --git a/tests/types/taliasinequality.nim b/tests/types/taliasinequality.nim
new file mode 100644
index 000000000..c64933fa2
--- /dev/null
+++ b/tests/types/taliasinequality.nim
@@ -0,0 +1,66 @@
+discard """
+  msg: '''true
+true
+true
+true
+true
+true'''
+  output: '''true
+true
+true
+true
+true
+true
+R
+R
+R
+R'''
+"""
+
+# bug #5360
+import macros
+
+type
+  Order = enum
+    R
+  OrderAlias = Order
+
+template getOrderTypeA(): typedesc = Order
+template getOrderTypeB(): typedesc = OrderAlias
+
+type
+  OrderR    = getOrderTypeA()
+  OrderG    = getOrderTypeB()
+
+macro typeRep(a, b: typed): untyped =
+  if sameType(a, b):
+    echo "true"
+  else:
+    echo "false"
+
+template test(a, b: typedesc) =
+  when a is b:
+    echo "true"
+  else:
+    echo "false"
+
+test(OrderAlias, Order)
+test(OrderR, Order)
+test(OrderG, Order)
+
+test(OrderR, OrderG)
+test(OrderR, OrderAlias)
+test(OrderG, OrderAlias)
+
+typeRep(OrderAlias, Order)  # true
+typeRep(OrderR, Order)      # true
+typeRep(OrderG, Order)      # true
+
+typeRep(OrderR, OrderAlias) # true
+typeRep(OrderG, OrderAlias) # true
+typeRep(OrderR, OrderG)     # true
+
+echo OrderR.R      # R
+echo OrderG.R      # R
+echo OrderAlias.R  # R
+echo Order.R       # R
\ No newline at end of file