summaryrefslogtreecommitdiff
path: root/sources/scalac/ast/TreeInfo.java
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-03-15 14:01:05 +0000
committerMartin Odersky <odersky@gmail.com>2004-03-15 14:01:05 +0000
commit435fe5da695f35581f03b5a739d2ed5e8f58842c (patch)
tree0ffa8e7ebc0ea2062dbaac459e7f26c7ace00936 /sources/scalac/ast/TreeInfo.java
parent0bdcdc7c9f714575f5d3f4882108dc377f9819dd (diff)
downloadscala-435fe5da695f35581f03b5a739d2ed5e8f58842c.tar.gz
scala-435fe5da695f35581f03b5a739d2ed5e8f58842c.tar.bz2
scala-435fe5da695f35581f03b5a739d2ed5e8f58842c.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast/TreeInfo.java')
-rw-r--r--sources/scalac/ast/TreeInfo.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/sources/scalac/ast/TreeInfo.java b/sources/scalac/ast/TreeInfo.java
index 2aa95f401c..b66b7d2357 100644
--- a/sources/scalac/ast/TreeInfo.java
+++ b/sources/scalac/ast/TreeInfo.java
@@ -191,6 +191,31 @@ public class TreeInfo {
}
}
+ /** The symbol with name `name' imported from import clause `tree'.
+ */
+ public static Symbol importedSymbol(Tree tree, Name name) {
+ switch (tree) {
+ case Import(Tree expr, Name[] selectors):
+ Type pre = tree.symbol().type();
+ boolean renamed = false;
+ for (int i = 0; i < selectors.length; i = i + 2) {
+ if (i + 1 < selectors.length && name.toTermName() == selectors[i + 1]) {
+ if (name.isTypeName())
+ return pre.lookupNonPrivate(selectors[i].toTypeName());
+ else
+ return pre.lookupNonPrivate(selectors[i]);
+ } else if (name.toTermName() == selectors[i]) {
+ renamed = true;
+ } else if (selectors[i] == Names.IMPORT_WILDCARD && !renamed) {
+ return pre.lookupNonPrivate(name);
+ }
+ }
+ return Symbol.NONE;
+ default:
+ throw new ApplicationError();
+ }
+ }
+
/** returns true if the tree is a sequence-valued pattern.
* precondition: tree is a pattern.