JS object initializer fix.

This commit is contained in:
yglukhov 2015-06-23 14:46:38 +03:00
commit 0069308b22

View file

@ -1435,23 +1435,22 @@ proc genTupleConstr(p: PProc, n: PNode, r: var TCompRes) =
r.res.add("}") r.res.add("}")
proc genObjConstr(p: PProc, n: PNode, r: var TCompRes) = proc genObjConstr(p: PProc, n: PNode, r: var TCompRes) =
# XXX inheritance?
var a: TCompRes var a: TCompRes
r.res = rope("{")
r.kind = resExpr r.kind = resExpr
var initList : Rope
var fieldIDs = initIntSet() var fieldIDs = initIntSet()
for i in countup(1, sonsLen(n) - 1): for i in countup(1, sonsLen(n) - 1):
if i > 1: add(r.res, ", ") if i > 1: add(initList, ", ")
var it = n.sons[i] var it = n.sons[i]
internalAssert it.kind == nkExprColonExpr internalAssert it.kind == nkExprColonExpr
gen(p, it.sons[1], a) gen(p, it.sons[1], a)
var f = it.sons[0].sym var f = it.sons[0].sym
if f.loc.r == nil: f.loc.r = mangleName(f) if f.loc.r == nil: f.loc.r = mangleName(f)
fieldIDs.incl(f.id) 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) let t = skipTypes(n.typ, abstractInst + skipPtrs)
createObjInitList(p, t, fieldIDs, r.res) createObjInitList(p, t, fieldIDs, initList)
r.res.add("}") r.res = "{$1}" % [initList]
proc genConv(p: PProc, n: PNode, r: var TCompRes) = proc genConv(p: PProc, n: PNode, r: var TCompRes) =
var dest = skipTypes(n.typ, abstractVarRange) var dest = skipTypes(n.typ, abstractVarRange)