summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2017-06-24 10:29:09 +0200
committerAndreas Rumpf <rumpf_a@web.de>2017-06-26 08:49:52 +0200
commit326e8fdc2ffb1644ff7942ef15e647663e8d5e18 (patch)
tree9ebd9948d69c14d4463c7cfb5ef070cf784dd5e7
parenta8a5d44e5df78b1000ccc537c7ed04cbef50b042 (diff)
downloadNim-326e8fdc2ffb1644ff7942ef15e647663e8d5e18.tar.gz
JS gen: fixes regression
-rw-r--r--compiler/jsgen.nim22
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) =