summaryrefslogtreecommitdiff
path: root/core/modules.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules.rs')
-rw-r--r--core/modules.rs31
1 files changed, 23 insertions, 8 deletions
diff --git a/core/modules.rs b/core/modules.rs
index 072de4bc9..5956a7317 100644
--- a/core/modules.rs
+++ b/core/modules.rs
@@ -40,6 +40,7 @@ pub trait Loader: Send + Sync {
specifier: &str,
referrer: &str,
is_main: bool,
+ is_dyn_import: bool,
) -> Result<ModuleSpecifier, ErrBox>;
/// Given ModuleSpecifier, load its source code.
@@ -125,12 +126,15 @@ impl<L: Loader> RecursiveLoad<L> {
fn add_root(&mut self) -> Result<(), ErrBox> {
let module_specifier = match self.state {
- State::ResolveMain(ref specifier) => {
- self.loader.resolve(specifier, ".", true)?
- }
- State::ResolveImport(ref specifier, ref referrer) => {
- self.loader.resolve(specifier, referrer, false)?
- }
+ State::ResolveMain(ref specifier) => self.loader.resolve(
+ specifier,
+ ".",
+ true,
+ self.dyn_import_id().is_some(),
+ )?,
+ State::ResolveImport(ref specifier, ref referrer) => self
+ .loader
+ .resolve(specifier, referrer, false, self.dyn_import_id().is_some())?,
_ => unreachable!(),
};
@@ -160,7 +164,12 @@ impl<L: Loader> RecursiveLoad<L> {
referrer: &str,
parent_id: deno_mod,
) -> Result<(), ErrBox> {
- let module_specifier = self.loader.resolve(specifier, referrer, false)?;
+ let module_specifier = self.loader.resolve(
+ specifier,
+ referrer,
+ false,
+ self.dyn_import_id().is_some(),
+ )?;
let module_name = module_specifier.as_str();
let mut modules = self.modules.lock().unwrap();
@@ -277,7 +286,12 @@ impl<L: Loader> ImportStream for RecursiveLoad<L> {
|specifier: &str, referrer_id: deno_mod| -> deno_mod {
let modules = self.modules.lock().unwrap();
let referrer = modules.get_name(referrer_id).unwrap();
- match self.loader.resolve(specifier, &referrer, is_main) {
+ match self.loader.resolve(
+ specifier,
+ &referrer,
+ is_main,
+ self.dyn_import_id().is_some(),
+ ) {
Ok(specifier) => modules.get_id(specifier.as_str()).unwrap_or(0),
// We should have already resolved and Ready this module, so
// resolve() will not fail this time.
@@ -675,6 +689,7 @@ mod tests {
specifier: &str,
referrer: &str,
_is_root: bool,
+ _is_dyn_import: bool,
) -> Result<ModuleSpecifier, ErrBox> {
let referrer = if referrer == "." {
"file:///"