bugfix for methods (comment in #185)

This commit is contained in:
Araq 2012-08-22 23:38:08 +02:00
commit 1c6870712b
2 changed files with 10 additions and 4 deletions

View file

@ -36,6 +36,7 @@ proc methodCall*(n: PNode): PNode =
result = n
# replace ordinary method by dispatcher method:
var disp = lastSon(result.sons[0].sym.ast).sym
assert sfDispatcher in disp.flags
result.sons[0].sym = disp
# change the arguments to up/downcasts to fit the dispatcher's parameters:
for i in countup(1, sonsLen(result)-1):
@ -99,6 +100,8 @@ proc methodDef*(s: PSym, fromCache: bool) =
if s.typ.sons[0] != nil:
disp.ast.sons[resultPos].sym = copySym(s.ast.sons[resultPos].sym)
attachDispatcher(s, newSymNode(disp))
# attach to itself to prevent bugs:
attachDispatcher(disp, newSymNode(disp))
proc relevantCol(methods: TSymSeq, col: int): bool =
# returns true iff the position is relevant