mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-13 06:43:52 +00:00
bugfix: removed newSons legacy
This commit is contained in:
@@ -877,8 +877,10 @@ proc len*(n: PType): int =
|
||||
else: result = len(n.sons)
|
||||
|
||||
proc newSons(father: PType, length: int) =
|
||||
if isNil(father.sons): father.sons = @[]
|
||||
setlen(father.sons, len(father.sons) + length)
|
||||
if isNil(father.sons):
|
||||
newSeq(father.sons, length)
|
||||
else:
|
||||
setlen(father.sons, length)
|
||||
|
||||
proc addSon(father, son: PType) =
|
||||
if isNil(father.sons): father.sons = @[]
|
||||
@@ -890,8 +892,10 @@ proc sonsLen(n: PNode): int =
|
||||
else: result = len(n.sons)
|
||||
|
||||
proc newSons(father: PNode, length: int) =
|
||||
if isNil(father.sons): father.sons = @[]
|
||||
setlen(father.sons, len(father.sons) + length)
|
||||
if isNil(father.sons):
|
||||
newSeq(father.sons, length)
|
||||
else:
|
||||
setlen(father.sons, length)
|
||||
|
||||
proc addSon(father, son: PNode) =
|
||||
assert son != nil
|
||||
@@ -937,7 +941,7 @@ proc shallowCopy*(src: PNode): PNode =
|
||||
of nkSym: result.sym = src.sym
|
||||
of nkIdent: result.ident = src.ident
|
||||
of nkStrLit..nkTripleStrLit: result.strVal = src.strVal
|
||||
else: newSons(result, sonsLen(src))
|
||||
else: newSeq(result.sons, sonsLen(src))
|
||||
|
||||
proc copyTree(src: PNode): PNode =
|
||||
# copy a whole syntax tree; performs deep copying
|
||||
@@ -954,8 +958,7 @@ proc copyTree(src: PNode): PNode =
|
||||
of nkIdent: result.ident = src.ident
|
||||
of nkStrLit..nkTripleStrLit: result.strVal = src.strVal
|
||||
else:
|
||||
result.sons = nil
|
||||
newSons(result, sonsLen(src))
|
||||
newSeq(result.sons, sonsLen(src))
|
||||
for i in countup(0, sonsLen(src) - 1):
|
||||
result.sons[i] = copyTree(src.sons[i])
|
||||
|
||||
|
||||
@@ -583,6 +583,7 @@ proc StrTableIncl*(t: var TStrTable, n: PSym): bool =
|
||||
# returns true if n is already in the string table:
|
||||
# It is essential that `n` is written nevertheless!
|
||||
# This way the newest redefinition is picked by the semantic analyses!
|
||||
assert n.name != nil
|
||||
var h: THash = n.name.h and high(t.data)
|
||||
while true:
|
||||
var it = t.data[h]
|
||||
|
||||
@@ -246,7 +246,8 @@ proc semGenericStmt(c: PContext, n: PNode,
|
||||
of nkProcDef, nkMethodDef, nkConverterDef, nkMacroDef, nkTemplateDef,
|
||||
nkIteratorDef, nkLambda:
|
||||
checkSonsLen(n, bodyPos + 1)
|
||||
addPrelimDecl(c, newSymS(skUnknown, getIdentNode(n.sons[0]), c))
|
||||
if n.kind != nkLambda:
|
||||
addPrelimDecl(c, newSymS(skUnknown, getIdentNode(n.sons[0]), c))
|
||||
openScope(c.tab)
|
||||
n.sons[genericParamsPos] = semGenericStmt(c, n.sons[genericParamsPos],
|
||||
flags, toBind)
|
||||
|
||||
4
todo.txt
4
todo.txt
@@ -1,8 +1,7 @@
|
||||
version 0.8.14
|
||||
==============
|
||||
|
||||
- BUG: type TX = TTable[string, int]
|
||||
- BUG: temp2.nim triggers weird compiler bug
|
||||
- fix remaining generics bugs
|
||||
- fix line info in assertions
|
||||
- implicit invokation of `items`/`pairs` seems nice; ensure items(23) does
|
||||
not compile though
|
||||
@@ -48,6 +47,7 @@ Bugs
|
||||
- bug: stress testing basic method example (eval example)
|
||||
without ``-d:release`` leaks memory; good way to figure out how a
|
||||
fixed amount of stack can hold an arbitrary number of GC roots!
|
||||
- BUG: temp2.nim triggers weird compiler and except.nim bug
|
||||
|
||||
|
||||
version 0.9.XX
|
||||
|
||||
Reference in New Issue
Block a user