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:
parent
ba6e11fc88
commit
e4515f304a
3 changed files with 66 additions and 4 deletions
50
tests/casestmt/tduplicates.nim
Normal file
50
tests/casestmt/tduplicates.nim
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue