diff options
| author | Cameron Steffen <cam.steffen94@gmail.com> | 2021-02-05 16:27:23 -0600 |
|---|---|---|
| committer | Cameron Steffen <cam.steffen94@gmail.com> | 2021-02-08 08:54:04 -0600 |
| commit | c44eafdcd7a20bfe1af761d07a7ad8aaf5254d91 (patch) | |
| tree | 9250e1e823c370752e733c246374b61a63df196a | |
| parent | 4bbd7e46ee274d1128d3d3e0f7f681127fcb0e14 (diff) | |
| download | rust-c44eafdcd7a20bfe1af761d07a7ad8aaf5254d91.tar.gz rust-c44eafdcd7a20bfe1af761d07a7ad8aaf5254d91.zip | |
Use id instead of name
| -rw-r--r-- | clippy_lints/src/vec_init_then_push.rs | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/clippy_lints/src/vec_init_then_push.rs b/clippy_lints/src/vec_init_then_push.rs index e632a7e57ee..4768cb4830b 100644 --- a/clippy_lints/src/vec_init_then_push.rs +++ b/clippy_lints/src/vec_init_then_push.rs @@ -1,12 +1,14 @@ -use crate::utils::{is_type_diagnostic_item, match_def_path, paths, snippet, span_lint_and_sugg}; +use crate::utils::{ + is_type_diagnostic_item, match_def_path, path_to_local, path_to_local_id, paths, snippet, span_lint_and_sugg, +}; use if_chain::if_chain; use rustc_ast::ast::LitKind; use rustc_errors::Applicability; -use rustc_hir::{BindingAnnotation, Block, Expr, ExprKind, Local, PatKind, QPath, Stmt, StmtKind}; +use rustc_hir::{BindingAnnotation, Block, Expr, ExprKind, HirId, Local, PatKind, QPath, Stmt, StmtKind}; use rustc_lint::{LateContext, LateLintPass, LintContext}; use rustc_middle::lint::in_external_macro; use rustc_session::{declare_tool_lint, impl_lint_pass}; -use rustc_span::{symbol::sym, Span, Symbol}; +use rustc_span::{symbol::sym, Span}; use std::convert::TryInto; declare_clippy_lint! { @@ -45,8 +47,8 @@ enum VecInitKind { WithCapacity(u64), } struct VecPushSearcher { + local_id: HirId, init: VecInitKind, - name: Symbol, lhs_is_local: bool, lhs_span: Span, err_span: Span, @@ -86,12 +88,12 @@ impl LateLintPass<'_> for VecInitThenPush { if_chain! { if !in_external_macro(cx.sess(), local.span); if let Some(init) = local.init; - if let PatKind::Binding(BindingAnnotation::Mutable, _, ident, None) = local.pat.kind; + if let PatKind::Binding(BindingAnnotation::Mutable, id, _, None) = local.pat.kind; if let Some(init_kind) = get_vec_init_kind(cx, init); then { self.searcher = Some(VecPushSearcher { + local_id: id, init: init_kind, - name: ident.name, lhs_is_local: true, lhs_span: local.ty.map_or(local.pat.span, |t| local.pat.span.to(t.span)), err_span: local.span, @@ -106,13 +108,12 @@ impl LateLintPass<'_> for VecInitThenPush { if_chain! { if !in_external_macro(cx.sess(), expr.span); if let ExprKind::Assign(left, right, _) = expr.kind; - if let ExprKind::Path(QPath::Resolved(_, path)) = left.kind; - if let Some(name) = path.segments.get(0); + if let Some(id) = path_to_local(left); if let Some(init_kind) = get_vec_init_kind(cx, right); then { self.searcher = Some(VecPushSearcher { + local_id: id, init: init_kind, - name: name.ident.name, lhs_is_local: false, lhs_span: left.span, err_span: expr.span, @@ -128,10 +129,8 @@ impl LateLintPass<'_> for VecInitThenPush { if_chain! { if let StmtKind::Expr(expr) | StmtKind::Semi(expr) = stmt.kind; if let ExprKind::MethodCall(path, _, [self_arg, _], _) = expr.kind; + if path_to_local_id(self_arg, searcher.local_id); if path.ident.name.as_str() == "push"; - if let ExprKind::Path(QPath::Resolved(_, self_path)) = self_arg.kind; - if let [self_name] = self_path.segments; - if self_name.ident.name == searcher.name; then { self.searcher = Some(VecPushSearcher { found: searcher.found + 1, |
