use rustc::hir::*;
use rustc::lint::*;
use rustc::ty;
-use utils::{differing_macro_contexts, match_type, paths, snippet, span_lint_and_then, walk_ptrs_ty, SpanlessEq};
-use utils::sugg::Sugg;
+use crate::utils::{differing_macro_contexts, match_type, paths, snippet, span_lint_and_then, walk_ptrs_ty, SpanlessEq};
+use crate::utils::sugg::Sugg;
/// **What it does:** Checks for manual swapping.
///
/// b = a;
/// a = t;
/// ```
-declare_lint! {
+declare_clippy_lint! {
pub MANUAL_SWAP,
- Warn,
+ complexity,
"manual swap of two variables"
}
/// a = b;
/// b = a;
/// ```
-declare_lint! {
+declare_clippy_lint! {
pub ALMOST_SWAPPED,
- Warn,
+ correctness,
"`foo = bar; bar = foo` sequence"
}
if let StmtDecl(ref tmp, _) = w[0].node;
if let DeclLocal(ref tmp) = tmp.node;
if let Some(ref tmp_init) = tmp.init;
- if let PatKind::Binding(_, _, ref tmp_name, None) = tmp.pat.node;
+ if let PatKind::Binding(_, _, ident, None) = tmp.pat.node;
// foo() = bar();
if let StmtSemi(ref first, _) = w[1].node;
if let ExprPath(QPath::Resolved(None, ref rhs2)) = rhs2.node;
if rhs2.segments.len() == 1;
- if tmp_name.node.as_str() == rhs2.segments[0].name.as_str();
+ if ident.as_str() == rhs2.segments[0].ident.as_str();
if SpanlessEq::new(cx).ignore_fn().eq_expr(tmp_init, lhs1);
if SpanlessEq::new(cx).ignore_fn().eq_expr(rhs1, lhs2);
then {
let lhs0 = Sugg::hir_opt(cx, lhs0);
let rhs0 = Sugg::hir_opt(cx, rhs0);
let (what, lhs, rhs) = if let (Some(first), Some(second)) = (lhs0, rhs0) {
- (format!(" `{}` and `{}`", first, second), first.mut_addr().to_string(), second.mut_addr().to_string())
+ (
+ format!(" `{}` and `{}`", first, second),
+ first.mut_addr().to_string(),
+ second.mut_addr().to_string(),
+ )
} else {
("".to_owned(), "".to_owned(), "".to_owned())
};