diff options
-rw-r--r-- | compiler/semtypes.nim | 2 | ||||
-rw-r--r-- | tests/range/t19678.nim | 17 |
2 files changed, 19 insertions, 0 deletions
diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index d033d5f44..b732eff9c 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 000000000..88f7eff89 --- /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 + |