From 6ed9c0271d15ef5bbe899ebd403b1fad1ba29991 Mon Sep 17 00:00:00 2001 From: Ben Kunkle Date: Wed, 22 Oct 2025 13:01:45 -0700 Subject: [PATCH] Don't migrate empty formatter array (#40932) Follow up for #40409 Fix for https://github.com/zed-industries/zed/issues/40874#issuecomment-3433759849 Release Notes: - Fixed an issue where having an empty formatter array in your settings `"formatter": []` would result in an erroneous prompt to migrate settings --- .../src/migrations/m_2025_10_16/settings.rs | 3 +++ crates/migrator/src/migrator.rs | 15 +++++++++++++++ 2 files changed, 18 insertions(+) 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 684a331af90ecd097376e629a3eb65a24d0609ae..3fa8c509b1f3910f48603a10a0fd0f448992c151 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 17cedaab666cd3ee53478456fbce8198ae65d8d2..ecf44b13715530b91fbfe0419216a2b5278cdb50 100644 --- a/crates/migrator/src/migrator.rs +++ b/crates/migrator/src/migrator.rs @@ -2092,6 +2092,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]