diff options
| author | Luqman Aden <laden@csclub.uwaterloo.ca> | 2013-10-23 03:50:22 -0400 |
|---|---|---|
| committer | Luqman Aden <laden@csclub.uwaterloo.ca> | 2013-10-25 01:50:57 -0400 |
| commit | 26488b7465860d64871ec4f5fc118f8854200b3d (patch) | |
| tree | 4a923b3d989ab5c7c0d958cec1e34575e76192a4 | |
| parent | f5e64aeb41ac1f567ba4261a66d4edb70b6a943f (diff) | |
| download | rust-26488b7465860d64871ec4f5fc118f8854200b3d.tar.gz rust-26488b7465860d64871ec4f5fc118f8854200b3d.zip | |
librustc: Don't emit unused mut lint twice.
| -rw-r--r-- | src/librustc/middle/lint.rs | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs index ccabfe28dd7..1ac14dfc4b1 100644 --- a/src/librustc/middle/lint.rs +++ b/src/librustc/middle/lint.rs @@ -813,32 +813,25 @@ fn check_unused_unsafe(cx: &Context, e: &ast::Expr) { } fn check_unused_mut_pat(cx: &Context, p: @ast::Pat) { - fn check_unused_mut_pat_inner(cx: &Context, p: @ast::Pat) { - let mut used = false; - let mut bindings = 0; - do pat_util::pat_bindings(cx.tcx.def_map, p) |_, id, _, _| { - used = used || cx.tcx.used_mut_nodes.contains(&id); - bindings += 1; - } - if !used { - let msg = if bindings == 1 { - "variable does not need to be mutable" - } else { - "variables do not need to be mutable" - }; - cx.span_lint(unused_mut, p.span, msg); - } - } - do ast_util::walk_pat(p) |pat| { - match pat.node { - ast::PatIdent(ast::BindByValue(ast::MutMutable), _, _) => { - check_unused_mut_pat_inner(cx, pat); + match p.node { + ast::PatIdent(ast::BindByValue(ast::MutMutable), _, _) => { + let mut used = false; + let mut bindings = 0; + do pat_util::pat_bindings(cx.tcx.def_map, p) |_, id, _, _| { + used = used || cx.tcx.used_mut_nodes.contains(&id); + bindings += 1; + } + if !used { + let msg = if bindings == 1 { + "variable does not need to be mutable" + } else { + "variables do not need to be mutable" + }; + cx.span_lint(unused_mut, p.span, msg); } - _ => {} } - - true - }; + _ => () + } } fn check_unnecessary_allocation(cx: &Context, e: &ast::Expr) { |
