fix #19678 Broken behavior with string ranges in case labels (#20475)

* fix #19678 Broken behavior with string ranges in case labels

* Update compiler/semtypes.nim

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
This commit is contained in:
Bung
2022-10-02 00:17:07 +08:00
committed by GitHub
parent 8d47bf1822
commit cbd9fee22a
2 changed files with 19 additions and 0 deletions

View File

@@ -554,6 +554,8 @@ proc semBranchRange(c: PContext, t, a, b: PNode, covered: var Int128): PNode =
checkMinSonsLen(t, 1, c.config)
let ac = semConstExpr(c, a)
let bc = semConstExpr(c, b)
if ac.kind in {nkStrLit..nkTripleStrLit} or bc.kind in {nkStrLit..nkTripleStrLit}:
localError(c.config, b.info, "range of string is invalid")
let at = fitNode(c, t[0].typ, ac, ac.info).skipConvTakeType
let bt = fitNode(c, t[0].typ, bc, bc.info).skipConvTakeType

17
tests/range/t19678.nim Normal file
View File

@@ -0,0 +1,17 @@
discard """
cmd: "nim check --hints:off $file"
errormsg: ""
nimout: '''
t19678.nim(13, 13) Error: range of string is invalid
'''
"""
case "5":
of "0" .. "9":
discard
else:
discard