use super::check::CheckError;
use crate::linter::FuseBlown;
pub(super) fn label(error: CheckError, board: Option<&str>) -> CheckError {
match (error, board) {
(CheckError::FuseBlown(mut blown), Some(board)) => {
for violation in &mut blown.violations {
violation.message = format!("[{board}] {}", violation.message);
}
CheckError::FuseBlown(blown)
}
(other, _) => other,
}
}
pub(super) fn merge(
first: Option<CheckError>,
next: Option<CheckError>,
report: &mut impl FnMut(FuseBlown),
) -> Option<CheckError> {
match (first, next) {
(Some(CheckError::FuseBlown(mut a)), Some(CheckError::FuseBlown(b))) => {
a.violations.extend(b.violations);
Some(CheckError::FuseBlown(a))
}
(Some(CheckError::FuseBlown(blown)), Some(tool))
| (Some(tool), Some(CheckError::FuseBlown(blown))) => {
report(blown);
Some(tool)
}
(first, next) => first.or(next),
}
}