diff --git a/crates/migrator/src/migrations/m_2025_10_16/settings.rs b/crates/migrator/src/migrations/m_2025_10_16/settings.rs index c9a8b7600cbf8842453318ed8dc9b47c3a73beaf..ecca7799454de640bbc71df0be7e86889e18d71b 100644 --- a/crates/migrator/src/migrations/m_2025_10_16/settings.rs +++ b/crates/migrator/src/migrations/m_2025_10_16/settings.rs @@ -37,6 +37,9 @@ fn restore_code_actions_on_format_inner(value: &mut Value, path: &[&str]) -> Res } else { vec![formatter.clone()] }; + if formatter_array.is_empty() { + return Ok(()); + } let mut code_action_formatters = Vec::new(); for formatter in formatter_array { let Some(code_action) = formatter.get("code_action") else { diff --git a/crates/migrator/src/migrator.rs b/crates/migrator/src/migrator.rs index e5f0c584c407284aa175a3ac33f3c9a9e01c1365..1591f039d7f1118877a84214d8340e834e0cac41 100644 --- a/crates/migrator/src/migrator.rs +++ b/crates/migrator/src/migrator.rs @@ -2090,6 +2090,21 @@ mod tests { .unindent(), ), ); + + assert_migrate_settings_with_migrations( + &[MigrationType::Json( + migrations::m_2025_10_16::restore_code_actions_on_format, + )], + &r#"{ + "formatter": [], + "code_actions_on_format": { + "bar": true, + "baz": false + } + }"# + .unindent(), + None, + ); } #[test]