aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <[email protected]>2011-01-01 13:13:00 -0500
committerRafael Ávila de Espíndola <[email protected]>2011-01-04 11:35:13 -0500
commite0fe271d3459d04af9e1580c396b4698063e1999 (patch)
treeab869f8a2779d8c5819c1493881225cdc863d043 /src/comp/middle
parentRefactor the view_item code so that it is similar to the code used for (diff)
downloadrust-e0fe271d3459d04af9e1580c396b4698063e1999.tar.xz
rust-e0fe271d3459d04af9e1580c396b4698063e1999.zip
Add support for looking up a name introduced by a 'use'.
With this we go from "error: unresolved name: foo" to "unimplemented definition variant for: foo" in use foo; fn main(vec[str] args) { foo.bar(); }
Diffstat (limited to 'src/comp/middle')
-rw-r--r--src/comp/middle/resolve.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 7f344d95..551993dd 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -67,10 +67,24 @@ fn lookup_name(&env e, ast.ident i) -> option.t[def] {
ret none[def];
}
+ fn found_def_view(@ast.view_item i) -> option.t[def] {
+ alt (i.node) {
+ case (ast.view_item_use(_, _, ?id)) {
+ ret some[def](ast.def_use(id));
+ }
+ case (ast.view_item_import(_,?id)) {
+ fail;
+ }
+ }
+ }
+
fn check_mod(ast.ident i, ast._mod m) -> option.t[def] {
alt (m.index.find(i)) {
case (some[ast.mod_index_entry](?ent)) {
alt (ent) {
+ case (ast.mie_use(?ix)) {
+ ret found_def_view(m.view_items.(ix));
+ }
case (ast.mie_item(?ix)) {
ret found_def_item(m.items.(ix));
}