diff options
author | Araq <rumpf_a@web.de> | 2012-03-19 22:12:08 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-03-19 22:12:08 +0100 |
commit | bb1885115db4d8075a6c688b58d4ccb91b6ad24a (patch) | |
tree | 311e436ba00df97885cc662bb3f690a3511cbf90 /compiler/astalgo.nim | |
parent | 7cd2f353c72ced274e5a6e6c0f92e8e32e9d6374 (diff) | |
parent | 7b41b0f84113d3b9901d5c598dd909a1df6f960f (diff) | |
download | Nim-bb1885115db4d8075a6c688b58d4ccb91b6ad24a.tar.gz |
Merge branch 'master' of github.com:Araq/Nimrod
Diffstat (limited to 'compiler/astalgo.nim')
-rwxr-xr-x | compiler/astalgo.nim | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/astalgo.nim b/compiler/astalgo.nim index 7128102a8..9da0d3a20 100755 --- a/compiler/astalgo.nim +++ b/compiler/astalgo.nim @@ -567,6 +567,19 @@ proc StrTableRawInsert(data: var TSymSeq, n: PSym) = assert(data[h] == nil) data[h] = n +proc SymTabReplaceRaw(data: var TSymSeq, prevSym: PSym, newSym: PSym) = + assert prevSym.name.h == newSym.name.h + var h: THash = prevSym.name.h and high(data) + while data[h] != nil: + if data[h] == prevSym: + data[h] = newSym + return + h = nextTry(h, high(data)) + assert false + +proc SymTabReplace*(t: var TStrTable, prevSym: PSym, newSym: PSym) = + SymTabReplaceRaw(t.data, prevSym, newSym) + proc StrTableEnlarge(t: var TStrTable) = var n: TSymSeq newSeq(n, len(t.data) * growthFactor) |