diff options
author | Bartek Iwańczuk <biwanczuk@gmail.com> | 2023-06-26 13:54:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-26 13:54:10 +0200 |
commit | ad3c494b46c97f0cf91098b7ec2afa576ea7a3dd (patch) | |
tree | 2996e36708b4c726c3b5e99b6fbbd8e63fcc121b /core | |
parent | c7d38e593f7de66af47321e7463d8c15ae4176f2 (diff) |
Revert "Reland "refactor(core): cleanup feature flags for js source i… (#19611)
…nclusion" (#19519)"
This reverts commit 28a4f3d0f5383695b1d49ccdc8b0f799a715b2c2.
This change causes failures when used outside Deno repo:
```
============================================================
Deno has panicked. This is a bug in Deno. Please report this
at https://github.com/denoland/deno/issues/new.
If you can reliably reproduce this panic, include the
reproduction steps and re-run with the RUST_BACKTRACE=1 env
var set and include the backtrace in your report.
Platform: linux x86_64
Version: 1.34.3+b37b286
Args: ["/opt/hostedtoolcache/deno/0.0.0-b37b286f7fa68d5656f7c180f6127bdc38cf2cf5/x64/deno", "test", "--doc", "--unstable", "--allow-all", "--coverage=./cov"]
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failed to read "/home/runner/work/deno/deno/core/00_primordials.js"
Caused by:
No such file or directory (os error 2)', core/runtime/jsruntime.rs:699:8
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
Diffstat (limited to 'core')
-rw-r--r-- | core/00_primordials.js | 12 | ||||
-rw-r--r-- | core/01_core.js | 7 | ||||
-rw-r--r-- | core/02_error.js | 7 | ||||
-rw-r--r-- | core/Cargo.toml | 11 | ||||
-rw-r--r-- | core/extensions.rs | 148 | ||||
-rw-r--r-- | core/modules/loaders.rs | 24 | ||||
-rw-r--r-- | core/modules/tests.rs | 2 | ||||
-rw-r--r-- | core/runtime/jsruntime.rs | 59 | ||||
-rw-r--r-- | core/runtime/ops.rs | 2 | ||||
-rw-r--r-- | core/runtime/snapshot_util.rs | 5 | ||||
-rw-r--r-- | core/runtime/tests.rs | 46 |
11 files changed, 171 insertions, 152 deletions
diff --git a/core/00_primordials.js b/core/00_primordials.js index 998bfc7ab..60474e649 100644 --- a/core/00_primordials.js +++ b/core/00_primordials.js @@ -34,14 +34,6 @@ "use strict"; (() => { - // Provide bootstrap namespace - globalThis.__bootstrap ??= {}; - const key = Symbol.for("00_primordials.js"); - if (globalThis.__bootstrap[key]) { - return; - } - globalThis.__bootstrap[key] = true; - const primordials = {}; const { @@ -305,7 +297,6 @@ ArrayPrototypeJoin, ArrayPrototypeMap, FunctionPrototypeCall, - ObjectAssign, ObjectDefineProperty, ObjectFreeze, ObjectPrototypeIsPrototypeOf, @@ -619,5 +610,6 @@ ObjectSetPrototypeOf(primordials, null); ObjectFreeze(primordials); - ObjectAssign(globalThis.__bootstrap, { primordials }); + // Provide bootstrap namespace + globalThis.__bootstrap = { primordials }; })(); diff --git a/core/01_core.js b/core/01_core.js index 44da702ad..d4a6508cb 100644 --- a/core/01_core.js +++ b/core/01_core.js @@ -38,13 +38,6 @@ URIError, setQueueMicrotask, } = window.__bootstrap.primordials; - - const key = SymbolFor("01_core.js"); - if (globalThis.__bootstrap[key]) { - return; - } - globalThis.__bootstrap[key] = true; - const { ops, asyncOps } = window.Deno.core; const build = { diff --git a/core/02_error.js b/core/02_error.js index c082486f4..b29dc9b4e 100644 --- a/core/02_error.js +++ b/core/02_error.js @@ -14,15 +14,8 @@ ArrayPrototypePush, ArrayPrototypeMap, ArrayPrototypeJoin, - SymbolFor, } = window.__bootstrap.primordials; - const key = SymbolFor("02_error.js"); - if (globalThis.__bootstrap[key]) { - return; - } - globalThis.__bootstrap[key] = true; - // Keep in sync with `cli/fmt_errors.rs`. function formatLocation(cse) { if (cse.isNative) { diff --git a/core/Cargo.toml b/core/Cargo.toml index b89fe7585..05da36f55 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -16,12 +16,7 @@ path = "lib.rs" [features] default = ["v8_use_custom_libcxx"] v8_use_custom_libcxx = ["v8/use_custom_libcxx"] -# Enable to exclude extension!() JS sources from the binary (e.g. if they are already snapshotted). -exclude_js_sources = [] -# Read extension!() JS sources at 'runtime' instead of statically including them. They will be read -# from their `CARGO_MANIFEST_DIR`-based paths, so it should only to be used in build and dev scripts -# where these paths are available. Overrides `exclude_js_sources`. -runtime_js_sources = ["exclude_js_sources"] +include_js_files_for_snapshotting = [] [dependencies] anyhow.workspace = true @@ -49,8 +44,6 @@ v8.workspace = true name = "http_bench_json_ops" path = "examples/http_bench_json_ops/main.rs" -[dev-dependencies] -deno_core = { workspace = true, features = ["runtime_js_sources"] } - # These dependencies are only used for the 'http_bench_*_ops' examples. +[dev-dependencies] deno_ast.workspace = true diff --git a/core/extensions.rs b/core/extensions.rs index 62390d054..fa6d7851e 100644 --- a/core/extensions.rs +++ b/core/extensions.rs @@ -17,10 +17,10 @@ pub enum ExtensionFileSourceCode { /// snapshot, the other the static string in the `Extension`. IncludedInBinary(&'static str), - /// Source code is loaded from a file on disk at 'runtime'. It's meant to be - /// used in build and dev scripts using the `runtime_js_sources` feature, - /// likely to create snapshots. - LoadAtRuntime(PathBuf), + // Source code is loaded from a file on disk. It's meant to be used if the + // embedder is creating snapshots. Files will be loaded from the filesystem + // during the build time and they will only be present in the V8 snapshot. + LoadedFromFsDuringSnapshot(PathBuf), } #[derive(Clone, Debug)] @@ -45,7 +45,7 @@ impl ExtensionFileSource { ); Ok(ModuleCode::from_static(code)) } - ExtensionFileSourceCode::LoadAtRuntime(path) => { + ExtensionFileSourceCode::LoadedFromFsDuringSnapshot(path) => { let msg = || format!("Failed to read \"{}\"", path.display()); let s = std::fs::read_to_string(path).with_context(msg)?; debug_assert!( @@ -168,6 +168,7 @@ macro_rules! ops { /// * bounds: a comma-separated list of additional type bounds, eg: `bounds = [ P::MyAssociatedType: MyTrait ]` /// * ops: a comma-separated list of [`OpDecl`]s to provide, eg: `ops = [ op_foo, op_bar ]` /// * esm: a comma-separated list of ESM module filenames (see [`include_js_files`]), eg: `esm = [ dir "dir", "my_file.js" ]` +/// * esm_setup_script: see [`ExtensionBuilder::esm_setup_script`] /// * js: a comma-separated list of JS filenames (see [`include_js_files`]), eg: `js = [ dir "dir", "my_file.js" ]` /// * config: a structure-like definition for configuration parameters which will be required when initializing this extension, eg: `config = { my_param: Option<usize> }` /// * middleware: an [`OpDecl`] middleware function with the signature `fn (OpDecl) -> OpDecl` @@ -184,8 +185,8 @@ macro_rules! extension { $(, ops = [ $( $(#[$m:meta])* $( $op:ident )::+ $( < $( $op_param:ident ),* > )? ),+ $(,)? ] )? $(, esm_entry_point = $esm_entry_point:literal )? $(, esm = [ $( dir $dir_esm:literal , )? $( $esm:literal ),* $(,)? ] )? + $(, esm_setup_script = $esm_setup_script:expr )? $(, js = [ $( dir $dir_js:literal , )? $( $js:literal ),* $(,)? ] )? - $(, force_include_js_sources $($force_include_js_sources:block)? )? // dummy variable $(, options = { $( $options_id:ident : $options_type:ty ),* $(,)? } )? $(, middleware = $middleware_fn:expr )? $(, state = $state_fn:expr )? @@ -210,15 +211,21 @@ macro_rules! extension { #[inline(always)] #[allow(unused_variables)] fn with_js(ext: &mut $crate::ExtensionBuilder) { - ext.esm( - $crate::include_js_files!( $name $( force_include_js_sources $($force_include_js_sources)?, )? $( $( dir $dir_esm , )? $( $esm , )* )? ) - ); + $( ext.esm( + $crate::include_js_files!( $name $( dir $dir_esm , )? $( $esm , )* ) + ); )? + $( + ext.esm(vec![ExtensionFileSource { + specifier: "ext:setup", + code: ExtensionFileSourceCode::IncludedInBinary($esm_setup_script), + }]); + )? $( ext.esm_entry_point($esm_entry_point); )? - ext.js( - $crate::include_js_files!( $name $( force_include_js_sources $($force_include_js_sources)?, )? $( $( dir $dir_js , )? $( $js , )* )? ) - ); + $( ext.js( + $crate::include_js_files!( $name $( dir $dir_js , )? $( $js , )* ) + ); )? } // If ops were specified, add those ops to the extension. @@ -278,7 +285,7 @@ macro_rules! extension { } #[allow(dead_code)] - pub fn init_ext $( < $( $param : $type + 'static ),+ > )? ( $( $( $options_id : $options_type ),* )? ) -> $crate::Extension + pub fn init_ops_and_esm $( < $( $param : $type + 'static ),+ > )? ( $( $( $options_id : $options_type ),* )? ) -> $crate::Extension $( where $( $bound : $bound_type ),+ )? { let mut ext = Self::ext(); @@ -289,6 +296,17 @@ macro_rules! extension { Self::with_customizer(&mut ext); ext.take() } + + #[allow(dead_code)] + pub fn init_ops $( < $( $param : $type + 'static ),+ > )? ( $( $( $options_id : $options_type ),* )? ) -> $crate::Extension + $( where $( $bound : $bound_type ),+ )? + { + let mut ext = Self::ext(); + Self::with_ops $( ::< $( $param ),+ > )?(&mut ext); + Self::with_state_and_middleware $( ::< $( $param ),+ > )?(&mut ext, $( $( $options_id , )* )? ); + Self::with_customizer(&mut ext); + ext.take() + } } }; @@ -331,8 +349,8 @@ macro_rules! extension { #[derive(Default)] pub struct Extension { pub(crate) name: &'static str, - js_files: Vec<ExtensionFileSource>, - esm_files: Vec<ExtensionFileSource>, + js_files: Option<Vec<ExtensionFileSource>>, + esm_files: Option<Vec<ExtensionFileSource>>, esm_entry_point: Option<&'static str>, ops: Option<Vec<OpDecl>>, opstate_fn: Option<Box<OpStateFn>>, @@ -388,12 +406,12 @@ impl Extension { /// returns JS source code to be loaded into the isolate (either at snapshotting, /// or at startup). as a vector of a tuple of the file name, and the source code. - pub fn get_js_sources(&self) -> &Vec<ExtensionFileSource> { - &self.js_files + pub fn get_js_sources(&self) -> Option<&Vec<ExtensionFileSource>> { + self.js_files.as_ref() } - pub fn get_esm_sources(&self) -> &Vec<ExtensionFileSource> { - &self.esm_files + pub fn get_esm_sources(&self) -> Option<&Vec<ExtensionFileSource>> { + self.esm_files.as_ref() } pub fn get_esm_entry_point(&self) -> Option<&'static str> { @@ -514,11 +532,13 @@ impl ExtensionBuilder { /// Consume the [`ExtensionBuilder`] and return an [`Extension`]. pub fn take(self) -> Extension { + let js_files = Some(self.js); + let esm_files = Some(self.esm); let ops = Some(self.ops); let deps = Some(self.deps); Extension { - js_files: self.js, - esm_files: self.esm, + js_files, + esm_files, esm_entry_point: self.esm_entry_point, ops, opstate_fn: self.state, @@ -533,11 +553,13 @@ impl ExtensionBuilder { } pub fn build(&mut self) -> Extension { + let js_files = Some(std::mem::take(&mut self.js)); + let esm_files = Some(std::mem::take(&mut self.esm)); let ops = Some(std::mem::take(&mut self.ops)); let deps = Some(std::mem::take(&mut self.deps)); Extension { - js_files: std::mem::take(&mut self.js), - esm_files: std::mem::take(&mut self.esm), + js_files, + esm_files, esm_entry_point: self.esm_entry_point.take(), ops, opstate_fn: self.state.take(), @@ -586,58 +608,54 @@ impl ExtensionBuilder { /// - "ext:my_extension/js/01_hello.js" /// - "ext:my_extension/js/02_goodbye.js" /// ``` -#[cfg(all( - feature = "exclude_js_sources", - not(feature = "runtime_js_sources"), -))] +#[cfg(not(feature = "include_js_files_for_snapshotting"))] #[macro_export] macro_rules! include_js_files { - ($name:ident $(dir $dir:literal,)? $($file:literal,)*) => { - vec![] - }; - - ($name:ident force_include_js_sources $($dummy:block)?, $($file:literal,)*) => { - vec![$($crate::include_js_file!($name $file)),*] + ($name:ident dir $dir:literal, $($file:literal,)+) => { + vec![ + $($crate::ExtensionFileSource { + specifier: concat!("ext:", stringify!($name), "/", $file), + code: $crate::ExtensionFileSourceCode::IncludedInBinary( + include_str!(concat!($dir, "/", $file) + )), + },)+ + ] }; - ($name:ident force_include_js_sources $($dummy:block)?, dir $dir:literal, $($file:literal,)*) => { - vec![$($crate::include_js_file!($name dir $dir, $file)),*] + ($name:ident $($file:literal,)+) => { + vec![ + $($crate::ExtensionFileSource { + specifier: concat!("ext:", stringify!($name), "/", $file), + code: $crate::ExtensionFileSourceCode::IncludedInBinary( + include_str!($file) + ), + },)+ + ] }; } -#[cfg(not(all( - feature = "exclude_js_sources", - not(feature = "runtime_js_sources"), -)))] +#[cfg(feature = "include_js_files_for_snapshotting")] #[macro_export] macro_rules! include_js_files { - ($name:ident $(force_include_js_sources $($dummy:block)?,)? $($file:literal,)*) => { - vec![$($crate::include_js_file!($name $file)),*] + ($name:ident dir $dir:literal, $($file:literal,)+) => { + vec![ + $($crate::ExtensionFileSource { + specifier: concat!("ext:", stringify!($name), "/", $file), + code: $crate::ExtensionFileSourceCode::LoadedFromFsDuringSnapshot( + std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join($dir).join($file) + ), + },)+ + ] }; - ($name:ident $(force_include_js_sources $($dummy:block)?,)? dir $dir:literal, $($file:literal,)*) => { - vec![$($crate::include_js_file!($name dir $dir, $file)),*] - }; -} - -#[cfg(not(feature = "runtime_js_sources"))] -#[macro_export] -macro_rules! include_js_file { - ($ext_name:ident $(dir $dir:literal,)? $file:literal) => { - $crate::ExtensionFileSource { - specifier: concat!("ext:", stringify!($ext_name), "/", $file), - code: $crate::ExtensionFileSourceCode::IncludedInBinary(include_str!(concat!($($dir, "/",)? $file))), - } - }; -} - -#[cfg(feature = "runtime_js_sources")] -#[macro_export] -macro_rules! include_js_file { - ($ext_name:ident $(dir $dir:literal,)? $file:literal) => { - $crate::ExtensionFileSource { - specifier: concat!("ext:", stringify!($ext_name), "/", $file), - code: $crate::ExtensionFileSourceCode::LoadAtRuntime(std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"))$(.join($dir))?.join($file)), - } + ($name:ident $($file:literal,)+) => { + vec![ + $($crate::ExtensionFileSource { + specifier: concat!("ext:", stringify!($name), "/", $file), + code: $crate::ExtensionFileSourceCode::LoadedFromFsDuringSnapshot( + std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join($file) + ), + },)+ + ] }; } diff --git a/core/modules/loaders.rs b/core/modules/loaders.rs index fc0ab2deb..d4dbf1ec2 100644 --- a/core/modules/loaders.rs +++ b/core/modules/loaders.rs @@ -119,6 +119,7 @@ impl ExtModuleLoader { extensions .iter() .flat_map(|e| e.get_esm_sources()) + .flatten() .map(|s| (s.specifier.to_string(), s.clone())), ); ExtModuleLoader { @@ -178,6 +179,29 @@ impl ModuleLoader for ExtModuleLoader { } } +impl Drop for ExtModuleLoader { + fn drop(&mut self) { + let sources = self.sources.get_mut(); + let used_specifiers = self.used_specifiers.get_mut(); + let unused_modules: Vec<_> = sources + .iter() + .filter(|(k, _)| !used_specifiers.contains(k.as_str())) + .collect(); + + if !unused_modules.is_empty() { + let mut msg = + "Following modules were passed to ExtModuleLoader but never used:\n" + .to_string(); + for m in unused_modules { + msg.push_str(" - "); + msg.push_str(m.0); + msg.push('\n'); + } + panic!("{}", msg); + } + } +} + /// Basic file system module loader. /// /// Note that this loader will **block** event loop diff --git a/core/modules/tests.rs b/core/modules/tests.rs index 103019412..0eb7ce514 100644 --- a/core/modules/tests.rs +++ b/core/modules/tests.rs @@ -342,7 +342,7 @@ fn test_mods() { deno_core::extension!(test_ext, ops = [op_test]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], module_loader: Some(loader), ..Default::default() }); diff --git a/core/runtime/jsruntime.rs b/core/runtime/jsruntime.rs index e6b531d61..2e473e7c9 100644 --- a/core/runtime/jsruntime.rs +++ b/core/runtime/jsruntime.rs @@ -505,7 +505,7 @@ impl JsRuntime { maybe_load_callback: Option<ExtModuleLoaderCb>, ) -> JsRuntime { let init_mode = InitMode::from_options(&options); - let (op_state, ops) = Self::create_opstate(&mut options); + let (op_state, ops) = Self::create_opstate(&mut options, init_mode); let op_state = Rc::new(RefCell::new(op_state)); // Collect event-loop middleware @@ -844,25 +844,29 @@ impl JsRuntime { for extension in &extensions { let maybe_esm_entry_point = extension.get_esm_entry_point(); - for file_source in extension.get_esm_sources() { - self - .load_side_module( - &ModuleSpecifier::parse(file_source.specifier)?, - None, - ) - .await?; + if let Some(esm_files) = extension.get_esm_sources() { + for file_source in esm_files { + self + .load_side_module( + &ModuleSpecifier::parse(file_source.specifier)?, + None, + ) + .await?; + } } if let Some(entry_point) = maybe_esm_entry_point { esm_entrypoints.push(entry_point); } - for file_source in extension.get_js_sources() { - realm.execute_script( - self.v8_isolate(), - file_source.specifier, - file_source.load()?, - )?; + if let Some(js_files) = extension.get_js_sources() { + for file_source in js_files { + realm.execute_script( + self.v8_isolate(), + file_source.specifier, + file_source.load()?, + )?; + } } if extension.is_core { @@ -880,16 +884,6 @@ impl JsRuntime { panic!("{} not present in the module map", specifier) }) }; - { - let module_map_rc = self.module_map.clone(); - let module_map = module_map_rc.borrow(); - let handle = module_map.handles.get(mod_id).unwrap().clone(); - let mut scope = realm.handle_scope(self.v8_isolate()); - let handle = v8::Local::new(&mut scope, handle); - if handle.get_status() == v8::ModuleStatus::Evaluated { - continue; - } - } let receiver = self.mod_evaluate(mod_id); self.run_event_loop(false).await?; receiver @@ -973,11 +967,20 @@ impl JsRuntime { } /// Initializes ops of provided Extensions - fn create_opstate(options: &mut RuntimeOptions) -> (OpState, Vec<OpDecl>) { + fn create_opstate( + options: &mut RuntimeOptions, + init_mode: InitMode, + ) -> (OpState, Vec<OpDecl>) { // Add built-in extension - options - .extensions - .insert(0, crate::ops_builtin::core::init_ext()); + if init_mode == InitMode::FromSnapshot { + options + .extensions + .insert(0, crate::ops_builtin::core::init_ops()); + } else { + options + .extensions + .insert(0, crate::ops_builtin::core::init_ops_and_esm()); + } let ops = Self::collect_ops(&mut options.extensions); diff --git a/core/runtime/ops.rs b/core/runtime/ops.rs index 84b578aeb..5e51414d3 100644 --- a/core/runtime/ops.rs +++ b/core/runtime/ops.rs @@ -250,7 +250,7 @@ mod tests { test: &'static str, ) -> Result<(), AnyError> { let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![testing::init_ext()], + extensions: vec![testing::init_ops_and_esm()], ..Default::default() }); runtime diff --git a/core/runtime/snapshot_util.rs b/core/runtime/snapshot_util.rs index dba1bc233..88c273147 100644 --- a/core/runtime/snapshot_util.rs +++ b/core/runtime/snapshot_util.rs @@ -57,9 +57,12 @@ pub fn create_snapshot( .iter() .flat_map(|e| vec![e.get_esm_sources(), e.get_js_sources()]) .flatten() + .flatten() { use crate::ExtensionFileSourceCode; - if let ExtensionFileSourceCode::LoadAtRuntime(path) = &source.code { + if let ExtensionFileSourceCode::LoadedFromFsDuringSnapshot(path) = + &source.code + { files_loaded_during_snapshot.push(path.clone()); } } diff --git a/core/runtime/tests.rs b/core/runtime/tests.rs index faabef0c4..88c62e280 100644 --- a/core/runtime/tests.rs +++ b/core/runtime/tests.rs @@ -100,7 +100,7 @@ fn setup(mode: Mode) -> (JsRuntime, Arc<AtomicUsize>) { } ); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext(mode, dispatch_count.clone())], + extensions: vec![test_ext::init_ops(mode, dispatch_count.clone())], get_error_class_fn: Some(&|error| { crate::error::get_custom_error_class(error).unwrap() }), @@ -515,7 +515,7 @@ async fn test_error_builder() { deno_core::extension!(test_ext, ops = [op_err]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], get_error_class_fn: Some(&get_error_class_name), ..Default::default() }); @@ -1114,7 +1114,7 @@ async fn test_error_context() { deno_core::extension!(test_ext, ops = [op_err_sync, op_err_async]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1274,7 +1274,7 @@ async fn test_async_opstate_borrow() { state = |state| state.put(InnerState(42)) ); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1305,7 +1305,7 @@ async fn test_sync_op_serialize_object_with_numbers_as_keys() { ops = [op_sync_serialize_object_with_numbers_as_keys] ); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1347,7 +1347,7 @@ async fn test_async_op_serialize_object_with_numbers_as_keys() { ops = [op_async_serialize_object_with_numbers_as_keys] ); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1383,7 +1383,7 @@ async fn test_set_macrotask_callback_set_next_tick_callback() { deno_core::extension!(test_ext, ops = [op_async_sleep]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1438,7 +1438,7 @@ fn test_has_tick_scheduled() { deno_core::extension!(test_ext, ops = [op_macrotask, op_next_tick]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1578,7 +1578,7 @@ async fn test_set_promise_reject_callback() { deno_core::extension!(test_ext, ops = [op_promise_reject]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1717,7 +1717,7 @@ async fn test_set_promise_reject_callback_top_level_await() { } let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], module_loader: Some(Rc::new(ModsLoader)), ..Default::default() }); @@ -1742,7 +1742,7 @@ fn test_op_return_serde_v8_error() { deno_core::extension!(test_ext, ops = [op_err]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); assert!(runtime @@ -1767,7 +1767,7 @@ fn test_op_high_arity() { deno_core::extension!(test_ext, ops = [op_add_4]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); let r = runtime @@ -1790,7 +1790,7 @@ fn test_op_disabled() { deno_core::extension!(test_ext, ops_fn = ops); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); let err = runtime @@ -1817,7 +1817,7 @@ fn test_op_detached_buffer() { deno_core::extension!(test_ext, ops = [op_sum_take, op_boomerang]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -1886,7 +1886,7 @@ fn test_op_unstable_disabling() { middleware = |op| if op.is_unstable { op.disable() } else { op } ); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); runtime @@ -1934,7 +1934,7 @@ fn js_realm_init() { deno_core::extension!(test_ext, ops = [op_test]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); let realm = runtime.create_realm().unwrap(); @@ -1963,7 +1963,7 @@ fn js_realm_init_snapshot() { deno_core::extension!(test_ext, ops = [op_test]); let mut runtime = JsRuntime::new(RuntimeOptions { startup_snapshot: Some(Snapshot::Boxed(snapshot)), - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); let realm = runtime.create_realm().unwrap(); @@ -1993,7 +1993,7 @@ fn js_realm_sync_ops() { deno_core::extension!(test_ext, ops = [op_test]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], get_error_class_fn: Some(&|error| { crate::error::get_custom_error_class(error).unwrap() }), @@ -2041,7 +2041,7 @@ async fn js_realm_async_ops() { deno_core::extension!(test_ext, ops = [op_test]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], get_error_class_fn: Some(&|error| { crate::error::get_custom_error_class(error).unwrap() }), @@ -2118,7 +2118,7 @@ async fn js_realm_gc() { deno_core::extension!(test_ext, ops = [op_pending]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -2165,7 +2165,7 @@ async fn js_realm_ref_unref_ops() { deno_core::extension!(test_ext, ops = [op_pending]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); @@ -2265,7 +2265,7 @@ fn duplicate_op_names() { deno_core::extension!(test_ext, ops = [a::op_test, op_test]); JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); } @@ -2284,7 +2284,7 @@ fn ops_in_js_have_proper_names() { deno_core::extension!(test_ext, ops = [op_test_sync, op_test_async]); let mut runtime = JsRuntime::new(RuntimeOptions { - extensions: vec![test_ext::init_ext()], + extensions: vec![test_ext::init_ops()], ..Default::default() }); |