diff options
author | flywind <43030857+xflywind@users.noreply.github.com> | 2020-11-02 17:41:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-02 10:41:44 +0100 |
commit | 544cb107c75523196ceee9408f9b1d5d89c82e48 (patch) | |
tree | 89ed0e095f0f988c9abcc8b4624f9a1ac8d4aa24 /compiler/jsgen.nim | |
parent | 00b495de9520a91fe24d81e55da109960189a966 (diff) | |
download | Nim-544cb107c75523196ceee9408f9b1d5d89c82e48.tar.gz |
fix #8821 (#15809)
Diffstat (limited to 'compiler/jsgen.nim')
-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]) |