From ad3c494b46c97f0cf91098b7ec2afa576ea7a3dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 26 Jun 2023 13:54:10 +0200 Subject: =?UTF-8?q?Revert=20"Reland=20"refactor(core):=20cleanup=20feature?= =?UTF-8?q?=20flags=20for=20js=20source=20i=E2=80=A6=20(#19611)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …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 ``` --- core/modules/loaders.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'core/modules/loaders.rs') 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 -- cgit v1.2.3