non_local_defs: indicate that the macro needs to change
aaa
This commit is contained in:
parent
5870f1ccbb
commit
c4c8bda689
5 changed files with 19 additions and 0 deletions
|
@ -1355,6 +1355,7 @@ pub enum NonLocalDefinitionsDiag {
|
|||
has_trait: bool,
|
||||
self_ty_str: String,
|
||||
of_trait_str: Option<String>,
|
||||
macro_to_change: Option<(String, &'static str)>,
|
||||
},
|
||||
MacroRules {
|
||||
depth: u32,
|
||||
|
@ -1380,6 +1381,7 @@ impl<'a> LintDiagnostic<'a, ()> for NonLocalDefinitionsDiag {
|
|||
has_trait,
|
||||
self_ty_str,
|
||||
of_trait_str,
|
||||
macro_to_change,
|
||||
} => {
|
||||
diag.primary_message(fluent::lint_non_local_definitions_impl);
|
||||
diag.arg("depth", depth);
|
||||
|
@ -1390,6 +1392,12 @@ impl<'a> LintDiagnostic<'a, ()> for NonLocalDefinitionsDiag {
|
|||
diag.arg("of_trait_str", of_trait_str);
|
||||
}
|
||||
|
||||
if let Some((macro_to_change, macro_kind)) = macro_to_change {
|
||||
diag.arg("macro_to_change", macro_to_change);
|
||||
diag.arg("macro_kind", macro_kind);
|
||||
diag.note(fluent::lint_macro_to_change);
|
||||
}
|
||||
|
||||
if has_trait {
|
||||
diag.note(fluent::lint_bounds);
|
||||
diag.note(fluent::lint_with_trait);
|
||||
|
|
|
@ -258,6 +258,13 @@ impl<'tcx> LateLintPass<'tcx> for NonLocalDefinitions {
|
|||
Some((cx.tcx.def_span(parent), may_move))
|
||||
};
|
||||
|
||||
let macro_to_change =
|
||||
if let ExpnKind::Macro(kind, name) = item.span.ctxt().outer_expn_data().kind {
|
||||
Some((name.to_string(), kind.descr()))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
cx.emit_span_lint(
|
||||
NON_LOCAL_DEFINITIONS,
|
||||
ms,
|
||||
|
@ -274,6 +281,7 @@ impl<'tcx> LateLintPass<'tcx> for NonLocalDefinitions {
|
|||
move_to,
|
||||
may_remove,
|
||||
has_trait: impl_.of_trait.is_some(),
|
||||
macro_to_change,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue