diff options
author | yglukhov <yuriy.glukhov@gmail.com> | 2015-06-18 15:09:43 +0300 |
---|---|---|
committer | yglukhov <yuriy.glukhov@gmail.com> | 2015-06-18 15:09:43 +0300 |
commit | 85d5c86efaa6c03903a7efff9721e8f89c42de89 (patch) | |
tree | f639cb56e9ddb6982c74a76fc112d4d0dbe02a65 | |
parent | 9ae4a0425a8ba50db2d536016ff7e61e87c41da0 (diff) | |
download | Nim-85d5c86efaa6c03903a7efff9721e8f89c42de89.tar.gz |
Changed sets of strings to IntSets
-rw-r--r-- | compiler/jsgen.nim | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index 77cb805f6..ede759426 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -33,7 +33,7 @@ import ast, astalgo, strutils, hashes, trees, platform, magicsys, extccomp, options, nversion, nimsets, msgs, securehash, bitsets, idents, lists, types, os, times, ropes, math, passes, ccgutils, wordrecg, renderer, rodread, rodutils, - intsets, cgmeth, lowerings, sets + intsets, cgmeth, lowerings type TTarget = enum @@ -1098,32 +1098,30 @@ proc putToSeq(s: string, indirect: bool): Rope = if indirect: result = "[$1]" % [result] proc createVar(p: PProc, typ: PType, indirect: bool): Rope -proc createRecordVarAux(p: PProc, rec: PNode, excludeMembers: HashSet[string], output: var Rope) = +proc createRecordVarAux(p: PProc, rec: PNode, excludedFieldIDs: IntSet, output: var Rope) = case rec.kind of nkRecList: for i in countup(0, sonsLen(rec) - 1): - createRecordVarAux(p, rec.sons[i], excludeMembers, output) + createRecordVarAux(p, rec.sons[i], excludedFieldIDs, output) of nkRecCase: - createRecordVarAux(p, rec.sons[0], excludeMembers, output) + createRecordVarAux(p, rec.sons[0], excludedFieldIDs, output) for i in countup(1, sonsLen(rec) - 1): - createRecordVarAux(p, lastSon(rec.sons[i]), excludeMembers, output) + createRecordVarAux(p, lastSon(rec.sons[i]), excludedFieldIDs, output) of nkSym: - let name = $mangleName(rec.sym) - if not (name in excludeMembers): + if rec.sym.id notin excludedFieldIDs: if output.len > 0: output.add(", ") - output.add(name) + output.add(mangleName(rec.sym)) output.add(": ") output.add(createVar(p, rec.sym.typ, false)) else: internalError(rec.info, "createRecordVarAux") -proc createObjInitList(p: PProc, typ: PType, excludeMembers: HashSet[string], output: var Rope) = +proc createObjInitList(p: PProc, typ: PType, excludedFieldIDs: IntSet, output: var Rope) = var t = typ if tfFinal notin t.flags or t.sons[0] != nil: - if not ("m_type" in excludeMembers): - if output.len > 0: output.add(", ") - addf(output, "m_type: $1" | "m_type = $#", [genTypeInfo(p, t)]) + if output.len > 0: output.add(", ") + addf(output, "m_type: $1" | "m_type = $#", [genTypeInfo(p, t)]) while t != nil: - createRecordVarAux(p, t.n, excludeMembers, output) + createRecordVarAux(p, t.n, excludedFieldIDs, output) t = t.sons[0] proc createVar(p: PProc, typ: PType, indirect: bool): Rope = @@ -1166,9 +1164,8 @@ proc createVar(p: PProc, typ: PType, indirect: bool): Rope = add(result, "}") if indirect: result = "[$1]" % [result] of tyObject: - var emptySet = initSet[string](2) var initList : Rope - createObjInitList(p, t, emptySet, initList) + createObjInitList(p, t, initIntSet(), initList) result = "{$1}" % [initList] if indirect: result = "[$1]" % [result] of tyVar, tyPtr, tyRef: @@ -1442,7 +1439,7 @@ proc genObjConstr(p: PProc, n: PNode, r: var TCompRes) = var a: TCompRes r.res = rope("{") r.kind = resExpr - var fieldNames = initSet[string]() + var fieldIDs = initIntSet() for i in countup(1, sonsLen(n) - 1): if i > 1: add(r.res, ", ") var it = n.sons[i] @@ -1450,10 +1447,10 @@ proc genObjConstr(p: PProc, n: PNode, r: var TCompRes) = gen(p, it.sons[1], a) var f = it.sons[0].sym if f.loc.r == nil: f.loc.r = mangleName(f) - fieldNames.incl($f.loc.r) + fieldIDs.incl(f.id) addf(r.res, "$#: $#" | "$# = $#" , [f.loc.r, a.res]) let t = skipTypes(n.typ, abstractInst + skipPtrs) - createObjInitList(p, t, fieldNames, r.res) + createObjInitList(p, t, fieldIDs, r.res) r.res.add("}") proc genConv(p: PProc, n: PNode, r: var TCompRes) = |