summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-12-11 14:21:11 +0000
committerpaltherr <paltherr@epfl.ch>2003-12-11 14:21:11 +0000
commitadf175ac26712d8342e669523f963880d5ca53bb (patch)
tree4d6a9fef4e9c36505d98cffa82b12cbc0a244a30 /sources
parent58d053ebedf92597ea38ab40cae0acd706a47660 (diff)
downloadscala-adf175ac26712d8342e669523f963880d5ca53bb.tar.gz
scala-adf175ac26712d8342e669523f963880d5ca53bb.tar.bz2
scala-adf175ac26712d8342e669523f963880d5ca53bb.zip
- Added translation of locations
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/atree/ATreeFromSTree.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/sources/scalac/atree/ATreeFromSTree.java b/sources/scalac/atree/ATreeFromSTree.java
index 218291188a..ce4be2215f 100644
--- a/sources/scalac/atree/ATreeFromSTree.java
+++ b/sources/scalac/atree/ATreeFromSTree.java
@@ -163,6 +163,31 @@ public class ATreeFromSTree {
}
//########################################################################
+ // Private Methods - Translating locations
+
+ /** Translates the location. */
+ private ALocation location(Tree tree) {
+ switch (tree) {
+
+ case Select(Tree qualifier, _):
+ Symbol symbol = tree.symbol();
+ if (symbol.isModule())
+ return ALocation.Module(symbol); // !!! qualifier is ignored !
+ if (symbol.isJava() && symbol.owner().isModuleClass())
+ return ALocation.Field(make.Void, symbol, true); // !!! qualifier is ignored !
+ return ALocation.Field(expression(qualifier), symbol, false);
+
+ case Ident(_):
+ Symbol symbol = tree.symbol();
+ if (symbol.isModule()) return ALocation.Module(symbol);
+ return ALocation.Local(symbol, symbol.isParameter());
+
+ default:
+ throw Debug.abort("illegal case", tree);
+ }
+ }
+
+ //########################################################################
// Private Methods - Translating constants
/** Translates the constant. */