diff options
author | HasanAlrimawi <141642411+HasanAlrimawi@users.noreply.github.com> | 2024-07-03 02:15:10 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-02 23:15:10 +0000 |
commit | 3324d7203e8d00bb39cfae104e0aec61ba954e9b (patch) | |
tree | d5d2b612bca91fd8d5045ca4326c5ff12fcb51dd /cli/args/mod.rs | |
parent | 7d919f6fd980ed54785e86892a518f0bdf68f475 (diff) |
fix(compile): prevent setting unstable feature twice (#24381)
Prevent panic when enabling a feature that is already enabled by
removing duplicate features.
Closes #22015
---------
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/args/mod.rs')
-rw-r--r-- | cli/args/mod.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/cli/args/mod.rs b/cli/args/mod.rs index e1e6f9510..bf52c460f 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1773,14 +1773,28 @@ impl CliOptions { .map(|c| c.json.unstable.clone()) .unwrap_or_default(); - from_config_file.extend_from_slice(&self.flags.unstable_config.features); + self + .flags + .unstable_config + .features + .iter() + .for_each(|feature| { + if !from_config_file.contains(feature) { + from_config_file.push(feature.to_string()); + } + }); if *DENO_FUTURE { - from_config_file.extend_from_slice(&[ + let future_features = [ deno_runtime::deno_ffi::UNSTABLE_FEATURE_NAME.to_string(), deno_runtime::deno_fs::UNSTABLE_FEATURE_NAME.to_string(), deno_runtime::deno_webgpu::UNSTABLE_FEATURE_NAME.to_string(), - ]); + ]; + future_features.iter().for_each(|future_feature| { + if !from_config_file.contains(future_feature) { + from_config_file.push(future_feature.to_string()); + } + }); } from_config_file |