diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/jsgen.nim | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index cd14f1cf9..10c072253 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -865,6 +865,7 @@ proc genRaiseStmt(p: PProc, n: PNode) = proc genCaseJS(p: PProc, n: PNode, r: var TCompRes) = var cond, stmt: TCompRes + totalRange = 0 genLineDir(p, n) gen(p, n[0], cond) 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] if e.kind == nkRange: 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: gen(p, v, cond) lineF(p, "case $1:$n", [cond.rdLoc]) |