JS object initializer fix.
This commit is contained in:
parent
68f583ddb7
commit
0069308b22
1 changed files with 5 additions and 6 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue