diff options
author | Zahary Karadjov <zahary@gmail.com> | 2012-03-19 12:06:38 +0200 |
---|---|---|
committer | Zahary Karadjov <zahary@gmail.com> | 2012-03-19 12:06:38 +0200 |
commit | e43f8d842bd91d92caecd24c190881d1dddeaf38 (patch) | |
tree | bb8238e5881181cf784625847d5359e805da59a9 /compiler/astalgo.nim | |
parent | e3b25e93ac95d192e42dfc56bf699f08d88ec99a (diff) | |
parent | 7d09aee438b335122adf6cc1de875e81ea736c96 (diff) | |
download | Nim-e43f8d842bd91d92caecd24c190881d1dddeaf38.tar.gz |
merged branch overloading-for-macros
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) |