Skip to content

Commit 888bc80

Browse files
committed
Parse and resolve implementations.
Issue #1227
1 parent d5af61d commit 888bc80

File tree

14 files changed

+261
-81
lines changed

14 files changed

+261
-81
lines changed

src/comp/driver/rustc.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ fn compile_input(sess: session::session, cfg: ast::crate_cfg, input: str,
162162
bind middle::ast_map::map_crate(*crate));
163163
time(time_passes, "external crate/lib resolution",
164164
bind creader::read_crates(sess, *crate));
165-
let {def_map: def_map, ext_map: ext_map, exp_map: exp_map} =
165+
let {def_map, ext_map, exp_map, impl_map} =
166166
time(time_passes, "resolution",
167167
bind resolve::resolve_crate(sess, ast_map, crate));
168168
let freevars =
@@ -171,7 +171,8 @@ fn compile_input(sess: session::session, cfg: ast::crate_cfg, input: str,
171171
time(time_passes, "const checking",
172172
bind middle::check_const::check_crate(sess, crate));
173173
let ty_cx = ty::mk_ctxt(sess, def_map, ext_map, ast_map, freevars);
174-
time(time_passes, "typechecking", bind typeck::check_crate(ty_cx, crate));
174+
time(time_passes, "typechecking",
175+
bind typeck::check_crate(ty_cx, impl_map, crate));
175176
time(time_passes, "block-use checking",
176177
bind middle::block_use::check_crate(ty_cx, crate));
177178
time(time_passes, "function usage",
@@ -267,11 +268,11 @@ fn pretty_print_input(sess: session::session, cfg: ast::crate_cfg, input: str,
267268
ppm_typed. {
268269
crate = syntax::ext::expand::expand_crate(sess, crate);
269270
let amap = middle::ast_map::map_crate(*crate);
270-
let {def_map: def_map, ext_map: ext_map, exp_map: _exp_map} =
271+
let {def_map, ext_map, impl_map, _} =
271272
resolve::resolve_crate(sess, amap, crate);
272273
let freevars = freevars::annotate_freevars(def_map, crate);
273274
let ty_cx = ty::mk_ctxt(sess, def_map, ext_map, amap, freevars);
274-
typeck::check_crate(ty_cx, crate);
275+
typeck::check_crate(ty_cx, impl_map, crate);
275276
ann = {pre: ann_paren_for_expr, post: bind ann_typed_post(ty_cx, _)};
276277
}
277278
ppm_identified. {

src/comp/middle/alias.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ fn ty_can_unsafely_include(cx: ctx, needle: unsafe_ty, haystack: ty::t,
532532
fn def_is_local(d: ast::def, objfields_count: bool) -> bool {
533533
ret alt d {
534534
ast::def_local(_, _) | ast::def_arg(_, _) | ast::def_binding(_) |
535-
ast::def_upvar(_, _, _) {
535+
ast::def_upvar(_, _, _) | ast::def_self(_) {
536536
true
537537
}
538538
ast::def_obj_field(_, _) { objfields_count }

src/comp/middle/mut.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ fn is_immutable_def(def: def) -> option::t<str> {
264264
def_arg(_, by_ref.) | def_arg(_, by_val.) |
265265
def_arg(_, mode_infer.) { some("argument") }
266266
def_obj_field(_, imm.) { some("immutable object field") }
267+
def_self(_) { some("self argument") }
267268
def_upvar(_, inner, mut) {
268269
if !mut { some("upvar") } else { is_immutable_def(*inner) }
269270
}

0 commit comments

Comments
 (0)