Skip to content

Commit 72238fc

Browse files
committedApr 7, 2025·
test(linter): ensure complex fixes have messages (#10280)
- related to #10038 This adds an assertion which ensures that fixes which change more than a single character have a fix message associated with them.
1 parent 5d40676 commit 72238fc

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed
 

‎crates/oxc_linter/src/context/mod.rs

+13
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,19 @@ impl<'a> LintContext<'a> {
353353
};
354354
if self.parent.fix.can_apply(rule_fix.kind()) && !rule_fix.is_empty() {
355355
let fix = rule_fix.into_fix(self.source_text());
356+
#[cfg(debug_assertions)]
357+
{
358+
if fix.span.size() > 1 {
359+
assert!(
360+
fix.message.as_ref().is_some_and(|msg| !msg.is_empty()),
361+
"Rule `{}/{}` fix should have a message for a complex fix. Did you forget to add a message?\n Source text: {:?}\n Fixed text: {:?}\nhelp: You can add a message to a fix with `RuleFix.with_message()`",
362+
self.current_plugin_name,
363+
self.current_rule_name,
364+
self.source_range(fix.span),
365+
fix.content
366+
);
367+
}
368+
}
356369
self.add_diagnostic(Message::new(diagnostic, Some(fix)));
357370
} else {
358371
self.diagnostic(diagnostic);

‎crates/oxc_linter/src/fixer/fix.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,15 @@ impl<'a> RuleFix<'a> {
237237

238238
#[inline]
239239
pub fn into_fix(self, source_text: &str) -> Fix<'a> {
240+
// If there is only one fix, use the message from that fix.
241+
let message = match &self.fix {
242+
CompositeFix::Single(fix) if fix.message.as_ref().is_some_and(|m| !m.is_empty()) => {
243+
fix.message.clone()
244+
}
245+
_ => self.message,
246+
};
240247
let mut fix = self.fix.normalize_fixes(source_text);
241-
fix.message = self.message;
248+
fix.message = message;
242249
fix
243250
}
244251

0 commit comments

Comments
 (0)
Please sign in to comment.