Improve semchecking for duplicate cases in case statements (#7176)

* Improve semchecking for duplicate cases in case statements

* Revert to previous solution

* Improve test
This commit is contained in:
Oscar Nihlgård 2018-02-24 14:56:17 +01:00 • committed by Andreas Rumpf
commit e4515f304a
3 changed files with 66 additions and 4 deletions

View file

@ -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