mirror of
https://github.com/denoland/deno.git
synced 2024-12-23 15:49:44 -05:00
fix(compile): preserve granular unstable features (#21827)
Fix https://github.com/denoland/deno/issues/21814
This commit is contained in:
parent
49d8320e45
commit
13279cb0ab
4 changed files with 35 additions and 0 deletions
|
@ -138,6 +138,7 @@ pub enum NodeModules {
|
|||
pub struct Metadata {
|
||||
pub argv: Vec<String>,
|
||||
pub unstable: bool,
|
||||
pub unstable_features: Vec<String>,
|
||||
pub seed: Option<u64>,
|
||||
pub permissions: PermissionsOptions,
|
||||
pub location: Option<Url>,
|
||||
|
@ -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(),
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -1123,3 +1123,29 @@ fn dynamic_imports_tmp_lit() {
|
|||
let output = context.new_command().name(&exe).run();
|
||||
output.assert_matches_text("a\nb\n{ data: 5 }\n{ data: 1 }\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn granular_unstable_features() {
|
||||
let context = TestContextBuilder::new().build();
|
||||
let dir = context.temp_dir();
|
||||
let exe = if cfg!(windows) {
|
||||
dir.path().join("app.exe")
|
||||
} else {
|
||||
dir.path().join("app")
|
||||
};
|
||||
let output = context
|
||||
.new_command()
|
||||
.args_vec([
|
||||
"compile",
|
||||
"--output",
|
||||
&exe.to_string_lossy(),
|
||||
"--unstable-kv",
|
||||
"./compile/unstable_features.ts",
|
||||
])
|
||||
.run();
|
||||
output.assert_exit_code(0);
|
||||
output.skip_output_check();
|
||||
let output = context.new_command().name(&exe).run();
|
||||
output.assert_exit_code(0);
|
||||
output.assert_matches_text("Kv {}\n");
|
||||
}
|
||||
|
|
2
cli/tests/testdata/compile/unstable_features.ts
vendored
Normal file
2
cli/tests/testdata/compile/unstable_features.ts
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
const db = await Deno.openKv();
|
||||
console.log(db);
|
Loading…
Reference in a new issue