diff options
Diffstat (limited to 'compiler/astalgo.nim')
-rw-r--r-- | compiler/astalgo.nim | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/compiler/astalgo.nim b/compiler/astalgo.nim index 06611313c..0efa096be 100644 --- a/compiler/astalgo.nim +++ b/compiler/astalgo.nim @@ -31,6 +31,15 @@ when declared(echo): proc debug*(n: PType; conf: ConfigRef = nil) {.exportc: "debugType", deprecated.} proc debug*(n: PNode; conf: ConfigRef = nil) {.exportc: "debugNode", deprecated.} + proc typekinds*(t: PType) {.deprecated.} = + var t = t + var s = "" + while t != nil and t.len > 0: + s.add $t.kind + s.add " " + t = t.lastSon + echo s + template debug*(x: PSym|PType|PNode) {.deprecated.} = when compiles(c.config): debug(c.config, x) @@ -151,14 +160,14 @@ proc lookupInRecord(n: PNode, field: PIdent): PSym = result = nil case n.kind of nkRecList: - for i in 0 ..< sonsLen(n): + for i in 0 ..< len(n): result = lookupInRecord(n.sons[i], field) if result != nil: return of nkRecCase: if (n.sons[0].kind != nkSym): return nil result = lookupInRecord(n.sons[0], field) if result != nil: return - for i in 1 ..< sonsLen(n): + for i in 1 ..< len(n): case n.sons[i].kind of nkOfBranch, nkElse: result = lookupInRecord(lastSon(n.sons[i]), field) @@ -174,7 +183,7 @@ proc getModule*(s: PSym): PSym = while result != nil and result.kind != skModule: result = result.owner proc getSymFromList*(list: PNode, ident: PIdent, start: int = 0): PSym = - for i in start ..< sonsLen(list): + for i in start ..< len(list): if list.sons[i].kind == nkSym: result = list.sons[i].sym if result.name.id == ident.id: return @@ -185,6 +194,7 @@ proc sameIgnoreBacktickGensymInfo(a, b: string): bool = if a[0] != b[0]: return false var last = a.len - 1 while last > 0 and a[last] != '`': dec(last) + if last == 0: last = a.len - 1 var i = 1 var j = 1 @@ -317,9 +327,9 @@ proc typeToYamlAux(conf: ConfigRef; n: PType, marker: var IntSet, indent: int, sonsRope = "\"$1 @$2\"" % [rope($n.kind), rope( strutils.toHex(cast[ByteAddress](n), sizeof(n) * 2))] else: - if sonsLen(n) > 0: + if len(n) > 0: sonsRope = rope("[") - for i in 0 ..< sonsLen(n): + for i in 0 ..< len(n): if i > 0: add(sonsRope, ",") addf(sonsRope, "$N$1$2", [rspaces(indent + 4), typeToYamlAux(conf, n.sons[i], marker, indent + 4, maxRecDepth - 1)]) @@ -366,9 +376,9 @@ proc treeToYamlAux(conf: ConfigRef; n: PNode, marker: var IntSet, indent: int, else: addf(result, ",$N$1\"ident\": null", [istr]) else: - if sonsLen(n) > 0: + if len(n) > 0: addf(result, ",$N$1\"sons\": [", [istr]) - for i in 0 ..< sonsLen(n): + for i in 0 ..< len(n): if i > 0: add(result, ",") addf(result, "$N$1$2", [rspaces(indent + 4), treeToYamlAux(conf, n.sons[i], marker, indent + 4, maxRecDepth - 1)]) @@ -553,12 +563,12 @@ proc value(this: var DebugPrinter; value: PType) = this.key "n" this.value value.n - if sonsLen(value) > 0: + if len(value) > 0: this.key "sons" this.openBracket - for i in 0 ..< sonsLen(value): + for i in 0 ..< len(value): this.value value.sons[i] - if i != sonsLen(value) - 1: + if i != len(value) - 1: this.comma this.closeBracket @@ -606,12 +616,12 @@ proc value(this: var DebugPrinter; value: PNode) = if this.renderSymType and value.typ != nil: this.key "typ" this.value value.typ - if sonsLen(value) > 0: + if len(value) > 0: this.key "sons" this.openBracket - for i in 0 ..< sonsLen(value): + for i in 0 ..< len(value): this.value value.sons[i] - if i != sonsLen(value) - 1: + if i != len(value) - 1: this.comma this.closeBracket |