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:
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user