diff options
author | Martin Odersky <odersky@gmail.com> | 2004-03-15 14:01:05 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-03-15 14:01:05 +0000 |
commit | 435fe5da695f35581f03b5a739d2ed5e8f58842c (patch) | |
tree | 0ffa8e7ebc0ea2062dbaac459e7f26c7ace00936 /sources/scalac/ast | |
parent | 0bdcdc7c9f714575f5d3f4882108dc377f9819dd (diff) | |
download | scala-435fe5da695f35581f03b5a739d2ed5e8f58842c.tar.gz scala-435fe5da695f35581f03b5a739d2ed5e8f58842c.tar.bz2 scala-435fe5da695f35581f03b5a739d2ed5e8f58842c.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r-- | sources/scalac/ast/TreeInfo.java | 25 |
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. |