diff --git a/crates/oxc_linter/src/tsgolint.rs b/crates/oxc_linter/src/tsgolint.rs index 62e0a4f25c935..4021741854316 100644 --- a/crates/oxc_linter/src/tsgolint.rs +++ b/crates/oxc_linter/src/tsgolint.rs @@ -730,14 +730,12 @@ impl From for OxcDiagnostic { impl Message { /// Converts a `TsGoLintDiagnostic` into a `Message` with possible fixes. fn from_tsgo_lint_diagnostic(mut val: TsGoLintRuleDiagnostic, source_text: &str) -> Self { - use std::{borrow::Cow, mem}; + use std::{borrow::Cow, iter, mem}; - let mut fixes = - Vec::with_capacity(usize::from(!val.fixes.is_empty()) + val.suggestions.len()); - - if !val.fixes.is_empty() { - let fix_vec = mem::take(&mut val.fixes); - let fix_vec = fix_vec + let fix = if val.fixes.is_empty() { + None + } else { + let fix_vec = mem::take(&mut val.fixes) .into_iter() .map(|fix| crate::fixer::Fix { content: Cow::Owned(fix.text), @@ -747,11 +745,10 @@ impl Message { }) .collect(); - fixes.push(CompositeFix::merge_fixes(fix_vec, source_text)); - } + Some(CompositeFix::merge_fixes(fix_vec, source_text)) + }; - let suggestions = mem::take(&mut val.suggestions); - fixes.extend(suggestions.into_iter().map(|mut suggestion| { + let suggestions = mem::take(&mut val.suggestions).into_iter().map(|mut suggestion| { let last_fix_index = suggestion.fixes.len().wrapping_sub(1); let fix_vec = suggestion .fixes @@ -775,17 +772,12 @@ impl Message { .collect(); CompositeFix::merge_fixes(fix_vec, source_text) - })); + }); - let possible_fix = if fixes.is_empty() { - PossibleFixes::None - } else if fixes.len() == 1 { - PossibleFixes::Single(fixes.into_iter().next().unwrap()) - } else { - PossibleFixes::Multiple(fixes) - }; + #[expect(clippy::from_iter_instead_of_collect)] + let possible_fixes = PossibleFixes::from_iter(iter::chain(fix, suggestions)); - Self::new(val.into(), possible_fix) + Self::new(val.into(), possible_fixes) } }