diff options
Diffstat (limited to 'core/modules')
-rw-r--r-- | core/modules/loaders.rs | 24 | ||||
-rw-r--r-- | core/modules/tests.rs | 2 |
2 files changed, 25 insertions, 1 deletions
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() }); |