use if_chain::if_chain;
use matches::matches;
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
-use rustc::hir::{Expr, ExprKind, Mutability, StmtKind, UnOp};
+use rustc::hir::{BorrowKind, Expr, ExprKind, Mutability, StmtKind, UnOp};
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
-use rustc::{declare_lint_pass, declare_tool_lint, ty};
+use rustc::{declare_lint_pass, ty};
+use rustc_session::declare_tool_lint;
use syntax_pos::Span;
declare_clippy_lint! {
if let ExprKind::Tup(ref conditions) = headerexpr.kind;
if conditions.len() == 2;
then {
- if let ExprKind::AddrOf(_, ref lhs) = conditions[0].kind {
+ if let ExprKind::AddrOf(BorrowKind::Ref, _, ref lhs) = conditions[0].kind {
let mut visitor = MutArgVisitor::new(cx);
visitor.visit_expr(lhs);
if let Some(span) = visitor.expr_span() {
return Some(span);
}
}
- if let ExprKind::AddrOf(_, ref rhs) = conditions[1].kind {
+ if let ExprKind::AddrOf(BorrowKind::Ref, _, ref rhs) = conditions[1].kind {
let mut visitor = MutArgVisitor::new(cx);
visitor.visit_expr(rhs);
if let Some(span) = visitor.expr_span() {
impl<'a, 'tcx> Visitor<'tcx> for MutArgVisitor<'a, 'tcx> {
fn visit_expr(&mut self, expr: &'tcx Expr) {
match expr.kind {
- ExprKind::AddrOf(Mutability::Mutable, _) => {
+ ExprKind::AddrOf(BorrowKind::Ref, Mutability::Mutable, _) => {
self.found = true;
return;
},