diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2019-11-25 15:33:23 +0100 |
---|---|---|
committer | Ry Dahl <ry@tinyclouds.org> | 2019-11-25 09:33:23 -0500 |
commit | 658ec2aaf9c7e0d0b4ded4e97a3d89dc2fa25806 (patch) | |
tree | 1996038f0f62ed207fe5a1adb518a299eafbe0c8 /core/modules.rs | |
parent | bca23e64339f9b41272e4a01e4c1a86602e5c1e4 (diff) |
better error message for missing module (#3402)
Diffstat (limited to 'core/modules.rs')
-rw-r--r-- | core/modules.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/core/modules.rs b/core/modules.rs index 9f3434a4f..dd45f554d 100644 --- a/core/modules.rs +++ b/core/modules.rs @@ -48,6 +48,7 @@ pub trait Loader: Send + Sync { fn load( &self, module_specifier: &ModuleSpecifier, + maybe_referrer: Option<ModuleSpecifier>, ) -> Pin<Box<SourceCodeInfoFuture>>; } @@ -154,7 +155,7 @@ impl<L: Loader + Unpin> RecursiveLoad<L> { // integrated into one thing. self .pending - .push(self.loader.load(&module_specifier).boxed()); + .push(self.loader.load(&module_specifier, None).boxed()); self.state = State::LoadingRoot; Ok(()) @@ -166,6 +167,8 @@ impl<L: Loader + Unpin> RecursiveLoad<L> { referrer: &str, parent_id: deno_mod, ) -> Result<(), ErrBox> { + let referrer_specifier = ModuleSpecifier::resolve_url(referrer) + .expect("Referrer should be a valid specifier"); let module_specifier = self.loader.resolve( specifier, referrer, @@ -181,9 +184,10 @@ impl<L: Loader + Unpin> RecursiveLoad<L> { if !modules.is_registered(module_name) && !self.is_pending.contains(&module_specifier) { - self - .pending - .push(self.loader.load(&module_specifier).boxed()); + let fut = self + .loader + .load(&module_specifier, Some(referrer_specifier.clone())); + self.pending.push(fut.boxed()); self.is_pending.insert(module_specifier); } @@ -739,6 +743,7 @@ mod tests { fn load( &self, module_specifier: &ModuleSpecifier, + _maybe_referrer: Option<ModuleSpecifier>, ) -> Pin<Box<SourceCodeInfoFuture>> { let mut loads = self.loads.lock().unwrap(); loads.push(module_specifier.to_string()); |