From f63fad5d60f451013a6787fec4db12b77cab018c Mon Sep 17 00:00:00 2001 From: Cameron Zwarich Date: Fri, 6 Jun 2014 11:59:32 -0700 Subject: [PATCH] Add an Init mode to MutateMode. This isn't necessary right now, but check_loans needs to be able to distinguish between initialization and writes in the ExprUseVisitor mutate callback. --- src/librustc/middle/borrowck/move_data.rs | 2 +- src/librustc/middle/expr_use_visitor.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/librustc/middle/borrowck/move_data.rs b/src/librustc/middle/borrowck/move_data.rs index 5a4ec36befcc..1c72c6d67024 100644 --- a/src/librustc/middle/borrowck/move_data.rs +++ b/src/librustc/middle/borrowck/move_data.rs @@ -356,7 +356,7 @@ impl MoveData { let path_index = self.move_path(tcx, lp.clone()); match mode { - euv::JustWrite => { + euv::Init | euv::JustWrite => { self.assignee_ids.borrow_mut().insert(assignee_id); } euv::WriteAndRead => { } diff --git a/src/librustc/middle/expr_use_visitor.rs b/src/librustc/middle/expr_use_visitor.rs index 467cd726a65a..f806fcb1f7ed 100644 --- a/src/librustc/middle/expr_use_visitor.rs +++ b/src/librustc/middle/expr_use_visitor.rs @@ -86,6 +86,7 @@ pub enum ConsumeMode { #[deriving(PartialEq,Show)] pub enum MutateMode { + Init, JustWrite, // x = y WriteAndRead, // x += y } @@ -712,7 +713,7 @@ impl<'d,'t,TYPER:mc::Typer> ExprUseVisitor<'d,'t,TYPER> { let def = def_map.borrow().get_copy(&pat.id); match mc.cat_def(pat.id, pat.span, pat_ty, def) { Ok(binding_cmt) => { - delegate.mutate(pat.id, pat.span, binding_cmt, JustWrite); + delegate.mutate(pat.id, pat.span, binding_cmt, Init); } Err(_) => { } }