diff options
author | paltherr <paltherr@epfl.ch> | 2003-12-11 14:21:11 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-12-11 14:21:11 +0000 |
commit | adf175ac26712d8342e669523f963880d5ca53bb (patch) | |
tree | 4d6a9fef4e9c36505d98cffa82b12cbc0a244a30 /sources | |
parent | 58d053ebedf92597ea38ab40cae0acd706a47660 (diff) | |
download | scala-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.java | 25 |
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. */ |