use harn_fmt::{trailing_comma_issues, TrailingCommaKind};
use harn_parser::DiagnosticCode as Code;
use crate::diagnostic::{LintDiagnostic, LintSeverity};
pub(crate) fn check_trailing_comma(source: &str, diagnostics: &mut Vec<LintDiagnostic>) {
for issue in trailing_comma_issues(source) {
let (message, suggestion) = match issue.kind {
TrailingCommaKind::Missing => (
"multiline comma-separated list is missing a trailing comma",
"add a trailing comma after the last item",
),
TrailingCommaKind::Extraneous => (
"single-line comma-separated list has a trailing comma",
"remove the trailing comma",
),
};
diagnostics.push(LintDiagnostic {
code: Code::LintTrailingComma,
rule: "trailing-comma".into(),
message: message.to_string(),
span: issue.edit.span,
severity: LintSeverity::Warning,
suggestion: Some(suggestion.to_string()),
fix: Some(vec![issue.edit]),
});
}
}