Rustup to rust-lang/rust#67886
This commit is contained in:
parent
732825dcff
commit
2f2eaf8b7e
140 changed files with 231 additions and 218 deletions
|
@ -1,7 +1,7 @@
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::symbol;
|
use rustc_span::symbol;
|
||||||
use std::f64::consts as f64;
|
use std::f64::consts as f64;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::consts::constant_simple;
|
use crate::consts::constant_simple;
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ use crate::utils::paths;
|
||||||
use crate::utils::{is_direct_expn_of, is_expn_of, match_function_call, snippet_opt, span_help_and_lint};
|
use crate::utils::{is_direct_expn_of, is_expn_of, match_function_call, snippet_opt, span_help_and_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{
|
use crate::utils::{
|
||||||
|
@ -232,7 +232,7 @@ fn lint_misrefactored_assign_op(
|
||||||
|
|
||||||
#[must_use]
|
#[must_use]
|
||||||
fn is_commutative(op: hir::BinOpKind) -> bool {
|
fn is_commutative(op: hir::BinOpKind) -> bool {
|
||||||
use rustc::hir::BinOpKind::*;
|
use rustc_hir::BinOpKind::*;
|
||||||
match op {
|
match op {
|
||||||
Add | Mul | And | Or | BitXor | BitAnd | BitOr | Eq | Ne => true,
|
Add | Mul | And | Or | BitXor | BitAnd | BitOr | Eq | Ne => true,
|
||||||
Sub | Div | Rem | Shl | Shr | Lt | Le | Ge | Gt => false,
|
Sub | Div | Rem | Shl | Shr | Lt | Le | Ge | Gt => false,
|
||||||
|
|
|
@ -7,13 +7,13 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{
|
use rustc::lint::{
|
||||||
in_external_macro, CheckLintNameResult, EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintArray,
|
in_external_macro, CheckLintNameResult, EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintArray,
|
||||||
LintContext, LintPass,
|
LintContext, LintPass,
|
||||||
};
|
};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
|
|
|
@ -2,10 +2,10 @@ use crate::consts::{constant, Constant};
|
||||||
use crate::utils::sugg::Sugg;
|
use crate::utils::sugg::Sugg;
|
||||||
use crate::utils::{span_lint, span_lint_and_then};
|
use crate::utils::{span_lint, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -2,8 +2,8 @@ use crate::utils::*;
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
@ -78,7 +78,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for BlockInIfCondition {
|
||||||
}
|
}
|
||||||
if let Some((check, then, _)) = higher::if_block(&expr) {
|
if let Some((check, then, _)) = higher::if_block(&expr) {
|
||||||
if let ExprKind::Block(block, _) = &check.kind {
|
if let ExprKind::Block(block, _) = &check.kind {
|
||||||
if block.rules == DefaultBlock {
|
if block.rules == BlockCheckMode::DefaultBlock {
|
||||||
if block.stmts.is_empty() {
|
if block.stmts.is_empty() {
|
||||||
if let Some(ex) = &block.expr {
|
if let Some(ex) = &block.expr {
|
||||||
// don't dig into the expression here, just suggest that they remove
|
// don't dig into the expression here, just suggest that they remove
|
||||||
|
|
|
@ -4,10 +4,11 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
|
use rustc::hir::intravisit;
|
||||||
use rustc::hir::intravisit::*;
|
use rustc::hir::intravisit::*;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
@ -109,7 +110,7 @@ impl<'a, 'tcx, 'v> Hir2Qmm<'a, 'tcx, 'v> {
|
||||||
// prevent folding of `cfg!` macros and the like
|
// prevent folding of `cfg!` macros and the like
|
||||||
if !e.span.from_expansion() {
|
if !e.span.from_expansion() {
|
||||||
match &e.kind {
|
match &e.kind {
|
||||||
ExprKind::Unary(UnNot, inner) => return Ok(Bool::Not(box self.run(inner)?)),
|
ExprKind::Unary(UnOp::UnNot, inner) => return Ok(Bool::Not(box self.run(inner)?)),
|
||||||
ExprKind::Binary(binop, lhs, rhs) => match &binop.node {
|
ExprKind::Binary(binop, lhs, rhs) => match &binop.node {
|
||||||
BinOpKind::Or => return Ok(Bool::Or(self.extract(BinOpKind::Or, &[lhs, rhs], Vec::new())?)),
|
BinOpKind::Or => return Ok(Bool::Or(self.extract(BinOpKind::Or, &[lhs, rhs], Vec::new())?)),
|
||||||
BinOpKind::And => return Ok(Bool::And(self.extract(BinOpKind::And, &[lhs, rhs], Vec::new())?)),
|
BinOpKind::And => return Ok(Bool::And(self.extract(BinOpKind::And, &[lhs, rhs], Vec::new())?)),
|
||||||
|
@ -445,7 +446,7 @@ impl<'a, 'tcx> Visitor<'tcx> for NonminimalBoolVisitor<'a, 'tcx> {
|
||||||
ExprKind::Binary(binop, _, _) if binop.node == BinOpKind::Or || binop.node == BinOpKind::And => {
|
ExprKind::Binary(binop, _, _) if binop.node == BinOpKind::Or || binop.node == BinOpKind::And => {
|
||||||
self.bool_expr(e)
|
self.bool_expr(e)
|
||||||
},
|
},
|
||||||
ExprKind::Unary(UnNot, inner) => {
|
ExprKind::Unary(UnOp::UnNot, inner) => {
|
||||||
if self.cx.tables.node_types()[inner.hir_id].is_bool() {
|
if self.cx.tables.node_types()[inner.hir_id].is_bool() {
|
||||||
self.bool_expr(e);
|
self.bool_expr(e);
|
||||||
} else {
|
} else {
|
||||||
|
@ -471,7 +472,7 @@ struct NotSimplificationVisitor<'a, 'tcx> {
|
||||||
|
|
||||||
impl<'a, 'tcx> Visitor<'tcx> for NotSimplificationVisitor<'a, 'tcx> {
|
impl<'a, 'tcx> Visitor<'tcx> for NotSimplificationVisitor<'a, 'tcx> {
|
||||||
fn visit_expr(&mut self, expr: &'tcx Expr<'_>) {
|
fn visit_expr(&mut self, expr: &'tcx Expr<'_>) {
|
||||||
if let ExprKind::Unary(UnNot, inner) = &expr.kind {
|
if let ExprKind::Unary(UnOp::UnNot, inner) = &expr.kind {
|
||||||
if let Some(suggestion) = simplify_not(self.cx, inner) {
|
if let Some(suggestion) = simplify_not(self.cx, inner) {
|
||||||
span_lint_and_sugg(
|
span_lint_and_sugg(
|
||||||
self.cx,
|
self.cx,
|
||||||
|
|
|
@ -4,10 +4,10 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast::{Name, UintTy};
|
use syntax::ast::{Name, UintTy};
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
//! calculate cognitive complexity and warn about overly complex functions
|
//! calculate cognitive complexity and warn about overly complex functions
|
||||||
|
|
||||||
use rustc::hir::intravisit::{walk_expr, FnKind, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, FnKind, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_span::BytePos;
|
use rustc_span::BytePos;
|
||||||
|
|
|
@ -2,8 +2,8 @@ use crate::utils::{
|
||||||
get_trait_def_id, if_sequence, implements_trait, parent_node_is_if_expr, paths, span_help_and_lint, SpanlessEq,
|
get_trait_def_id, if_sequence, implements_trait, parent_node_is_if_expr, paths, span_help_and_lint, SpanlessEq,
|
||||||
};
|
};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
use crate::utils::{clip, higher, sext, unsext};
|
use crate::utils::{clip, higher, sext, unsext};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::LateContext;
|
use rustc::lint::LateContext;
|
||||||
use rustc::ty::subst::{Subst, SubstsRef};
|
use rustc::ty::subst::{Subst, SubstsRef};
|
||||||
use rustc::ty::{self, Ty, TyCtxt};
|
use rustc::ty::{self, Ty, TyCtxt};
|
||||||
use rustc::{bug, span_bug};
|
use rustc::{bug, span_bug};
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use std::cmp::Ordering::{self, Equal};
|
use std::cmp::Ordering::{self, Equal};
|
||||||
use std::cmp::PartialOrd;
|
use std::cmp::PartialOrd;
|
||||||
|
@ -240,9 +240,9 @@ impl<'c, 'cc> ConstEvalLateContext<'c, 'cc> {
|
||||||
self.expr(value).map(|v| Constant::Repeat(Box::new(v), n))
|
self.expr(value).map(|v| Constant::Repeat(Box::new(v), n))
|
||||||
},
|
},
|
||||||
ExprKind::Unary(op, ref operand) => self.expr(operand).and_then(|o| match op {
|
ExprKind::Unary(op, ref operand) => self.expr(operand).and_then(|o| match op {
|
||||||
UnNot => self.constant_not(&o, self.tables.expr_ty(e)),
|
UnOp::UnNot => self.constant_not(&o, self.tables.expr_ty(e)),
|
||||||
UnNeg => self.constant_negate(&o, self.tables.expr_ty(e)),
|
UnOp::UnNeg => self.constant_negate(&o, self.tables.expr_ty(e)),
|
||||||
UnDeref => Some(o),
|
UnOp::UnDeref => Some(o),
|
||||||
}),
|
}),
|
||||||
ExprKind::Binary(op, ref left, ref right) => self.binop(op, left, right),
|
ExprKind::Binary(op, ref left, ref right) => self.binop(op, left, right),
|
||||||
ExprKind::Call(ref callee, ref args) => {
|
ExprKind::Call(ref callee, ref args) => {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use crate::utils::{get_parent_expr, higher, if_sequence, same_tys, snippet, span_lint_and_then, span_note_and_lint};
|
use crate::utils::{get_parent_expr, higher, if_sequence, same_tys, snippet, span_lint_and_then, span_note_and_lint};
|
||||||
use crate::utils::{SpanlessEq, SpanlessHash};
|
use crate::utils::{SpanlessEq, SpanlessHash};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::Ty;
|
use rustc::ty::Ty;
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use std::collections::hash_map::Entry;
|
use std::collections::hash_map::Entry;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::utils::{is_copy, match_path, paths, span_note_and_lint};
|
use crate::utils::{is_copy, match_path, paths, span_note_and_lint};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{Item, ItemKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::{Item, ItemKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{any_parent_is_automatically_derived, match_def_path, paths, span_lint_and_sugg};
|
use crate::utils::{any_parent_is_automatically_derived, match_def_path, paths, span_lint_and_sugg};
|
||||||
|
|
|
@ -2,9 +2,9 @@ use crate::utils::paths;
|
||||||
use crate::utils::{is_automatically_derived, is_copy, match_path, span_lint_and_then};
|
use crate::utils::{is_automatically_derived, is_copy, match_path, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{match_type, paths, return_ty, span_lint};
|
use crate::utils::{match_type, paths, return_ty, span_lint};
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::{BytePos, MultiSpan, Span};
|
use rustc_span::source_map::{BytePos, MultiSpan, Span};
|
||||||
use rustc_span::Pos;
|
use rustc_span::Pos;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
//! Lint on unnecessary double comparisons. Some examples:
|
//! Lint on unnecessary double comparisons. Some examples:
|
||||||
|
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{match_def_path, paths, span_lint};
|
use crate::utils::{match_def_path, paths, span_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{is_copy, match_def_path, paths, qpath_res, span_note_and_lint};
|
use crate::utils::{is_copy, match_def_path, paths, qpath_res, span_note_and_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
use crate::utils::span_lint_and_then;
|
use crate::utils::span_lint_and_then;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -4,9 +4,9 @@ use crate::utils::{snippet_with_applicability, span_lint_and_then, walk_ptrs_ty}
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
use crate::consts::{miri_to_const, Constant};
|
use crate::consts::{miri_to_const, Constant};
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc::ty::util::IntTypeExt;
|
use rustc::ty::util::IntTypeExt;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
use syntax::ast::{IntTy, UintTy};
|
use syntax::ast::{IntTy, UintTy};
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{implements_trait, is_copy, multispan_sugg, snippet, span_lint, span_lint_and_then, SpanlessEq};
|
use crate::utils::{implements_trait, is_copy, multispan_sugg, snippet, span_lint, span_lint_and_then, SpanlessEq};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use rustc::hir::intravisit as visit;
|
use rustc::hir::intravisit as visit;
|
||||||
use rustc::hir::HirIdSet;
|
|
||||||
use rustc::hir::{self, *};
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::layout::LayoutOf;
|
use rustc::ty::layout::LayoutOf;
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
use rustc_hir::HirIdSet;
|
||||||
|
use rustc_hir::{self, *};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_typeck::expr_use_visitor::*;
|
use rustc_typeck::expr_use_visitor::*;
|
||||||
|
@ -93,7 +93,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for BoxedLocal {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Replace with Map::is_argument(..) when it's fixed
|
// TODO: Replace with Map::is_argument(..) when it's fixed
|
||||||
fn is_argument(map: &hir::map::Map<'_>, id: HirId) -> bool {
|
fn is_argument(map: &rustc::hir::map::Map<'_>, id: HirId) -> bool {
|
||||||
match map.find(id) {
|
match map.find(id) {
|
||||||
Some(Node::Binding(_)) => (),
|
Some(Node::Binding(_)) => (),
|
||||||
_ => return false,
|
_ => return false,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{
|
use crate::utils::{
|
||||||
|
|
|
@ -2,9 +2,9 @@ use crate::utils::{get_parent_expr, span_lint, span_note_and_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -2,10 +2,10 @@ use crate::utils::span_lint_and_sugg;
|
||||||
use crate::utils::sugg::format_numeric_literal;
|
use crate::utils::sugg::format_numeric_literal;
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
use std::f32;
|
use std::f32;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{is_entrypoint_fn, match_def_path, paths, qpath_res, span_lint};
|
use crate::utils::{is_entrypoint_fn, match_def_path, paths, qpath_res, span_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{Expr, ExprKind, Item, ItemKind, Node};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::{Expr, ExprKind, Item, ItemKind, Node};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{is_expn_of, match_function_call, paths, span_lint, span_lint_and_sugg};
|
use crate::utils::{is_expn_of, match_function_call, paths, span_lint, span_lint_and_sugg};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@ use crate::utils::paths::{BEGIN_PANIC, BEGIN_PANIC_FMT, FROM_TRAIT, OPTION, RESU
|
||||||
use crate::utils::{is_expn_of, match_def_path, method_chain_args, span_lint_and_then, walk_ptrs_ty};
|
use crate::utils::{is_expn_of, match_def_path, method_chain_args, span_lint_and_then, walk_ptrs_ty};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for FallibleImplFrom {
|
||||||
|
|
||||||
fn lint_impl_body<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, impl_span: Span, impl_items: &[hir::ImplItemRef<'_>]) {
|
fn lint_impl_body<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, impl_span: Span, impl_items: &[hir::ImplItemRef<'_>]) {
|
||||||
use rustc::hir::intravisit::{self, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{self, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::*;
|
use rustc_hir::*;
|
||||||
|
|
||||||
struct FindPanicUnwrap<'a, 'tcx> {
|
struct FindPanicUnwrap<'a, 'tcx> {
|
||||||
lcx: &'a LateContext<'a, 'tcx>,
|
lcx: &'a LateContext<'a, 'tcx>,
|
||||||
|
|
|
@ -5,9 +5,9 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
|
@ -4,12 +4,14 @@ use crate::utils::{
|
||||||
type_is_unsafe_function,
|
type_is_unsafe_function,
|
||||||
};
|
};
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::hir::{self, def::Res, def_id::DefId, intravisit};
|
use rustc::hir::intravisit;
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
|
use rustc_hir::{def::Res, def_id::DefId};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_target::spec::abi::Abi;
|
use rustc_target::spec::abi::Abi;
|
||||||
|
@ -199,16 +201,16 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Functions {
|
||||||
};
|
};
|
||||||
|
|
||||||
let unsafety = match kind {
|
let unsafety = match kind {
|
||||||
hir::intravisit::FnKind::ItemFn(_, _, hir::FnHeader { unsafety, .. }, _, _) => unsafety,
|
intravisit::FnKind::ItemFn(_, _, hir::FnHeader { unsafety, .. }, _, _) => unsafety,
|
||||||
hir::intravisit::FnKind::Method(_, sig, _, _) => sig.header.unsafety,
|
intravisit::FnKind::Method(_, sig, _, _) => sig.header.unsafety,
|
||||||
hir::intravisit::FnKind::Closure(_) => return,
|
intravisit::FnKind::Closure(_) => return,
|
||||||
};
|
};
|
||||||
|
|
||||||
// don't warn for implementations, it's not their fault
|
// don't warn for implementations, it's not their fault
|
||||||
if !is_impl {
|
if !is_impl {
|
||||||
// don't lint extern functions decls, it's not their fault either
|
// don't lint extern functions decls, it's not their fault either
|
||||||
match kind {
|
match kind {
|
||||||
hir::intravisit::FnKind::Method(
|
intravisit::FnKind::Method(
|
||||||
_,
|
_,
|
||||||
&hir::FnSig {
|
&hir::FnSig {
|
||||||
header: hir::FnHeader { abi: Abi::Rust, .. },
|
header: hir::FnHeader { abi: Abi::Rust, .. },
|
||||||
|
@ -217,7 +219,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Functions {
|
||||||
_,
|
_,
|
||||||
_,
|
_,
|
||||||
)
|
)
|
||||||
| hir::intravisit::FnKind::ItemFn(_, _, hir::FnHeader { abi: Abi::Rust, .. }, _, _) => {
|
| intravisit::FnKind::ItemFn(_, _, hir::FnHeader { abi: Abi::Rust, .. }, _, _) => {
|
||||||
self.check_arg_number(cx, decl, span.with_hi(decl.output.span().hi()))
|
self.check_arg_number(cx, decl, span.with_hi(decl.output.span().hi()))
|
||||||
},
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
|
@ -397,7 +399,7 @@ impl<'a, 'tcx> Functions {
|
||||||
tables,
|
tables,
|
||||||
};
|
};
|
||||||
|
|
||||||
hir::intravisit::walk_expr(&mut v, expr);
|
intravisit::walk_expr(&mut v, expr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -557,7 +559,7 @@ impl<'a, 'tcx> intravisit::Visitor<'tcx> for DerefVisitor<'a, 'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
hir::ExprKind::Unary(hir::UnDeref, ref ptr) => self.check_arg(ptr),
|
hir::ExprKind::Unary(hir::UnOp::UnDeref, ref ptr) => self.check_arg(ptr),
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
use crate::utils::{is_type_diagnostic_item, snippet_with_applicability, span_lint_and_sugg, SpanlessEq};
|
use crate::utils::{is_type_diagnostic_item, snippet_with_applicability, span_lint_and_sugg, SpanlessEq};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{BinOpKind, Expr, ExprKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{BinOpKind, Expr, ExprKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use crate::utils::{
|
use crate::utils::{
|
||||||
match_def_path, match_trait_method, paths, same_tys, snippet, snippet_with_macro_callsite, span_lint_and_then,
|
match_def_path, match_trait_method, paths, same_tys, snippet, snippet_with_macro_callsite, span_lint_and_then,
|
||||||
};
|
};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,11 @@ use crate::utils::{
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::{
|
use rustc::{
|
||||||
declare_lint_pass,
|
declare_lint_pass,
|
||||||
hir::{intravisit::FnKind, Body, Expr, ExprKind, FnDecl, HirId, MatchSource, StmtKind},
|
hir::intravisit::FnKind,
|
||||||
lint::{LateContext, LateLintPass, LintArray, LintPass},
|
lint::{LateContext, LateLintPass, LintArray, LintPass},
|
||||||
};
|
};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{Body, Expr, ExprKind, FnDecl, HirId, MatchSource, StmtKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ use crate::utils;
|
||||||
use crate::utils::higher;
|
use crate::utils::higher;
|
||||||
use crate::utils::higher::Range;
|
use crate::utils::higher::Range;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast::RangeLimits;
|
use syntax::ast::RangeLimits;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use super::utils::{get_arg_name, match_var, remove_blocks, snippet_with_applicability, span_lint_and_sugg};
|
use super::utils::{get_arg_name, match_var, remove_blocks, snippet_with_applicability, span_lint_and_sugg};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{get_trait_def_id, higher, implements_trait, match_qpath, match_type, paths, span_lint};
|
use crate::utils::{get_trait_def_id, higher, implements_trait, match_qpath, match_type, paths, span_lint};
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
//! lint on inherent implementations
|
//! lint on inherent implementations
|
||||||
|
|
||||||
use crate::utils::{in_macro, span_lint_and_then};
|
use crate::utils::{in_macro, span_lint_and_then};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{ImplItem, ImplItemKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::{ImplItem, ImplItemKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{
|
use crate::utils::{
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
use crate::utils::span_lint_and_then;
|
use crate::utils::span_lint_and_then;
|
||||||
use crate::utils::sugg::DiagnosticBuilderExt;
|
use crate::utils::sugg::DiagnosticBuilderExt;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast::{Attribute, Name};
|
use syntax::ast::{Attribute, Name};
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::span_help_and_lint;
|
use crate::utils::span_help_and_lint;
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
//! lint when there is a large size difference between variants on an enum
|
//! lint when there is a large size difference between variants on an enum
|
||||||
|
|
||||||
use crate::utils::{snippet_opt, span_lint_and_then};
|
use crate::utils::{snippet_opt, span_lint_and_then};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::layout::LayoutOf;
|
use rustc::ty::layout::LayoutOf;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::mir::interpret::ConstValue;
|
use rustc::mir::interpret::ConstValue;
|
||||||
use rustc::ty::{self, ConstKind};
|
use rustc::ty::{self, ConstKind};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
use crate::utils::{get_item_name, snippet_with_applicability, span_lint, span_lint_and_sugg, walk_ptrs_ty};
|
use crate::utils::{get_item_name, snippet_with_applicability, span_lint, span_lint_and_sugg, walk_ptrs_ty};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def_id::DefId;
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::def_id::DefId;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::{Span, Spanned};
|
use rustc_span::source_map::{Span, Spanned};
|
||||||
use syntax::ast::{LitKind, Name};
|
use syntax::ast::{LitKind, Name};
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
use crate::utils::{higher, qpath_res, snippet, span_lint_and_then};
|
use crate::utils::{higher, qpath_res, snippet, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
use rustc::hir::intravisit;
|
||||||
use rustc::hir::def::Res;
|
|
||||||
use rustc::hir::BindingAnnotation;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
|
use rustc_hir::def::Res;
|
||||||
|
use rustc_hir::BindingAnnotation;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
@ -142,7 +143,7 @@ struct UsedVisitor<'a, 'tcx> {
|
||||||
used: bool,
|
used: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'tcx> hir::intravisit::Visitor<'tcx> for UsedVisitor<'a, 'tcx> {
|
impl<'a, 'tcx> intravisit::Visitor<'tcx> for UsedVisitor<'a, 'tcx> {
|
||||||
fn visit_expr(&mut self, expr: &'tcx hir::Expr<'_>) {
|
fn visit_expr(&mut self, expr: &'tcx hir::Expr<'_>) {
|
||||||
if_chain! {
|
if_chain! {
|
||||||
if let hir::ExprKind::Path(ref qpath) = expr.kind;
|
if let hir::ExprKind::Path(ref qpath) = expr.kind;
|
||||||
|
@ -153,10 +154,10 @@ impl<'a, 'tcx> hir::intravisit::Visitor<'tcx> for UsedVisitor<'a, 'tcx> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hir::intravisit::walk_expr(self, expr);
|
intravisit::walk_expr(self, expr);
|
||||||
}
|
}
|
||||||
fn nested_visit_map<'this>(&'this mut self) -> hir::intravisit::NestedVisitorMap<'this, 'tcx> {
|
fn nested_visit_map<'this>(&'this mut self) -> intravisit::NestedVisitorMap<'this, 'tcx> {
|
||||||
hir::intravisit::NestedVisitorMap::None
|
intravisit::NestedVisitorMap::None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +182,7 @@ fn check_assign<'a, 'tcx>(
|
||||||
};
|
};
|
||||||
|
|
||||||
for s in block.stmts.iter().take(block.stmts.len()-1) {
|
for s in block.stmts.iter().take(block.stmts.len()-1) {
|
||||||
hir::intravisit::walk_stmt(&mut v, s);
|
intravisit::walk_stmt(&mut v, s);
|
||||||
|
|
||||||
if v.used {
|
if v.used {
|
||||||
return None;
|
return None;
|
||||||
|
@ -197,6 +198,6 @@ fn check_assign<'a, 'tcx>(
|
||||||
|
|
||||||
fn used_in_expr<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, id: hir::HirId, expr: &'tcx hir::Expr<'_>) -> bool {
|
fn used_in_expr<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, id: hir::HirId, expr: &'tcx hir::Expr<'_>) -> bool {
|
||||||
let mut v = UsedVisitor { cx, id, used: false };
|
let mut v = UsedVisitor { cx, id, used: false };
|
||||||
hir::intravisit::walk_expr(&mut v, expr);
|
intravisit::walk_expr(&mut v, expr);
|
||||||
v.used
|
v.used
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{is_must_use_func_call, is_must_use_ty, span_help_and_lint};
|
use crate::utils::{is_must_use_func_call, is_must_use_ty, span_help_and_lint};
|
||||||
|
|
|
@ -26,6 +26,8 @@ extern crate rustc_driver;
|
||||||
#[allow(unused_extern_crates)]
|
#[allow(unused_extern_crates)]
|
||||||
extern crate rustc_errors;
|
extern crate rustc_errors;
|
||||||
#[allow(unused_extern_crates)]
|
#[allow(unused_extern_crates)]
|
||||||
|
extern crate rustc_hir;
|
||||||
|
#[allow(unused_extern_crates)]
|
||||||
extern crate rustc_index;
|
extern crate rustc_index;
|
||||||
#[allow(unused_extern_crates)]
|
#[allow(unused_extern_crates)]
|
||||||
extern crate rustc_lexer;
|
extern crate rustc_lexer;
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::intravisit::*;
|
use rustc::hir::intravisit::*;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::FunctionRetTy::Return;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_span::symbol::kw;
|
use rustc_span::symbol::kw;
|
||||||
|
|
|
@ -2,12 +2,12 @@ use crate::reexport::*;
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::def_id;
|
|
||||||
use rustc::hir::intravisit::{walk_block, walk_expr, walk_pat, walk_stmt, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_block, walk_expr, walk_pat, walk_stmt, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::middle::region;
|
use rustc::middle::region;
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::def_id;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
// use rustc::middle::region::CodeExtent;
|
// use rustc::middle::region::CodeExtent;
|
||||||
use crate::consts::{constant, Constant};
|
use crate::consts::{constant, Constant};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustc::hir::{Crate, Expr, ExprKind, QPath};
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::{Crate, Expr, ExprKind, QPath};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::symbol::sym;
|
use rustc_span::symbol::sym;
|
||||||
use syntax::ast::AttrKind;
|
use syntax::ast::AttrKind;
|
||||||
|
|
|
@ -4,10 +4,10 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use syntax::ast::Ident;
|
use syntax::ast::Ident;
|
||||||
|
|
|
@ -2,10 +2,10 @@ use crate::utils::paths;
|
||||||
use crate::utils::{iter_input_pats, match_type, method_chain_args, snippet, span_lint_and_then};
|
use crate::utils::{iter_input_pats, match_type, method_chain_args, snippet, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -7,11 +7,11 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::CtorKind;
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::def::CtorKind;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{match_def_path, paths, snippet, span_lint_and_then, walk_ptrs_ty_depth};
|
use crate::utils::{match_def_path, paths, snippet, span_lint_and_then, walk_ptrs_ty_depth};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{BorrowKind, Expr, ExprKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{BorrowKind, Expr, ExprKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use std::iter;
|
use std::iter;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::utils::{match_def_path, paths, qpath_res, span_lint};
|
use crate::utils::{match_def_path, paths, qpath_res, span_lint};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{Expr, ExprKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::{Expr, ExprKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -4,9 +4,9 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{BorrowKind, Expr, ExprKind, Mutability, QPath};
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{BorrowKind, Expr, ExprKind, Mutability, QPath};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use super::INEFFICIENT_TO_STRING;
|
use super::INEFFICIENT_TO_STRING;
|
||||||
use crate::utils::{match_def_path, paths, snippet_with_applicability, span_lint_and_then, walk_ptrs_ty_depth};
|
use crate::utils::{match_def_path, paths, snippet_with_applicability, span_lint_and_then, walk_ptrs_ty_depth};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::LateContext;
|
use rustc::lint::LateContext;
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
|
|
||||||
/// Checks for the `INEFFICIENT_TO_STRING` lint
|
/// Checks for the `INEFFICIENT_TO_STRING` lint
|
||||||
pub fn lint<'tcx>(cx: &LateContext<'_, 'tcx>, expr: &hir::Expr<'_>, arg: &hir::Expr<'_>, arg_ty: Ty<'tcx>) {
|
pub fn lint<'tcx>(cx: &LateContext<'_, 'tcx>, expr: &hir::Expr<'_>, arg: &hir::Expr<'_>, arg_ty: Ty<'tcx>) {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{match_qpath, snippet_with_applicability, span_lint_and_sugg};
|
use crate::utils::{match_qpath, snippet_with_applicability, span_lint_and_sugg};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::LateContext;
|
use rustc::lint::LateContext;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_target::abi::LayoutOf;
|
use rustc_target::abi::LayoutOf;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ fn is_min_or_max<'tcx>(cx: &LateContext<'_, 'tcx>, expr: &hir::Expr<'_>) -> Opti
|
||||||
}
|
}
|
||||||
|
|
||||||
if ty.is_signed() {
|
if ty.is_signed() {
|
||||||
if let hir::ExprKind::Unary(hir::UnNeg, val) = &expr.kind {
|
if let hir::ExprKind::Unary(hir::UnOp::UnNeg, val) = &expr.kind {
|
||||||
return check_lit(val, true);
|
return check_lit(val, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -161,7 +161,7 @@ enum Sign {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lit_sign(expr: &hir::Expr<'_>) -> Option<Sign> {
|
fn lit_sign(expr: &hir::Expr<'_>) -> Option<Sign> {
|
||||||
if let hir::ExprKind::Unary(hir::UnNeg, inner) = &expr.kind {
|
if let hir::ExprKind::Unary(hir::UnOp::UnNeg, inner) = &expr.kind {
|
||||||
if let hir::ExprKind::Lit(..) = &inner.kind {
|
if let hir::ExprKind::Lit(..) = &inner.kind {
|
||||||
return Some(Sign::Neg);
|
return Some(Sign::Neg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,11 +10,11 @@ use std::iter;
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::intravisit::{self, Visitor};
|
use rustc::hir::intravisit::{self, Visitor};
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, Lint, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, Lint, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty::{self, Predicate, Ty};
|
use rustc::ty::{self, Predicate, Ty};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_span::symbol::{sym, Symbol, SymbolStr};
|
use rustc_span::symbol::{sym, Symbol, SymbolStr};
|
||||||
|
@ -3163,11 +3163,11 @@ impl OutType {
|
||||||
fn matches(self, cx: &LateContext<'_, '_>, ty: &hir::FunctionRetTy<'_>) -> bool {
|
fn matches(self, cx: &LateContext<'_, '_>, ty: &hir::FunctionRetTy<'_>) -> bool {
|
||||||
let is_unit = |ty: &hir::Ty<'_>| SpanlessEq::new(cx).eq_ty_kind(&ty.kind, &hir::TyKind::Tup(&[]));
|
let is_unit = |ty: &hir::Ty<'_>| SpanlessEq::new(cx).eq_ty_kind(&ty.kind, &hir::TyKind::Tup(&[]));
|
||||||
match (self, ty) {
|
match (self, ty) {
|
||||||
(Self::Unit, &hir::DefaultReturn(_)) => true,
|
(Self::Unit, &hir::FunctionRetTy::DefaultReturn(_)) => true,
|
||||||
(Self::Unit, &hir::Return(ref ty)) if is_unit(ty) => true,
|
(Self::Unit, &hir::FunctionRetTy::Return(ref ty)) if is_unit(ty) => true,
|
||||||
(Self::Bool, &hir::Return(ref ty)) if is_bool(ty) => true,
|
(Self::Bool, &hir::FunctionRetTy::Return(ref ty)) if is_bool(ty) => true,
|
||||||
(Self::Any, &hir::Return(ref ty)) if !is_unit(ty) => true,
|
(Self::Any, &hir::FunctionRetTy::Return(ref ty)) if !is_unit(ty) => true,
|
||||||
(Self::Ref, &hir::Return(ref ty)) => matches!(ty.kind, hir::TyKind::Rptr(_, _)),
|
(Self::Ref, &hir::FunctionRetTy::Return(ref ty)) => matches!(ty.kind, hir::TyKind::Rptr(_, _)),
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use crate::utils::{differing_macro_contexts, paths, snippet_with_applicability, span_lint_and_then};
|
use crate::utils::{differing_macro_contexts, paths, snippet_with_applicability, span_lint_and_then};
|
||||||
use crate::utils::{is_copy, match_type};
|
use crate::utils::{is_copy, match_type};
|
||||||
use rustc::hir::intravisit::{walk_path, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_path, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::{self, *};
|
|
||||||
use rustc::lint::LateContext;
|
use rustc::lint::LateContext;
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{self, *};
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_span::symbol::Symbol;
|
use rustc_span::symbol::Symbol;
|
||||||
|
|
||||||
|
@ -13,9 +13,9 @@ use super::OPTION_MAP_UNWRAP_OR;
|
||||||
/// lint use of `map().unwrap_or()` for `Option`s
|
/// lint use of `map().unwrap_or()` for `Option`s
|
||||||
pub(super) fn lint<'a, 'tcx>(
|
pub(super) fn lint<'a, 'tcx>(
|
||||||
cx: &LateContext<'a, 'tcx>,
|
cx: &LateContext<'a, 'tcx>,
|
||||||
expr: &hir::Expr<'_>,
|
expr: &rustc_hir::Expr<'_>,
|
||||||
map_args: &'tcx [hir::Expr<'_>],
|
map_args: &'tcx [rustc_hir::Expr<'_>],
|
||||||
unwrap_args: &'tcx [hir::Expr<'_>],
|
unwrap_args: &'tcx [rustc_hir::Expr<'_>],
|
||||||
map_span: Span,
|
map_span: Span,
|
||||||
) {
|
) {
|
||||||
// lint if the caller of `map()` is an `Option`
|
// lint if the caller of `map()` is an `Option`
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use crate::utils::paths;
|
use crate::utils::paths;
|
||||||
use crate::utils::usage::mutated_variables;
|
use crate::utils::usage::mutated_variables;
|
||||||
use crate::utils::{match_qpath, match_trait_method, span_lint};
|
use crate::utils::{match_qpath, match_trait_method, span_lint};
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::def::Res;
|
|
||||||
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
||||||
use rustc::lint::LateContext;
|
use rustc::lint::LateContext;
|
||||||
|
use rustc_hir as hir;
|
||||||
|
use rustc_hir::def::Res;
|
||||||
|
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::consts::{constant_simple, Constant};
|
use crate::consts::{constant_simple, Constant};
|
||||||
use crate::utils::{match_def_path, paths, span_lint};
|
use crate::utils::{match_def_path, paths, span_lint};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@ use if_chain::if_chain;
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::intravisit::FnKind;
|
use rustc::hir::intravisit::FnKind;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::{ExpnKind, Span};
|
use rustc_span::source_map::{ExpnKind, Span};
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
@ -482,7 +482,7 @@ fn is_allowed<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr<'_>) -> boo
|
||||||
// Return true if `expr` is the result of `signum()` invoked on a float value.
|
// Return true if `expr` is the result of `signum()` invoked on a float value.
|
||||||
fn is_signum(cx: &LateContext<'_, '_>, expr: &Expr<'_>) -> bool {
|
fn is_signum(cx: &LateContext<'_, '_>, expr: &Expr<'_>) -> bool {
|
||||||
// The negation of a signum is still a signum
|
// The negation of a signum is still a signum
|
||||||
if let ExprKind::Unary(UnNeg, ref child_expr) = expr.kind {
|
if let ExprKind::Unary(UnOp::UnNeg, ref child_expr) = expr.kind {
|
||||||
return is_signum(cx, &child_expr);
|
return is_signum(cx, &child_expr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,7 +544,7 @@ fn check_to_owned(cx: &LateContext<'_, '_>, expr: &Expr<'_>, other: &Expr<'_>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let other_gets_derefed = match other.kind {
|
let other_gets_derefed = match other.kind {
|
||||||
ExprKind::Unary(UnDeref, _) => true,
|
ExprKind::Unary(UnOp::UnDeref, _) => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{has_drop, is_entrypoint_fn, span_lint, trait_ref_of_method};
|
use crate::utils::{has_drop, is_entrypoint_fn, span_lint, trait_ref_of_method};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::intravisit::FnKind;
|
use rustc::hir::intravisit::FnKind;
|
||||||
use rustc::hir::{Body, Constness, FnDecl, HirId};
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir as hir;
|
||||||
|
use rustc_hir::{Body, Constness, FnDecl, HirId};
|
||||||
use rustc_mir::transform::qualify_min_const_fn::is_min_const_fn;
|
use rustc_mir::transform::qualify_min_const_fn::is_min_const_fn;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
|
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use syntax::ast::{self, MetaItem, MetaItemKind};
|
use syntax::ast::{self, MetaItem, MetaItemKind};
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{self, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{self, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
|
|
|
@ -2,9 +2,9 @@ use crate::consts::{constant, Constant};
|
||||||
use crate::utils::{sext, span_lint_and_then};
|
use crate::utils::{sext, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::{self};
|
use rustc::ty::{self};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::*;
|
use crate::utils::*;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{match_def_path, paths, span_lint, trait_ref_of_method, walk_ptrs_ty};
|
use crate::utils::{match_def_path, paths, span_lint, trait_ref_of_method, walk_ptrs_ty};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::{Adt, Dynamic, Opaque, Param, RawPtr, Ref, Ty, TypeAndMut};
|
use rustc::ty::{Adt, Dynamic, Opaque, Param, RawPtr, Ref, Ty, TypeAndMut};
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{higher, span_lint};
|
use crate::utils::{higher, span_lint};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::intravisit;
|
use rustc::hir::intravisit;
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir as hir;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::subst::Subst;
|
use rustc::ty::subst::Subst;
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -2,9 +2,9 @@ use crate::utils::{is_direct_expn_of, span_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
|
||||||
use rustc::hir::{BorrowKind, Expr, ExprKind, Mutability, StmtKind, UnOp};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::{declare_lint_pass, ty};
|
use rustc::{declare_lint_pass, ty};
|
||||||
|
use rustc_hir::{BorrowKind, Expr, ExprKind, Mutability, StmtKind, UnOp};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
|
|
||||||
use crate::utils::{match_type, paths, span_lint};
|
use crate::utils::{match_type, paths, span_lint};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::Expr;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
use rustc_hir::Expr;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
use crate::utils::sugg::Sugg;
|
use crate::utils::sugg::Sugg;
|
||||||
use crate::utils::{higher, parent_node_is_if_expr, span_lint, span_lint_and_sugg};
|
use crate::utils::{higher, parent_node_is_if_expr, span_lint, span_lint_and_sugg};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Spanned;
|
use rustc_span::source_map::Spanned;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
use crate::utils::{snippet_opt, span_lint_and_then};
|
use crate::utils::{snippet_opt, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir::{BindingAnnotation, BorrowKind, Expr, ExprKind, HirId, Item, Mutability, Pat, PatKind};
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc::ty::adjustment::{Adjust, Adjustment};
|
use rustc::ty::adjustment::{Adjust, Adjustment};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{BindingAnnotation, BorrowKind, Expr, ExprKind, HirId, Item, Mutability, Pat, PatKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
use crate::utils::{snippet_with_applicability, span_lint_and_then};
|
use crate::utils::{snippet_with_applicability, span_lint_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{BindingAnnotation, Mutability, Node, Pat, PatKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{BindingAnnotation, Mutability, Node, Pat, PatKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -7,12 +7,12 @@ use if_chain::if_chain;
|
||||||
use matches::matches;
|
use matches::matches;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::intravisit::FnKind;
|
use rustc::hir::intravisit::FnKind;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::traits;
|
use rustc::traits;
|
||||||
use rustc::ty::{self, RegionKind, TypeFoldable};
|
use rustc::ty::{self, RegionKind, TypeFoldable};
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::{Span, Symbol};
|
use rustc_span::{Span, Symbol};
|
||||||
use rustc_target::spec::abi::Abi;
|
use rustc_target::spec::abi::Abi;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::span_lint;
|
use crate::utils::span_lint;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{Expr, ExprKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
|
use rustc_hir::{Expr, ExprKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::{self, paths, span_lint};
|
use crate::utils::{self, paths, span_lint};
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NegMultiply {
|
||||||
if BinOpKind::Mul == op.node {
|
if BinOpKind::Mul == op.node {
|
||||||
match (&left.kind, &right.kind) {
|
match (&left.kind, &right.kind) {
|
||||||
(&ExprKind::Unary(..), &ExprKind::Unary(..)) => {},
|
(&ExprKind::Unary(..), &ExprKind::Unary(..)) => {},
|
||||||
(&ExprKind::Unary(UnNeg, ref lit), _) => check_mul(cx, e.span, lit, right),
|
(&ExprKind::Unary(UnOp::UnNeg, ref lit), _) => check_mul(cx, e.span, lit, right),
|
||||||
(_, &ExprKind::Unary(UnNeg, ref lit)) => check_mul(cx, e.span, lit, left),
|
(_, &ExprKind::Unary(UnOp::UnNeg, ref lit)) => check_mul(cx, e.span, lit, left),
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,13 @@ use crate::utils::paths;
|
||||||
use crate::utils::sugg::DiagnosticBuilderExt;
|
use crate::utils::sugg::DiagnosticBuilderExt;
|
||||||
use crate::utils::{get_trait_def_id, implements_trait, return_ty, same_tys, span_lint_hir_and_then};
|
use crate::utils::{get_trait_def_id, implements_trait, return_ty, same_tys, span_lint_hir_and_then};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::def_id::DefId;
|
|
||||||
use rustc::hir::HirIdSet;
|
|
||||||
use rustc::impl_lint_pass;
|
use rustc::impl_lint_pass;
|
||||||
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass};
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir as hir;
|
||||||
|
use rustc_hir::def_id::DefId;
|
||||||
|
use rustc_hir::HirIdSet;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{has_drop, qpath_res, snippet_opt, span_lint, span_lint_and_sugg};
|
use crate::utils::{has_drop, qpath_res, snippet_opt, span_lint, span_lint_and_sugg};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::{BinOpKind, BlockCheckMode, Expr, ExprKind, Stmt, StmtKind, UnsafeSource};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::{BinOpKind, BlockCheckMode, Expr, ExprKind, Stmt, StmtKind, UnsafeSource};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, Lint, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, Lint, LintArray, LintPass};
|
||||||
use rustc::ty::adjustment::Adjust;
|
use rustc::ty::adjustment::Adjust;
|
||||||
use rustc::ty::{Ty, TypeFlags};
|
use rustc::ty::{Ty, TypeFlags};
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::{InnerSpan, Span, DUMMY_SP};
|
use rustc_span::{InnerSpan, Span, DUMMY_SP};
|
||||||
use rustc_typeck::hir_ty_to_ty;
|
use rustc_typeck::hir_ty_to_ty;
|
||||||
|
@ -222,7 +222,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonCopyConst {
|
||||||
needs_check_adjustment = false;
|
needs_check_adjustment = false;
|
||||||
break;
|
break;
|
||||||
},
|
},
|
||||||
ExprKind::Unary(UnDeref, _) => {
|
ExprKind::Unary(UnOp::UnDeref, _) => {
|
||||||
// `*e` => desugared to `*Deref::deref(&e)`,
|
// `*e` => desugared to `*Deref::deref(&e)`,
|
||||||
// meaning `e` must be referenced.
|
// meaning `e` must be referenced.
|
||||||
// no need to go further up since a method call is involved now.
|
// no need to go further up since a method call is involved now.
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{match_type, method_chain_args, paths, snippet, span_help_and_lint};
|
use crate::utils::{match_type, method_chain_args, paths, snippet, span_help_and_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::utils::{match_type, paths, span_lint, walk_ptrs_ty};
|
use crate::utils::{match_type, paths, span_lint, walk_ptrs_ty};
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{Expr, ExprKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::{Expr, ExprKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::{Span, Spanned};
|
use rustc_span::source_map::{Span, Spanned};
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{span_lint, SpanlessEq};
|
use crate::utils::{span_lint, SpanlessEq};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{is_direct_expn_of, is_expn_of, match_function_call, paths, span_lint};
|
use crate::utils::{is_direct_expn_of, is_expn_of, match_function_call, paths, span_lint};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils::{is_automatically_derived, span_lint_hir};
|
use crate::utils::{is_automatically_derived, span_lint_hir};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
declare_clippy_lint! {
|
declare_clippy_lint! {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::utils::{match_type, paths, span_lint_and_sugg, walk_ptrs_ty};
|
use crate::utils::{match_type, paths, span_lint_and_sugg, walk_ptrs_ty};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use std::path::{Component, Path};
|
use std::path::{Component, Path};
|
||||||
use syntax::ast::LitKind;
|
use syntax::ast::LitKind;
|
||||||
|
|
|
@ -7,11 +7,11 @@ use crate::utils::{
|
||||||
};
|
};
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::QPath;
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc::ty;
|
use rustc::ty;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::QPath;
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use rustc_span::source_map::Span;
|
use rustc_span::source_map::Span;
|
||||||
use rustc_span::{MultiSpan, Symbol};
|
use rustc_span::{MultiSpan, Symbol};
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::utils;
|
use crate::utils;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::{Expr, ExprKind};
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::{Expr, ExprKind};
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
use if_chain::if_chain;
|
use if_chain::if_chain;
|
||||||
use rustc::declare_lint_pass;
|
use rustc::declare_lint_pass;
|
||||||
use rustc::hir::def::{DefKind, Res};
|
|
||||||
use rustc::hir::*;
|
|
||||||
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
|
use rustc_hir::def::{DefKind, Res};
|
||||||
|
use rustc_hir::*;
|
||||||
use rustc_session::declare_tool_lint;
|
use rustc_session::declare_tool_lint;
|
||||||
|
|
||||||
use crate::utils::paths::*;
|
use crate::utils::paths::*;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue