summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2015-06-23 14:39:19 +0200
committerAndreas Rumpf <rumpf_a@web.de>2015-06-23 14:39:19 +0200
commit5f371e1504a7a0cc18262b4b7e2ad55de3ab8325 (patch)
tree1a741f8c1950264f6579d27b20fb6b5efb3cb645
parent68f583ddb7a3e1a9fe8d004fef199d3e1c0bb342 (diff)
parent0069308b22d8754627a74478062870edc7d51ab4 (diff)
downloadNim-5f371e1504a7a0cc18262b4b7e2ad55de3ab8325.tar.gz
Merge pull request #2975 from yglukhov/js-init-list-fix
JS object initialiser fix.
-rw-r--r--compiler/jsgen.nim11
1 files changed, 5 insertions, 6 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index ede759426..87408f395 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -1435,23 +1435,22 @@ proc genTupleConstr(p: PProc, n: PNode, r: var TCompRes) =
   r.res.add("}")
 
 proc genObjConstr(p: PProc, n: PNode, r: var TCompRes) =
-  # XXX inheritance?
   var a: TCompRes
-  r.res = rope("{")
   r.kind = resExpr
+  var initList : Rope
   var fieldIDs = initIntSet()
   for i in countup(1, sonsLen(n) - 1):
-    if i > 1: add(r.res, ", ")
+    if i > 1: add(initList, ", ")
     var it = n.sons[i]
     internalAssert it.kind == nkExprColonExpr
     gen(p, it.sons[1], a)
     var f = it.sons[0].sym
     if f.loc.r == nil: f.loc.r = mangleName(f)
     fieldIDs.incl(f.id)
-    addf(r.res, "$#: $#" | "$# = $#" , [f.loc.r, a.res])
+    addf(initList, "$#: $#" | "$# = $#" , [f.loc.r, a.res])
   let t = skipTypes(n.typ, abstractInst + skipPtrs)
-  createObjInitList(p, t, fieldIDs, r.res)
-  r.res.add("}")
+  createObjInitList(p, t, fieldIDs, initList)
+  r.res = "{$1}" % [initList]
 
 proc genConv(p: PProc, n: PNode, r: var TCompRes) =
   var dest = skipTypes(n.typ, abstractVarRange)