EXPL_IMPL_CLONE_ON_COPY,
item.span,
"you are implementing `Clone` explicitly on a `Copy` type",
- |db| {
- db.span_note(item.span, "consider deriving `Clone` or removing `Copy`");
- });
+ |db| { db.span_note(item.span, "consider deriving `Clone` or removing `Copy`"); });
}
}
use rustc::lint::*;
use rustc::hir::*;
use syntax::ast;
-use utils::{is_adjusted, match_path, match_trait_method, match_type, remove_blocks, paths, snippet,
- span_help_and_lint, walk_ptrs_ty, walk_ptrs_ty_depth, iter_input_pats};
+use utils::{is_adjusted, match_path, match_trait_method, match_type, remove_blocks, paths, snippet, span_help_and_lint,
+ walk_ptrs_ty, walk_ptrs_ty_depth, iter_input_pats};
/// **What it does:** Checks for mapping `clone()` over an iterator.
///
SINGLE_CHAR_PATTERN,
arg.span,
"single-character string constant used as pattern",
- |db| {
- db.span_suggestion(expr.span, "try using a char instead:", hint);
- });
+ |db| { db.span_suggestion(expr.span, "try using a char instead:", hint); });
}
}
}
NEEDLESS_BOOL,
e.span,
"this if-then-else expression returns a bool literal",
- |db| {
- db.span_suggestion(e.span, "you can reduce it to", hint);
- });
+ |db| { db.span_suggestion(e.span, "you can reduce it to", hint); });
};
match (fetch_bool_block(then_block), fetch_bool_expr(else_expr)) {
(RetBool(true), RetBool(true)) |
BOOL_COMPARISON,
e.span,
"equality checks against true are unnecessary",
- |db| {
- db.span_suggestion(e.span, "try simplifying it as shown:", hint);
- });
+ |db| { db.span_suggestion(e.span, "try simplifying it as shown:", hint); });
},
(Other, Bool(true)) => {
let hint = snippet(cx, left_side.span, "..").into_owned();
BOOL_COMPARISON,
e.span,
"equality checks against true are unnecessary",
- |db| {
- db.span_suggestion(e.span, "try simplifying it as shown:", hint);
- });
+ |db| { db.span_suggestion(e.span, "try simplifying it as shown:", hint); });
},
(Bool(false), Other) => {
let hint = Sugg::hir(cx, right_side, "..");
return;
}
}
- span_lint_and_then(cx, UNNECESSARY_OPERATION, stmt.span, "statement can be reduced", |db| {
- db.span_suggestion(stmt.span, "replace it with", snippet);
- });
+ span_lint_and_then(cx,
+ UNNECESSARY_OPERATION,
+ stmt.span,
+ "statement can be reduced",
+ |db| { db.span_suggestion(stmt.span, "replace it with", snippet); });
}
}
}
impl EarlyLintPass for Precedence {
fn check_expr(&mut self, cx: &EarlyContext, expr: &Expr) {
if let ExprKind::Binary(Spanned { node: op, .. }, ref left, ref right) = expr.node {
- let span_sugg = |expr: &Expr, sugg| {
- span_lint_and_then(cx, PRECEDENCE, expr.span, "operator precedence can trip the unwary", |db| {
- db.span_suggestion(expr.span, "consider parenthesizing your expression", sugg);
- });
- };
+ let span_sugg =
+ |expr: &Expr, sugg| {
+ span_lint_and_then(cx, PRECEDENCE, expr.span, "operator precedence can trip the unwary", |db| {
+ db.span_suggestion(expr.span, "consider parenthesizing your expression", sugg);
+ });
+ };
if !is_bit_op(op) {
return;
&format!("`{}` is shadowed by itself in `{}`",
snippet(cx, pattern_span, "_"),
snippet(cx, expr.span, "..")),
- |db| {
- db.span_note(prev_span, "previous binding is here");
- });
+ |db| { db.span_note(prev_span, "previous binding is here"); });
} else if contains_self(cx, name, expr) {
span_lint_and_then(cx,
SHADOW_REUSE,
SHADOW_UNRELATED,
span,
&format!("`{}` shadows a previous declaration", snippet(cx, pattern_span, "_")),
- |db| {
- db.span_note(prev_span, "previous binding is here");
- });
+ |db| { db.span_note(prev_span, "previous binding is here"); });
}
}
fn needs_paren(op: &AssocOp, other: &AssocOp, dir: Associativity) -> bool {
other.precedence() < op.precedence() ||
(other.precedence() == op.precedence() &&
- ((op != other && associativity(op) != dir) || (op == other && associativity(op) != Associativity::Both))) ||
- is_shift(op) && is_arith(other) || is_shift(other) && is_arith(op)
+ ((op != other && associativity(op) != dir) ||
+ (op == other && associativity(op) != Associativity::Both))) || is_shift(op) && is_arith(other) ||
+ is_shift(other) && is_arith(op)
}
let lhs_paren = if let Sugg::BinOp(ref lop, _) = *lhs {
},
};
- span_lint_and_then(cx, USELESS_VEC, span, "useless use of `vec!`", |db| {
- db.span_suggestion(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); });
}
/// Return the item type of the vector (ie. the `T` in `Vec<T>`).