summaryrefslogtreecommitdiff
path: root/core/modules/loaders.rs
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2023-06-26 13:54:10 +0200
committerGitHub <noreply@github.com>2023-06-26 13:54:10 +0200
commitad3c494b46c97f0cf91098b7ec2afa576ea7a3dd (patch)
tree2996e36708b4c726c3b5e99b6fbbd8e63fcc121b /core/modules/loaders.rs
parentc7d38e593f7de66af47321e7463d8c15ae4176f2 (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/modules/loaders.rs')
-rw-r--r--core/modules/loaders.rs24
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