From 13279cb0ab5f0573fe846d55c7e031ac4731436d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sat, 6 Jan 2024 15:01:09 +0100 Subject: fix(compile): preserve granular unstable features (#21827) Fix https://github.com/denoland/deno/issues/21814 --- cli/standalone/binary.rs | 2 ++ cli/standalone/mod.rs | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'cli/standalone') diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs index 91cb09fb7..18880b7a1 100644 --- a/cli/standalone/binary.rs +++ b/cli/standalone/binary.rs @@ -138,6 +138,7 @@ pub enum NodeModules { pub struct Metadata { pub argv: Vec, pub unstable: bool, + pub unstable_features: Vec, pub seed: Option, pub permissions: PermissionsOptions, pub location: Option, @@ -542,6 +543,7 @@ impl<'a> DenoCompileBinaryWriter<'a> { let metadata = Metadata { argv: compile_flags.args.clone(), unstable: cli_options.unstable(), + unstable_features: cli_options.unstable_features(), seed: cli_options.seed(), location: cli_options.location_flag().clone(), permissions: cli_options.permissions_options(), diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 32ae771c1..47a660fe1 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -488,6 +488,11 @@ pub async fn run( if metadata.unstable { checker.enable_legacy_unstable(); } + for feature in metadata.unstable_features { + // `metadata` is valid for the whole lifetime of the program, so we + // can leak the string here. + checker.enable_feature(feature.leak()); + } checker }); let worker_factory = CliMainWorkerFactory::new( -- cgit v1.2.3