diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-06-24 10:29:09 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-06-26 08:49:52 +0200 |
commit | 326e8fdc2ffb1644ff7942ef15e647663e8d5e18 (patch) | |
tree | 9ebd9948d69c14d4463c7cfb5ef070cf784dd5e7 | |
parent | a8a5d44e5df78b1000ccc537c7ed04cbef50b042 (diff) | |
download | Nim-326e8fdc2ffb1644ff7942ef15e647663e8d5e18.tar.gz |
JS gen: fixes regression
-rw-r--r-- | compiler/jsgen.nim | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index b31c3a6a7..ca0d3f385 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -810,16 +810,24 @@ proc genAsmOrEmitStmt(p: PProc, n: PNode) = genLineDir(p, n) p.body.add p.indentLine(nil) for i in countup(0, sonsLen(n) - 1): - case n.sons[i].kind + let it = n[i] + case it.kind of nkStrLit..nkTripleStrLit: - p.body.add(n.sons[i].strVal) + p.body.add(it.strVal) of nkSym: - let v = n.sons[i].sym - if p.target == targetPHP and v.kind in {skVar, skLet, skTemp, skConst, skResult, skParam, skForVar}: - p.body.add "$" - p.body.add mangleName(v, p.target) + let v = it.sym + # for backwards compatibility we don't deref syms here :-( + if v.kind in {skVar, skLet, skTemp, skConst, skResult, skParam, skForVar}: + if p.target == targetPHP: p.body.add "$" + p.body.add mangleName(v, p.target) + else: + var r: TCompRes + gen(p, it, r) + p.body.add(r.rdLoc) else: - internalError(n.sons[i].info, "jsgen: genAsmOrEmitStmt()") + var r: TCompRes + gen(p, it, r) + p.body.add(r.rdLoc) p.body.add tnl proc genIf(p: PProc, n: PNode, r: var TCompRes) = |