From 6dd608e53e52d91d01677bc5f0a2eead4757e406 Mon Sep 17 00:00:00 2001 From: mcarton Date: Fri, 20 May 2016 19:18:32 +0200 Subject: [PATCH] Rustup to *1.10.0-nightly (764ef92ae 2016-05-19)* --- src/methods.rs | 2 +- src/vec.rs | 12 +++++++----- tests/compile-fail/methods.rs | 2 +- tests/compile-fail/mut_mut.rs | 11 ++++++----- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/methods.rs b/src/methods.rs index 14bc74d467f..f9f557e7a9a 100644 --- a/src/methods.rs +++ b/src/methods.rs @@ -511,7 +511,7 @@ fn check_general_case(cx: &LateContext, name: &str, fun: &hir::Expr, self_expr: return; } } - // (path, fn_has_argument, methods) + // (path, fn_has_argument, methods, suffix) let know_types: &[(&[_], _, &[_], _)] = &[(&paths::BTREEMAP_ENTRY, false, &["or_insert"], "with"), (&paths::HASHMAP_ENTRY, false, &["or_insert"], "with"), (&paths::OPTION, diff --git a/src/vec.rs b/src/vec.rs index 63b9952c3c8..e62a8f9c459 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -38,17 +38,19 @@ fn check_expr(&mut self, cx: &LateContext, expr: &Expr) { let TypeVariants::TySlice(..) = ty.ty.sty, let ExprAddrOf(_, ref addressee) = expr.node, ], { - check_vec_macro(cx, expr, addressee); + check_vec_macro(cx, addressee, expr.span); }} // search for `for _ in vec![…]` if let Some((_, arg, _)) = recover_for_loop(expr) { - check_vec_macro(cx, arg, arg); + // report the error around the `vec!` not inside `:` + let span = cx.sess().codemap().source_callsite(arg.span); + check_vec_macro(cx, arg, span); } } } -fn check_vec_macro(cx: &LateContext, expr: &Expr, vec: &Expr) { +fn check_vec_macro(cx: &LateContext, vec: &Expr, span: Span) { if let Some(vec_args) = unexpand_vec(cx, vec) { let snippet = match vec_args { VecArgs::Repeat(elem, len) => { @@ -69,8 +71,8 @@ fn check_vec_macro(cx: &LateContext, expr: &Expr, vec: &Expr) { } }; - span_lint_and_then(cx, USELESS_VEC, expr.span, "useless use of `vec!`", |db| { - db.span_suggestion(expr.span, "you can use a slice directly", snippet); + span_lint_and_then(cx, USELESS_VEC, span, "useless use of `vec!`", |db| { + db.span_suggestion(span, "you can use a slice directly", snippet); }); } } diff --git a/tests/compile-fail/methods.rs b/tests/compile-fail/methods.rs index 88a1e7c4cf2..9753c021372 100644 --- a/tests/compile-fail/methods.rs +++ b/tests/compile-fail/methods.rs @@ -288,7 +288,7 @@ const fn make_const(i: i32) -> i32 { i } with_vec.unwrap_or(vec![]); //~^ERROR use of `unwrap_or` //~|HELP try this - //~|SUGGESTION with_vec.unwrap_or_else(|| vec![]); + // FIXME #944: ~|SUGGESTION with_vec.unwrap_or_else(|| vec![]); let without_default = Some(Foo); without_default.unwrap_or(Foo::new()); diff --git a/tests/compile-fail/mut_mut.rs b/tests/compile-fail/mut_mut.rs index 865574eaec0..8d9bceb0d0d 100644 --- a/tests/compile-fail/mut_mut.rs +++ b/tests/compile-fail/mut_mut.rs @@ -18,6 +18,7 @@ fn less_fun(x : *mut *mut u32) { macro_rules! mut_ptr { ($p:expr) => { &mut $p } + //~^ ERROR generally you want to avoid `&mut &mut } #[deny(mut_mut)] @@ -30,12 +31,12 @@ fn main() { if fun(x) { let y : &mut &mut &mut u32 = &mut &mut &mut 2; - //~^ ERROR generally you want to avoid `&mut &mut - //~^^ ERROR generally you want to avoid `&mut &mut - //~^^^ ERROR generally you want to avoid `&mut &mut - //~^^^^ ERROR generally you want to avoid `&mut &mut + //~^ ERROR generally you want to avoid `&mut &mut + //~| ERROR generally you want to avoid `&mut &mut + //~| ERROR generally you want to avoid `&mut &mut + //~| ERROR generally you want to avoid `&mut &mut ***y + **x; } - let mut z = mut_ptr!(&mut 3u32); //~ERROR generally you want to avoid `&mut &mut + let mut z = mut_ptr!(&mut 3u32); //~ NOTE in this expansion of mut_ptr! } -- 2.44.0