Skip to content

Commit 6dfa37f

Browse files
committed
Add hir::Attribute
1 parent f332026 commit 6dfa37f

19 files changed

+90
-95
lines changed

clippy_lints/src/attrs/inline_always.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::INLINE_ALWAYS;
22
use super::utils::is_word;
33
use clippy_utils::diagnostics::span_lint;
4-
use rustc_ast::Attribute;
4+
use rustc_hir::Attribute;
55
use rustc_lint::LateContext;
66
use rustc_span::symbol::Symbol;
77
use rustc_span::{Span, sym};

clippy_lints/src/attrs/should_panic_without_expect.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ use super::{Attribute, SHOULD_PANIC_WITHOUT_EXPECT};
22
use clippy_utils::diagnostics::span_lint_and_sugg;
33
use rustc_ast::token::{Token, TokenKind};
44
use rustc_ast::tokenstream::TokenTree;
5-
use rustc_ast::{AttrArgs, AttrArgsEq, AttrKind};
5+
use rustc_ast::{AttrArgs, AttrKind};
66
use rustc_errors::Applicability;
77
use rustc_lint::EarlyContext;
88
use rustc_span::sym;
99

1010
pub(super) fn check(cx: &EarlyContext<'_>, attr: &Attribute) {
1111
if let AttrKind::Normal(normal_attr) = &attr.kind {
12-
if let AttrArgs::Eq { expr: AttrArgsEq::Ast(_), .. } = &normal_attr.item.args {
12+
if let AttrArgs::Eq { .. } = &normal_attr.item.args {
1313
// `#[should_panic = ".."]` found, good
1414
return;
1515
}

clippy_lints/src/cognitive_complexity.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ use clippy_utils::ty::is_type_diagnostic_item;
55
use clippy_utils::visitors::for_each_expr_without_closures;
66
use clippy_utils::{LimitStack, get_async_fn_body, is_async_fn};
77
use core::ops::ControlFlow;
8-
use rustc_ast::ast::Attribute;
98
use rustc_hir::intravisit::FnKind;
10-
use rustc_hir::{Body, Expr, ExprKind, FnDecl};
9+
use rustc_hir::{Attribute, Body, Expr, ExprKind, FnDecl};
1110
use rustc_lint::{LateContext, LateLintPass, LintContext};
1211
use rustc_session::impl_lint_pass;
1312
use rustc_span::def_id::LocalDefId;

clippy_lints/src/doc/empty_line_after.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use clippy_utils::diagnostics::span_lint_and_then;
22
use clippy_utils::source::{SpanRangeExt, snippet_indent};
33
use clippy_utils::tokenize_with_text;
44
use itertools::Itertools;
5+
use rustc_ast::AttrStyle;
56
use rustc_ast::token::CommentKind;
6-
use rustc_ast::{AttrKind, AttrStyle, Attribute};
77
use rustc_errors::{Applicability, Diag, SuggestionStyle};
8-
use rustc_hir::{ItemKind, Node};
8+
use rustc_hir::{AttrKind, Attribute, ItemKind, Node};
99
use rustc_lexer::TokenKind;
1010
use rustc_lint::LateContext;
1111
use rustc_span::{BytePos, ExpnKind, InnerSpan, Span, SpanData};

clippy_lints/src/doc/include_in_doc_without_cfg.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
22
use clippy_utils::source::snippet_opt;
3-
use rustc_ast::{AttrArgs, AttrArgsEq, AttrKind, AttrStyle, Attribute};
3+
use rustc_ast::{AttrStyle};
44
use rustc_errors::Applicability;
55
use rustc_lint::LateContext;
6-
use rustc_span::sym;
6+
use rustc_hir::{Attribute, AttrKind, AttrArgs};
77

88
use super::DOC_INCLUDE_WITHOUT_CFG;
99

1010
pub fn check(cx: &LateContext<'_>, attrs: &[Attribute]) {
1111
for attr in attrs {
1212
if !attr.span.from_expansion()
13-
&& let AttrKind::Normal(ref normal) = attr.kind
14-
&& normal.item.path == sym::doc
15-
&& let AttrArgs::Eq { expr: AttrArgsEq::Hir(ref meta), .. } = normal.item.args
13+
&& let AttrKind::Normal(ref item) = attr.kind
14+
&& attr.doc_str().is_some()
15+
&& let AttrArgs::Eq { expr: meta, .. } = &item.args
1616
&& !attr.span.contains(meta.span)
1717
// Since the `include_str` is already expanded at this point, we can only take the
1818
// whole attribute snippet and then modify for our suggestion.

clippy_lints/src/doc/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ use pulldown_cmark::Event::{
1616
};
1717
use pulldown_cmark::Tag::{BlockQuote, CodeBlock, FootnoteDefinition, Heading, Item, Link, Paragraph};
1818
use pulldown_cmark::{BrokenLink, CodeBlockKind, CowStr, Options, TagEnd};
19-
use rustc_ast::ast::Attribute;
2019
use rustc_data_structures::fx::FxHashSet;
2120
use rustc_hir::intravisit::{self, Visitor};
22-
use rustc_hir::{AnonConst, Expr, ImplItemKind, ItemKind, Node, Safety, TraitItemKind};
21+
use rustc_hir::{AnonConst, Attribute, Expr, ImplItemKind, ItemKind, Node, Safety, TraitItemKind};
2322
use rustc_lint::{LateContext, LateLintPass, LintContext};
2423
use rustc_middle::hir::nested_filter;
2524
use rustc_middle::lint::in_external_macro;

clippy_lints/src/doc/suspicious_doc_comments.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use clippy_utils::diagnostics::span_lint_and_then;
2+
use rustc_ast::AttrStyle;
23
use rustc_ast::token::CommentKind;
3-
use rustc_ast::{AttrKind, AttrStyle, Attribute};
44
use rustc_errors::Applicability;
5+
use rustc_hir::Attribute;
56
use rustc_lint::LateContext;
67
use rustc_span::Span;
78

@@ -35,7 +36,7 @@ fn collect_doc_replacements(attrs: &[Attribute]) -> Vec<(Span, String)> {
3536
attrs
3637
.iter()
3738
.filter_map(|attr| {
38-
if let AttrKind::DocComment(com_kind, sym) = attr.kind
39+
if let Some((sym, com_kind)) = attr.doc_str_and_comment_kind()
3940
&& let AttrStyle::Outer = attr.style
4041
&& let Some(com) = sym.as_str().strip_prefix('!')
4142
{

clippy_lints/src/doc/too_long_first_doc_paragraph.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use rustc_ast::ast::Attribute;
21
use rustc_errors::Applicability;
3-
use rustc_hir::{Item, ItemKind};
2+
use rustc_hir::{Attribute, Item, ItemKind};
43
use rustc_lint::LateContext;
54

65
use clippy_utils::diagnostics::span_lint_and_then;

clippy_lints/src/functions/must_use.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
use hir::FnSig;
2-
use rustc_ast::ast::Attribute;
32
use rustc_errors::Applicability;
43
use rustc_hir::def::Res;
54
use rustc_hir::def_id::DefIdSet;
6-
use rustc_hir::{self as hir, QPath};
5+
use rustc_hir::{self as hir, Attribute, QPath};
76
use rustc_infer::infer::TyCtxtInferExt;
87
use rustc_lint::{LateContext, LintContext};
98
use rustc_middle::lint::in_external_macro;

clippy_lints/src/large_include_file.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use clippy_config::Conf;
22
use clippy_utils::diagnostics::span_lint_and_then;
33
use clippy_utils::macros::root_macro_call_first_node;
44
use clippy_utils::source::snippet_opt;
5-
use rustc_ast::{AttrArgs, AttrArgsEq, AttrKind, Attribute, LitKind};
6-
use rustc_hir::{Expr, ExprKind};
5+
use rustc_ast::{LitKind};
6+
use rustc_hir::{Expr, ExprKind, Attribute, AttrArgs, AttrKind};
77
use rustc_lint::{LateContext, LateLintPass};
88
use rustc_session::impl_lint_pass;
99
use rustc_span::{Span, sym};
@@ -93,10 +93,10 @@ impl LateLintPass<'_> for LargeIncludeFile {
9393
if !attr.span.from_expansion()
9494
// Currently, rustc limits the usage of macro at the top-level of attributes,
9595
// so we don't need to recurse into each level.
96-
&& let AttrKind::Normal(ref normal) = attr.kind
96+
&& let AttrKind::Normal(ref item) = attr.kind
9797
&& let Some(doc) = attr.doc_str()
9898
&& doc.as_str().len() as u64 > self.max_file_size
99-
&& let AttrArgs::Eq { expr: AttrArgsEq::Hir(ref meta), .. } = normal.item.args
99+
&& let AttrArgs::Eq { expr: meta, .. } = &item.args
100100
&& !attr.span.contains(meta.span)
101101
// Since the `include_str` is already expanded at this point, we can only take the
102102
// whole attribute snippet and then modify for our suggestion.

clippy_lints/src/macro_use.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_hir_and_then;
22
use clippy_utils::source::snippet;
33
use hir::def::{DefKind, Res};
4-
use rustc_ast::ast;
54
use rustc_data_structures::fx::FxHashSet;
65
use rustc_errors::Applicability;
76
use rustc_hir as hir;
@@ -104,7 +103,7 @@ impl LateLintPass<'_> for MacroUseImports {
104103
self.push_unique_macro_pat_ty(cx, item.span);
105104
}
106105
}
107-
fn check_attribute(&mut self, cx: &LateContext<'_>, attr: &ast::Attribute) {
106+
fn check_attribute(&mut self, cx: &LateContext<'_>, attr: &hir::Attribute) {
108107
if attr.span.from_expansion() {
109108
self.push_unique_macro(cx, attr.span);
110109
}

clippy_lints/src/matches/match_like_matches.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ use super::REDUNDANT_PATTERN_MATCHING;
22
use clippy_utils::diagnostics::span_lint_and_sugg;
33
use clippy_utils::source::snippet_with_applicability;
44
use clippy_utils::{is_lint_allowed, is_wild, span_contains_comment};
5-
use rustc_ast::{Attribute, LitKind};
5+
use rustc_ast::LitKind;
66
use rustc_errors::Applicability;
7-
use rustc_hir::{Arm, BorrowKind, Expr, ExprKind, Pat, PatKind, QPath};
7+
use rustc_hir::{Arm, Attribute, BorrowKind, Expr, ExprKind, Pat, PatKind, QPath};
88
use rustc_lint::{LateContext, LintContext};
99
use rustc_middle::ty;
1010
use rustc_span::source_map::Spanned;

clippy_lints/src/missing_doc.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ use clippy_utils::attrs::is_doc_hidden;
1010
use clippy_utils::diagnostics::span_lint;
1111
use clippy_utils::is_from_proc_macro;
1212
use clippy_utils::source::SpanRangeExt;
13-
use rustc_ast::ast::{self, MetaItem, MetaItemKind};
13+
use rustc_ast::ast::MetaItemInner;
1414
use rustc_hir as hir;
15+
use rustc_hir::Attribute;
1516
use rustc_hir::def::DefKind;
1617
use rustc_hir::def_id::LocalDefId;
1718
use rustc_lint::{LateContext, LateLintPass, LintContext};
@@ -67,9 +68,8 @@ impl MissingDoc {
6768
*self.doc_hidden_stack.last().expect("empty doc_hidden_stack")
6869
}
6970

70-
fn has_include(meta: Option<MetaItem>) -> bool {
71-
if let Some(meta) = meta
72-
&& let MetaItemKind::List(list) = meta.kind
71+
fn has_include(meta: Option<&[MetaItemInner]>) -> bool {
72+
if let Some(list) = meta
7373
&& let Some(meta) = list.first()
7474
&& let Some(name) = meta.ident()
7575
{
@@ -83,7 +83,7 @@ impl MissingDoc {
8383
&self,
8484
cx: &LateContext<'_>,
8585
def_id: LocalDefId,
86-
attrs: &[ast::Attribute],
86+
attrs: &[Attribute],
8787
sp: Span,
8888
article: &'static str,
8989
desc: &'static str,
@@ -129,7 +129,7 @@ impl MissingDoc {
129129

130130
let has_doc = attrs
131131
.iter()
132-
.any(|a| a.doc_str().is_some() || Self::has_include(a.meta()))
132+
.any(|a| a.doc_str().is_some() || Self::has_include(a.meta_item_list().as_deref()))
133133
|| matches!(self.search_span(sp), Some(span) if span_to_snippet_contains_docs(cx, span));
134134

135135
if !has_doc {
@@ -172,12 +172,12 @@ impl MissingDoc {
172172
impl_lint_pass!(MissingDoc => [MISSING_DOCS_IN_PRIVATE_ITEMS]);
173173

174174
impl<'tcx> LateLintPass<'tcx> for MissingDoc {
175-
fn check_attributes(&mut self, _: &LateContext<'tcx>, attrs: &'tcx [ast::Attribute]) {
175+
fn check_attributes(&mut self, _: &LateContext<'tcx>, attrs: &'tcx [Attribute]) {
176176
let doc_hidden = self.doc_hidden() || is_doc_hidden(attrs);
177177
self.doc_hidden_stack.push(doc_hidden);
178178
}
179179

180-
fn check_attributes_post(&mut self, _: &LateContext<'tcx>, _: &'tcx [ast::Attribute]) {
180+
fn check_attributes_post(&mut self, _: &LateContext<'tcx>, _: &'tcx [Attribute]) {
181181
self.doc_hidden_stack.pop().expect("empty doc_hidden_stack");
182182
}
183183

clippy_lints/src/missing_inline.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint;
2-
use rustc_ast::ast;
32
use rustc_hir as hir;
3+
use rustc_hir::Attribute;
44
use rustc_lint::{LateContext, LateLintPass, LintContext};
55
use rustc_middle::ty::AssocItemContainer;
66
use rustc_session::declare_lint_pass;
@@ -63,7 +63,7 @@ declare_clippy_lint! {
6363
"detects missing `#[inline]` attribute for public callables (functions, trait methods, methods...)"
6464
}
6565

66-
fn check_missing_inline_attrs(cx: &LateContext<'_>, attrs: &[ast::Attribute], sp: Span, desc: &'static str) {
66+
fn check_missing_inline_attrs(cx: &LateContext<'_>, attrs: &[Attribute], sp: Span, desc: &'static str) {
6767
let has_inline = attrs.iter().any(|a| a.has_name(sym::inline));
6868
if !has_inline {
6969
span_lint(

clippy_lints/src/needless_pass_by_value.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ use clippy_utils::source::{SpanRangeExt, snippet};
55
use clippy_utils::ty::{
66
implements_trait, implements_trait_with_env_from_iter, is_copy, is_type_diagnostic_item, is_type_lang_item,
77
};
8-
use rustc_ast::ast::Attribute;
98
use rustc_errors::{Applicability, Diag};
109
use rustc_hir::intravisit::FnKind;
1110
use rustc_hir::{
12-
BindingMode, Body, FnDecl, GenericArg, HirId, HirIdSet, Impl, ItemKind, LangItem, Mutability, Node, PatKind, QPath,
13-
TyKind,
11+
Attribute, BindingMode, Body, FnDecl, GenericArg, HirId, HirIdSet, Impl, ItemKind, LangItem, Mutability, Node,
12+
PatKind, QPath, TyKind,
1413
};
1514
use rustc_hir_typeck::expr_use_visitor as euv;
1615
use rustc_lint::{LateContext, LateLintPass};

clippy_utils/src/ast_utils.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -872,8 +872,7 @@ pub fn eq_attr_args(l: &AttrArgs, r: &AttrArgs) -> bool {
872872
match (l, r) {
873873
(Empty, Empty) => true,
874874
(Delimited(la), Delimited(ra)) => eq_delim_args(la, ra),
875-
(Eq { expr: AttrArgsEq::Ast(le), .. }, Eq{ expr: AttrArgsEq::Ast(re), .. }) => eq_expr(le, re),
876-
(Eq { expr: AttrArgsEq::Hir(ll), .. }, Eq{ expr: AttrArgsEq::Hir(rl), .. }) => ll.kind == rl.kind,
875+
(Eq { eq_span: _, expr: le }, Eq { eq_span: _, expr: re }) => eq_expr(le, re),
877876
_ => false,
878877
}
879878
}

0 commit comments

Comments
 (0)