summaryrefslogtreecommitdiff
path: root/sources/scalac/transformer/AddInterfaces.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-10-16 11:56:02 +0000
committerpaltherr <paltherr@epfl.ch>2003-10-16 11:56:02 +0000
commit3a8034f03a5514feeef5344e9914b08f19cac4e8 (patch)
tree3430dee59aa3d931b0ba340990650949ea07aec4 /sources/scalac/transformer/AddInterfaces.java
parenta887198e5913605ac92dab9c3155048e5985ea25 (diff)
downloadscala-3a8034f03a5514feeef5344e9914b08f19cac4e8.tar.gz
scala-3a8034f03a5514feeef5344e9914b08f19cac4e8.tar.bz2
scala-3a8034f03a5514feeef5344e9914b08f19cac4e8.zip
- Added transformation of Super nodes
Diffstat (limited to 'sources/scalac/transformer/AddInterfaces.java')
-rw-r--r--sources/scalac/transformer/AddInterfaces.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java
index e841d1a60c..497b7a4feb 100644
--- a/sources/scalac/transformer/AddInterfaces.java
+++ b/sources/scalac/transformer/AddInterfaces.java
@@ -159,6 +159,12 @@ class AddInterfaces extends Transformer {
return gen.This(tree.pos, classThisSym);
}
+ case Super(_, _): {
+ // Use class symbol for references to "super".
+ Symbol classSuperSym = phase.getClassSymbol(tree.symbol());
+ return gen.Super(tree.pos, classSuperSym);
+ }
+
case Select(Super(_, _), _): {
// Use class member symbols for references to "super".
@@ -166,8 +172,9 @@ class AddInterfaces extends Transformer {
Symbol classOwner = phase.getClassSymbol(sym.owner());
Map ownerMemberMap = phase.getClassMemberMap(classOwner);
if (ownerMemberMap != null && ownerMemberMap.containsKey(sym)) {
+ Tree qualifier = transform(((Select)tree).qualifier);
Symbol newSym = (Symbol)ownerMemberMap.get(sym);
- return gen.Select(((Select)tree).qualifier, newSym);
+ return gen.Select(tree.pos, qualifier, newSym);
} else
return super.transform(tree);
}