aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle/resolve.rs
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <[email protected]>2011-01-25 18:15:19 -0500
committerRafael Ávila de Espíndola <[email protected]>2011-01-25 18:16:52 -0500
commit1b82060c5e40e0b4e996bcd30deccd2a523c7590 (patch)
tree13eb7356df6235fb560be3a8e5d5310c71b774d4 /src/comp/middle/resolve.rs
parentSmall first step in expr_path. Call find_final_def just to detect (diff)
downloadrust-1b82060c5e40e0b4e996bcd30deccd2a523c7590.tar.xz
rust-1b82060c5e40e0b4e996bcd30deccd2a523c7590.zip
Print an error if we try to refer to a module in an expr_path.
Diffstat (limited to 'src/comp/middle/resolve.rs')
-rw-r--r--src/comp/middle/resolve.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 1f609dd5..f372e3d7 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -444,7 +444,17 @@ fn fold_expr_path(&env e, &span sp, &ast.path p, &option.t[def] d,
// the expr_field(expr_field(...(expr_path(...)))) we should return.
auto index = new_def_hash[def_wrap]();
- find_final_def(e, index, sp, p.node.idents, none[ast.def_id]);
+ auto d = find_final_def(e, index, sp, p.node.idents, none[ast.def_id]);
+ alt (d) {
+ case (def_wrap_expr_field(_)) {
+ }
+ case (def_wrap_other(_)) {
+ }
+ case (def_wrap_mod(?m)) {
+ e.sess.span_err(sp,
+ "can't refer to a module as a first-class value");
+ }
+ }
auto p_ = rec(node=rec(idents = vec(id0) with p.node) with p);
auto ex = @fold.respan[ast.expr_](sp, ast.expr_path(p_, d_, a));