summary refs log tree commit diff stats
path: root/tests/casestmt/tduplicates.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/casestmt/tduplicates.nim')
-rw-r--r--tests/casestmt/tduplicates.nim50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/casestmt/tduplicates.nim b/tests/casestmt/tduplicates.nim
new file mode 100644
index 000000000..f9fc1cc26
--- /dev/null
+++ b/tests/casestmt/tduplicates.nim
@@ -0,0 +1,50 @@
+discard """
+  output: '''
+OK
+OK
+OK
+  '''
+"""
+
+type Kind = enum A, B
+var k = A
+
+template reject(b) =
+  static: doAssert(not compiles(b))
+
+reject:
+    var i = 2
+    case i
+    of [1, 1]: discard
+    else: discard
+
+reject:
+    var i = 2
+    case i
+    of 1, { 1..2 }: discard
+    else: discard
+
+reject:
+    var i = 2
+    case i
+    of { 1, 1 }: discard
+    of { 1, 1 }: discard
+    else: discard
+
+reject:
+    case k
+    of [A, A]: discard
+
+var i = 2
+case i
+of { 1, 1 }: discard
+of { 2, 2 }: echo "OK"
+else: discard
+
+case i
+of { 10..30, 15..25, 5..15, 25..35 }: discard
+else: echo "OK"
+
+case k
+of {A, A..A}: echo "OK"
+of B: discard
\ No newline at end of file