From cbd9fee22ac7063c66cc9aa38f20e78df082e387 Mon Sep 17 00:00:00 2001 From: Bung Date: Sun, 2 Oct 2022 00:17:07 +0800 Subject: [PATCH] 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 Co-authored-by: Andreas Rumpf --- compiler/semtypes.nim | 2 ++ tests/range/t19678.nim | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tests/range/t19678.nim diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index d033d5f440..b732eff9c4 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -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 diff --git a/tests/range/t19678.nim b/tests/range/t19678.nim new file mode 100644 index 0000000000..88f7eff890 --- /dev/null +++ b/tests/range/t19678.nim @@ -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 +