diff options
| author | Rafael Ávila de Espíndola <[email protected]> | 2011-01-01 13:13:00 -0500 |
|---|---|---|
| committer | Rafael Ávila de Espíndola <[email protected]> | 2011-01-04 11:35:13 -0500 |
| commit | e0fe271d3459d04af9e1580c396b4698063e1999 (patch) | |
| tree | ab869f8a2779d8c5819c1493881225cdc863d043 /src/comp/middle | |
| parent | Refactor the view_item code so that it is similar to the code used for (diff) | |
| download | rust-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.rs | 14 |
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)); } |