From fd5b71760eca5aeeedd1b734984f29c346712760 Mon Sep 17 00:00:00 2001 From: schinz Date: Tue, 16 Dec 2003 09:10:42 +0000 Subject: - bug fix: correct the symbol of RETURN nodes --- sources/scalac/transformer/AddInterfaces.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java index dd58d55799..76326afd5c 100644 --- a/sources/scalac/transformer/AddInterfaces.java +++ b/sources/scalac/transformer/AddInterfaces.java @@ -153,6 +153,20 @@ class AddInterfaces extends Transformer { return newTree; } + case Return(Tree expr): { + Symbol sym = tree.symbol(); + Symbol owner = sym.owner(); + if (owner.isClass() && phase.needInterface(owner)) { + Symbol classOwner = phase.getClassSymbol(owner); + Map ownerMemberMap = phase.getClassMemberMap(classOwner); + Symbol newSym = (Symbol)ownerMemberMap.get(sym); + assert newSym != null + : Debug.show(sym) + " not in " + ownerMemberMap; + return gen.Return(tree.pos, newSym, transform(expr)); + } else + return super.transform(tree); + } + case This(_): { // Use class symbol for references to "this". Symbol classThisSym = phase.getClassSymbol(tree.symbol()); -- cgit v1.2.3