fixup! Lint inside macro when owned by current crate
This commit is contained in:
parent
44d37a44bc
commit
bc7fac9526
@ -7,6 +7,7 @@ use clippy_utils::{diagnostics::span_lint_and_help, in_macro, is_direct_expn_of,
|
||||
use if_chain::if_chain;
|
||||
use rustc_ast::ast;
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_hir::def_id::DefId;
|
||||
use rustc_lint::{EarlyContext, EarlyLintPass};
|
||||
use rustc_session::{declare_tool_lint, impl_lint_pass};
|
||||
use rustc_span::Span;
|
||||
@ -95,9 +96,11 @@ impl EarlyLintPass for MacroBraces {
|
||||
fn is_offending_macro<'a>(cx: &EarlyContext<'_>, span: Span, mac_braces: &'a MacroBraces) -> Option<MacroInfo<'a>> {
|
||||
let unnested_or_local = || {
|
||||
let nested = in_macro(span.ctxt().outer_expn_data().call_site);
|
||||
let in_local_macro = nested
|
||||
&& matches!(span.macro_backtrace().last().and_then(|e| e.macro_def_id), Some(defid) if defid.is_local());
|
||||
!nested || in_local_macro
|
||||
!nested
|
||||
|| span
|
||||
.macro_backtrace()
|
||||
.last()
|
||||
.map_or(false, |e| e.macro_def_id.map_or(false, DefId::is_local))
|
||||
};
|
||||
if_chain! {
|
||||
// Make sure we are only one level deep otherwise there are to many FP's
|
||||
|
Loading…
x
Reference in New Issue
Block a user