diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2024-09-03 00:10:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-02 18:10:01 +0200 |
commit | 4789af71fe107e137524bc7746b902e644aca2dc (patch) | |
tree | 7bbd6dc669e4f0c3062c5f1bc9e3d4d09b794d73 /compiler | |
parent | fc853cb7268b74d87932fb08553dfbd5864d8f81 (diff) | |
download | Nim-4789af71fe107e137524bc7746b902e644aca2dc.tar.gz |
fixes #24031; js codegen bug for case statement with just else branch (#24047)
fixes #24031
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/jsgen.nim | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index d6310d584..e3c0b1f46 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1098,14 +1098,19 @@ proc genCaseJS(p: PProc, n: PNode, r: var TCompRes) = lineF(p, "break;$n", []) of nkElse: if transferRange: - lineF(p, "else{$n", []) + if n.len == 2: # a dangling else for a case statement + transferRange = false + lineF(p, "switch ($1) {$n", [cond.rdLoc]) + lineF(p, "default: $n", []) + else: + lineF(p, "else{$n", []) else: lineF(p, "default: $n", []) p.nested: gen(p, it[0], stmt) moveInto(p, stmt, r) if transferRange: - lineF(p, "}$n", []) + lineF(p, "}$n", []) else: lineF(p, "break;$n", []) else: internalError(p.config, it.info, "jsgen.genCaseStmt") |