summary refs log tree commit diff stats
path: root/compiler/astalgo.nim
diff options
context:
space:
mode:
authorZahary Karadjov <zahary@gmail.com>2012-03-19 12:06:38 +0200
committerZahary Karadjov <zahary@gmail.com>2012-03-19 12:06:38 +0200
commite43f8d842bd91d92caecd24c190881d1dddeaf38 (patch)
treebb8238e5881181cf784625847d5359e805da59a9 /compiler/astalgo.nim
parente3b25e93ac95d192e42dfc56bf699f08d88ec99a (diff)
parent7d09aee438b335122adf6cc1de875e81ea736c96 (diff)
downloadNim-e43f8d842bd91d92caecd24c190881d1dddeaf38.tar.gz
merged branch overloading-for-macros
Diffstat (limited to 'compiler/astalgo.nim')
-rwxr-xr-xcompiler/astalgo.nim13
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)