diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-09-01 14:35:00 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-09-01 16:32:44 +0200 |
| commit | 6ba4eacddf2a07e13f6589f04303ce7fb4c4d70c (patch) | |
| tree | eaf81d69cf68aa58a97c148df9b9678ad5ff0957 /src/comp/driver | |
| parent | 2d1dec78e7fd2fa0a569f797d147d5940e81f3d0 (diff) | |
Make resolve recognize upvars
Upvars are now marked with def_upvar throughout, not just when going through freevars::lookup_def. This makes things less error-prone. One thing to watch out for is that def_upvar is used in `for each` bodies too, when they refer to a local outside the body.
Diffstat (limited to 'src/comp/driver')
| -rw-r--r-- | src/comp/driver/rustc.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index c281fc6a9b6..6096695eb2c 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -155,7 +155,7 @@ fn compile_input(sess: session::session, cfg: ast::crate_cfg, input: &istr, bind resolve::resolve_crate(sess, ast_map, crate)); let freevars = time(time_passes, ~"freevar finding", - bind freevars::annotate_freevars(sess, def_map, crate)); + bind freevars::annotate_freevars(def_map, crate)); let ty_cx = ty::mk_ctxt(sess, def_map, ext_map, ast_map, freevars); time(time_passes, ~"typechecking", bind typeck::check_crate(ty_cx, crate)); @@ -240,7 +240,7 @@ fn pretty_print_input(sess: session::session, cfg: ast::crate_cfg, let amap = middle::ast_map::map_crate(*crate); let {def_map: def_map, ext_map: ext_map} = resolve::resolve_crate(sess, amap, crate); - let freevars = freevars::annotate_freevars(sess, def_map, crate); + let freevars = freevars::annotate_freevars(def_map, crate); let ty_cx = ty::mk_ctxt(sess, def_map, ext_map, amap, freevars); typeck::check_crate(ty_cx, crate); ann = {pre: ann_paren_for_expr, post: bind ann_typed_post(ty_cx, _)}; |
