fix: replace unreachable!() with proper error returns for DeepSeek providers (#835)

Three `unreachable!()` calls panicked if `save_api_key_for` or the API key
apply path ever received a DeepSeek/DeepseekCN variant past the early-return
guard. Replace them with explicit `Err` returns so a future refactor that
breaks the guard produces a recoverable error instead of a crash.
This commit is contained in:
Ziang Xie
2026-05-06 16:38:30 +08:00
committed by GitHub
parent 4994ce99f8
commit 69714819f8
2 changed files with 14 additions and 3 deletions
+10 -2
View File
@@ -2528,7 +2528,11 @@ pub fn save_api_key_for(provider: ApiProvider, api_key: &str) -> Result<PathBuf>
ensure_parent_dir(&config_path)?;
let table_name = match provider {
ApiProvider::Deepseek | ApiProvider::DeepseekCN => unreachable!(),
ApiProvider::Deepseek | ApiProvider::DeepseekCN => {
return Err(anyhow::anyhow!(
"save_api_key_for: DeepSeek variants must use the root api_key field, not provider-specific storage"
));
}
ApiProvider::NvidiaNim => "providers.nvidia_nim",
ApiProvider::Openrouter => "providers.openrouter",
ApiProvider::Novita => "providers.novita",
@@ -2556,7 +2560,11 @@ pub fn save_api_key_for(provider: ApiProvider, api_key: &str) -> Result<PathBuf>
.as_table_mut()
.context("`providers` must be a table.")?;
let key_inside = match provider {
ApiProvider::Deepseek | ApiProvider::DeepseekCN => unreachable!(),
ApiProvider::Deepseek | ApiProvider::DeepseekCN => {
return Err(anyhow::anyhow!(
"save_api_key_for: DeepSeek variants must use the root api_key field, not provider-specific storage"
));
}
ApiProvider::NvidiaNim => "nvidia_nim",
ApiProvider::Openrouter => "openrouter",
ApiProvider::Novita => "novita",
+4 -1
View File
@@ -5520,7 +5520,10 @@ async fn apply_provider_picker_api_key(
.providers
.get_or_insert_with(ProvidersConfig::default);
let entry: &mut ProviderConfig = match provider {
ApiProvider::Deepseek | ApiProvider::DeepseekCN => unreachable!(),
ApiProvider::Deepseek | ApiProvider::DeepseekCN => {
// Guarded by the outer `if` above; safety net against refactors.
return;
}
ApiProvider::NvidiaNim => &mut providers.nvidia_nim,
ApiProvider::Openrouter => &mut providers.openrouter,
ApiProvider::Novita => &mut providers.novita,