Skip to content

Commit 1d764e0

Browse files
Port #[no_mangle] to new attribute parsing infrastructure
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
1 parent b92cccb commit 1d764e0

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

clippy_lints/src/functions/must_use.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ use clippy_utils::ty::is_must_use_ty;
1515
use clippy_utils::visitors::for_each_expr_without_closures;
1616
use clippy_utils::{return_ty, trait_ref_of_method};
1717
use rustc_trait_selection::error_reporting::InferCtxtErrorExt;
18-
use rustc_attr_data_structures::AttributeKind;
1918
use rustc_span::Symbol;
20-
use rustc_attr_data_structures::find_attr;
19+
use rustc_attr_data_structures::{AttributeKind, find_attr};
2120

2221
use core::ops::ControlFlow;
2322

@@ -36,7 +35,7 @@ pub(super) fn check_item<'tcx>(cx: &LateContext<'tcx>, item: &'tcx hir::Item<'_>
3635
let fn_header_span = item.span.with_hi(sig.decl.output.span().hi());
3736
if let Some((attr_span, reason)) = attr {
3837
check_needless_must_use(cx, sig.decl, item.owner_id, item.span, fn_header_span, *attr_span, *reason, attrs, sig);
39-
} else if is_public && !is_proc_macro(attrs) && !attrs.iter().any(|a| a.has_name(sym::no_mangle)) {
38+
} else if is_public && !is_proc_macro(attrs) && !find_attr!(attrs, AttributeKind::NoMangle(..)) {
4039
check_must_use_candidate(
4140
cx,
4241
sig.decl,

clippy_lints/src/no_mangle_with_rust_abi.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use rustc_hir::{Item, ItemKind};
66
use rustc_lint::{LateContext, LateLintPass};
77
use rustc_session::declare_lint_pass;
88
use rustc_span::{BytePos, Pos};
9+
use rustc_attr_data_structures::AttributeKind;
10+
use rustc_hir::Attribute;
911

1012
declare_clippy_lint! {
1113
/// ### What it does
@@ -44,8 +46,7 @@ impl<'tcx> LateLintPass<'tcx> for NoMangleWithRustAbi {
4446
let mut app = Applicability::MaybeIncorrect;
4547
let fn_snippet = snippet_with_applicability(cx, fn_sig.span.with_hi(ident.span.lo()), "..", &mut app);
4648
for attr in attrs {
47-
if let Some(ident) = attr.ident()
48-
&& ident.name == rustc_span::sym::no_mangle
49+
if let Attribute::Parsed(AttributeKind::NoMangle(attr_span)) = attr
4950
&& fn_sig.header.abi == ExternAbi::Rust
5051
&& let Some((fn_attrs, _)) = fn_snippet.rsplit_once("fn")
5152
&& !fn_attrs.contains("extern")
@@ -54,7 +55,7 @@ impl<'tcx> LateLintPass<'tcx> for NoMangleWithRustAbi {
5455
.span
5556
.with_lo(fn_sig.span.lo() + BytePos::from_usize(fn_attrs.len()))
5657
.shrink_to_lo();
57-
let attr_snippet = snippet(cx, attr.span(), "..");
58+
let attr_snippet = snippet(cx, *attr_span, "..");
5859

5960
span_lint_and_then(
6061
cx,

0 commit comments

Comments
 (0)