parent
00b495de95
commit
544cb107c7
2 changed files with 17 additions and 0 deletions
|
|
@ -865,6 +865,7 @@ proc genRaiseStmt(p: PProc, n: PNode) =
|
||||||
proc genCaseJS(p: PProc, n: PNode, r: var TCompRes) =
|
proc genCaseJS(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
var
|
var
|
||||||
cond, stmt: TCompRes
|
cond, stmt: TCompRes
|
||||||
|
totalRange = 0
|
||||||
genLineDir(p, n)
|
genLineDir(p, n)
|
||||||
gen(p, n[0], cond)
|
gen(p, n[0], cond)
|
||||||
let stringSwitch = skipTypes(n[0].typ, abstractVar).kind == tyString
|
let stringSwitch = skipTypes(n[0].typ, abstractVar).kind == tyString
|
||||||
|
|
@ -884,6 +885,10 @@ proc genCaseJS(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
let e = it[j]
|
let e = it[j]
|
||||||
if e.kind == nkRange:
|
if e.kind == nkRange:
|
||||||
var v = copyNode(e[0])
|
var v = copyNode(e[0])
|
||||||
|
inc(totalRange, int(e[1].intVal - v.intVal))
|
||||||
|
if totalRange > 65535:
|
||||||
|
localError(p.config, n.info,
|
||||||
|
"Your case statement contains too many branches, consider using if/else instead!")
|
||||||
while v.intVal <= e[1].intVal:
|
while v.intVal <= e[1].intVal:
|
||||||
gen(p, v, cond)
|
gen(p, v, cond)
|
||||||
lineF(p, "case $1:$n", [cond.rdLoc])
|
lineF(p, "case $1:$n", [cond.rdLoc])
|
||||||
|
|
|
||||||
12
tests/js/t8821.nim
Normal file
12
tests/js/t8821.nim
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
discard """
|
||||||
|
errormsg: "Your case statement contains too many branches, consider using if/else instead!"
|
||||||
|
"""
|
||||||
|
|
||||||
|
proc isInt32(i: int): bool =
|
||||||
|
case i
|
||||||
|
of 1 .. 70000:
|
||||||
|
return true
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
|
||||||
|
discard isInt32(1)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue