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