From 435fe5da695f35581f03b5a739d2ed5e8f58842c Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 15 Mar 2004 14:01:05 +0000 Subject: *** empty log message *** --- sources/scalac/ast/TreeInfo.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'sources/scalac/ast/TreeInfo.java') 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. -- cgit v1.2.3