diff options
author | Casper Beyer <caspervonb@pm.me> | 2020-10-02 19:13:23 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-02 13:13:23 +0200 |
commit | 6825d7f13d51006967c2638b4433fb582cd6ddbc (patch) | |
tree | 89a2bc7860a64b52098797698e3c159d1522088d /core/modules.rs | |
parent | 454de99680db7fdf93bcf0f41beb81d594e17271 (diff) |
fix(cli/repl): use a default referrer when empty (#7794)
This makes use of a default referrer when its empty in repl mode so that
dynamic imports work in the global evaluation context.
Co-authored-by: Bartek Iwanczuk <biwanczuk@gmail.com>
Diffstat (limited to 'core/modules.rs')
-rw-r--r-- | core/modules.rs | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/core/modules.rs b/core/modules.rs index 294bcfb05..235bfeb4e 100644 --- a/core/modules.rs +++ b/core/modules.rs @@ -65,6 +65,7 @@ pub trait ModuleLoader { /// apply import map for child imports. fn resolve( &self, + op_state: Rc<RefCell<OpState>>, specifier: &str, referrer: &str, _is_main: bool, @@ -109,6 +110,7 @@ pub(crate) struct NoopModuleLoader; impl ModuleLoader for NoopModuleLoader { fn resolve( &self, + _op_state: Rc<RefCell<OpState>>, _specifier: &str, _referrer: &str, _is_main: bool, @@ -207,14 +209,23 @@ impl RecursiveModuleLoad { pub async fn prepare(self) -> (ModuleLoadId, Result<Self, AnyError>) { let (module_specifier, maybe_referrer) = match self.state { LoadState::ResolveMain(ref specifier, _) => { - let spec = match self.loader.resolve(specifier, ".", true) { - Ok(spec) => spec, - Err(e) => return (self.id, Err(e)), - }; + let spec = + match self + .loader + .resolve(self.op_state.clone(), specifier, ".", true) + { + Ok(spec) => spec, + Err(e) => return (self.id, Err(e)), + }; (spec, None) } LoadState::ResolveImport(ref specifier, ref referrer) => { - let spec = match self.loader.resolve(specifier, referrer, false) { + let spec = match self.loader.resolve( + self.op_state.clone(), + specifier, + referrer, + false, + ) { Ok(spec) => spec, Err(e) => return (self.id, Err(e)), }; @@ -243,11 +254,13 @@ impl RecursiveModuleLoad { fn add_root(&mut self) -> Result<(), AnyError> { let module_specifier = match self.state { LoadState::ResolveMain(ref specifier, _) => { - self.loader.resolve(specifier, ".", true)? - } - LoadState::ResolveImport(ref specifier, ref referrer) => { - self.loader.resolve(specifier, referrer, false)? + self + .loader + .resolve(self.op_state.clone(), specifier, ".", true)? } + LoadState::ResolveImport(ref specifier, ref referrer) => self + .loader + .resolve(self.op_state.clone(), specifier, referrer, false)?, _ => unreachable!(), }; @@ -571,6 +584,7 @@ mod tests { impl ModuleLoader for MockLoader { fn resolve( &self, + _op_state: Rc<RefCell<OpState>>, specifier: &str, referrer: &str, _is_root: bool, |