use rustc_errors::{DiagMessage, MultiSpan, SubdiagMessage};
use rustc_lint::{Lint, LintContext};
use rustc_span::Span;
pub fn span_lint_and_help<T: LintContext>(
cx: &T,
lint: &'static Lint,
rule_name: &str,
span: impl Into<MultiSpan>,
msg: impl Into<DiagMessage>,
help_span: Option<Span>,
help: impl Into<SubdiagMessage>,
) {
cx.span_lint(lint, span, |diag| {
diag.primary_message(msg);
if let Some(help_span) = help_span {
diag.span_help(help_span, help.into());
} else {
diag.help(help.into());
}
diag.note(format!("Applied by cargo-pup rule '{rule_name}'."));
});
}