Skip to content

Commit c0704aa

Browse files
committed
---
yaml --- r: 151219 b: refs/heads/try2 c: b9af043 h: refs/heads/master i: 151217: b29f7e5 151215: 914dfd5 v: v3
1 parent 58cf603 commit c0704aa

File tree

2 files changed

+42
-43
lines changed

2 files changed

+42
-43
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 4b80ff901cc1e61bdf16e6e103c5d7eb3524d2da
8+
refs/heads/try2: b9af043879a8b11f4fd5dc563291b66d7eabdd64
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/librustc/middle/expr_use_visitor.rs

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,9 @@ use util::ppaux::Repr;
2626

2727
///////////////////////////////////////////////////////////////////////////
2828
// The Delegate trait
29-
//
30-
// This trait defines the callbacks you can expect to receiver when
31-
// employing the ExprUseVisitor.
32-
33-
#[deriving(Eq)]
34-
pub enum LoanCause {
35-
ClosureCapture(Span),
36-
AddrOf,
37-
AutoRef,
38-
RefBinding,
39-
OverloadedOperator,
40-
ClosureInvocation
41-
}
42-
43-
#[deriving(Eq,Show)]
44-
pub enum ConsumeMode {
45-
Copy, // reference to x where x has a type that copies
46-
Move, // reference to x where x has a type that moves
47-
}
48-
49-
#[deriving(Eq,Show)]
50-
pub enum MutateMode {
51-
JustWrite, // x = y
52-
WriteAndRead, // x += y
53-
}
5429

30+
/// This trait defines the callbacks you can expect to receive when
31+
/// employing the ExprUseVisitor.
5532
pub trait Delegate {
5633
// The value found at `cmt` is either copied or moved, depending
5734
// on mode.
@@ -91,6 +68,28 @@ pub trait Delegate {
9168
mode: MutateMode);
9269
}
9370

71+
#[deriving(Eq)]
72+
pub enum LoanCause {
73+
ClosureCapture(Span),
74+
AddrOf,
75+
AutoRef,
76+
RefBinding,
77+
OverloadedOperator,
78+
ClosureInvocation
79+
}
80+
81+
#[deriving(Eq,Show)]
82+
pub enum ConsumeMode {
83+
Copy, // reference to x where x has a type that copies
84+
Move, // reference to x where x has a type that moves
85+
}
86+
87+
#[deriving(Eq,Show)]
88+
pub enum MutateMode {
89+
JustWrite, // x = y
90+
WriteAndRead, // x += y
91+
}
92+
9493
///////////////////////////////////////////////////////////////////////////
9594
// The ExprUseVisitor type
9695
//
@@ -112,7 +111,7 @@ pub struct ExprUseVisitor<'d,'t,TYPER> {
112111
//
113112
// Note that this macro appears similar to try!(), but, unlike try!(),
114113
// it does not propagate the error.
115-
macro_rules! ignore_err(
114+
macro_rules! return_if_err(
116115
($inp: expr) => (
117116
match $inp {
118117
Ok(v) => v,
@@ -174,7 +173,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
174173
fn consume_expr(&mut self, expr: &ast::Expr) {
175174
debug!("consume_expr(expr={})", expr.repr(self.tcx()));
176175

177-
let cmt = ignore_err!(self.mc.cat_expr(expr));
176+
let cmt = return_if_err!(self.mc.cat_expr(expr));
178177
self.delegate_consume(expr.id, expr.span, cmt);
179178

180179
match expr.node {
@@ -200,7 +199,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
200199
assignment_expr: &ast::Expr,
201200
expr: &ast::Expr,
202201
mode: MutateMode) {
203-
let cmt = ignore_err!(self.mc.cat_expr(expr));
202+
let cmt = return_if_err!(self.mc.cat_expr(expr));
204203
self.delegate.mutate(assignment_expr.id, assignment_expr.span, cmt, mode);
205204
self.walk_expr(expr);
206205
}
@@ -213,7 +212,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
213212
debug!("borrow_expr(expr={}, r={}, bk={})",
214213
expr.repr(self.tcx()), r.repr(self.tcx()), bk.repr(self.tcx()));
215214

216-
let cmt = ignore_err!(self.mc.cat_expr(expr));
215+
let cmt = return_if_err!(self.mc.cat_expr(expr));
217216
self.delegate.borrow(expr.id, expr.span, cmt, r, bk, cause);
218217

219218
// Note: Unlike consume, we can ignore ExprParen. cat_expr
@@ -284,7 +283,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
284283
// treatment of the discriminant is handled while
285284
// walking the arms:
286285
self.walk_expr(discr);
287-
let discr_cmt = ignore_err!(self.mc.cat_expr(discr));
286+
let discr_cmt = return_if_err!(self.mc.cat_expr(discr));
288287
for arm in arms.iter() {
289288
self.walk_arm(discr_cmt.clone(), arm);
290289
}
@@ -471,7 +470,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
471470
// "assigns", which is handled by
472471
// `walk_pat`:
473472
self.walk_expr(expr);
474-
let init_cmt = ignore_err!(self.mc.cat_expr(expr));
473+
let init_cmt = return_if_err!(self.mc.cat_expr(expr));
475474
self.walk_pat(init_cmt, local.pat);
476475
}
477476
}
@@ -508,7 +507,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
508507
None => { return; }
509508
};
510509

511-
let with_cmt = ignore_err!(self.mc.cat_expr(with_expr));
510+
let with_cmt = return_if_err!(self.mc.cat_expr(with_expr));
512511

513512
// Select just those fields of the `with`
514513
// expression that will actually be used
@@ -558,7 +557,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
558557
// input and stores it into the resulting rvalue.
559558
debug!("walk_adjustment(AutoAddEnv|AutoObject)");
560559
let cmt_unadjusted =
561-
ignore_err!(self.mc.cat_expr_unadjusted(expr));
560+
return_if_err!(self.mc.cat_expr_unadjusted(expr));
562561
self.delegate_consume(expr.id, expr.span, cmt_unadjusted);
563562
}
564563
ty::AutoDerefRef(ty::AutoDerefRef {
@@ -596,7 +595,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
596595
match self.typer.node_method_ty(deref_id) {
597596
None => {}
598597
Some(method_ty) => {
599-
let cmt = ignore_err!(self.mc.cat_expr_autoderefd(expr, i));
598+
let cmt = return_if_err!(self.mc.cat_expr_autoderefd(expr, i));
600599
let self_ty = *ty::ty_fn_args(method_ty).get(0);
601600
let (m, r) = match ty::get(self_ty).sty {
602601
ty::ty_rptr(r, ref m) => (m.mutbl, r),
@@ -618,7 +617,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
618617
autoderefs: uint) {
619618
debug!("walk_autoref expr={} autoderefs={}", expr.repr(self.tcx()), autoderefs);
620619

621-
let cmt_derefd = ignore_err!(
620+
let cmt_derefd = return_if_err!(
622621
self.mc.cat_expr_autoderefd(expr, autoderefs));
623622

624623
debug!("walk_autoref: cmt_derefd={}", cmt_derefd.repr(self.tcx()));
@@ -699,7 +698,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
699698
let tcx = typer.tcx();
700699
let def_map = &self.typer.tcx().def_map;
701700
let delegate = &mut self.delegate;
702-
ignore_err!(mc.cat_pattern(cmt_discr, pat, |mc, cmt_pat, pat| {
701+
return_if_err!(mc.cat_pattern(cmt_discr, pat, |mc, cmt_pat, pat| {
703702
if pat_util::pat_is_binding(def_map, pat) {
704703
let tcx = typer.tcx();
705704

@@ -810,9 +809,9 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
810809
freevars: &[freevars::freevar_entry]) {
811810
for freevar in freevars.iter() {
812811
let id_var = ast_util::def_id_of_def(freevar.def).node;
813-
let cmt_var = ignore_err!(self.cat_captured_var(closure_expr.id,
814-
closure_expr.span,
815-
freevar.def));
812+
let cmt_var = return_if_err!(self.cat_captured_var(closure_expr.id,
813+
closure_expr.span,
814+
freevar.def));
816815

817816
// Lookup the kind of borrow the callee requires, as
818817
// inferred by regionbk
@@ -834,9 +833,9 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> {
834833
closure_expr: &ast::Expr,
835834
freevars: &[freevars::freevar_entry]) {
836835
for freevar in freevars.iter() {
837-
let cmt_var = ignore_err!(self.cat_captured_var(closure_expr.id,
838-
closure_expr.span,
839-
freevar.def));
836+
let cmt_var = return_if_err!(self.cat_captured_var(closure_expr.id,
837+
closure_expr.span,
838+
freevar.def));
840839
self.delegate_consume(closure_expr.id, freevar.span, cmt_var);
841840
}
842841
}

0 commit comments

Comments
 (0)