]> git.lizzy.rs Git - rust.git/blobdiff - clippy_lints/src/reference.rs
Auto merge of #4809 - iankronquist:patch-1, r=flip1995
[rust.git] / clippy_lints / src / reference.rs
index 35e214faae804efc5f43b26eaa6c04d1aa178f77..c575ef67f2a9f5f3847b23bb72a1dcd3999a8aca 100644 (file)
@@ -1,8 +1,8 @@
-use crate::utils::{snippet_with_applicability, span_lint_and_sugg};
+use crate::utils::{in_macro, snippet_with_applicability, span_lint_and_sugg};
 use if_chain::if_chain;
-use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
-use rustc::{declare_lint_pass, declare_tool_lint};
 use rustc_errors::Applicability;
+use rustc_lint::{EarlyContext, EarlyLintPass};
+use rustc_session::{declare_lint_pass, declare_tool_lint};
 use syntax::ast::{Expr, ExprKind, UnOp};
 
 declare_clippy_lint! {
@@ -27,7 +27,7 @@
 declare_lint_pass!(DerefAddrOf => [DEREF_ADDROF]);
 
 fn without_parens(mut e: &Expr) -> &Expr {
-    while let ExprKind::Paren(ref child_e) = e.node {
+    while let ExprKind::Paren(ref child_e) = e.kind {
         e = child_e;
     }
     e
@@ -36,8 +36,9 @@ fn without_parens(mut e: &Expr) -> &Expr {
 impl EarlyLintPass for DerefAddrOf {
     fn check_expr(&mut self, cx: &EarlyContext<'_>, e: &Expr) {
         if_chain! {
-            if let ExprKind::Unary(UnOp::Deref, ref deref_target) = e.node;
-            if let ExprKind::AddrOf(_, ref addrof_target) = without_parens(deref_target).node;
+            if let ExprKind::Unary(UnOp::Deref, ref deref_target) = e.kind;
+            if let ExprKind::AddrOf(_, _, ref addrof_target) = without_parens(deref_target).kind;
+            if !in_macro(addrof_target.span);
             then {
                 let mut applicability = Applicability::MachineApplicable;
                 span_lint_and_sugg(
@@ -77,9 +78,9 @@ fn check_expr(&mut self, cx: &EarlyContext<'_>, e: &Expr) {
 impl EarlyLintPass for RefInDeref {
     fn check_expr(&mut self, cx: &EarlyContext<'_>, e: &Expr) {
         if_chain! {
-            if let ExprKind::Field(ref object, _) = e.node;
-            if let ExprKind::Paren(ref parened) = object.node;
-            if let ExprKind::AddrOf(_, ref inner) = parened.node;
+            if let ExprKind::Field(ref object, _) = e.kind;
+            if let ExprKind::Paren(ref parened) = object.kind;
+            if let ExprKind::AddrOf(_, _, ref inner) = parened.kind;
             then {
                 let mut applicability = Applicability::MachineApplicable;
                 span_lint_and_sugg(