summaryrefslogtreecommitdiff
path: root/cli/module_graph.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/module_graph.rs')
-rw-r--r--cli/module_graph.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/cli/module_graph.rs b/cli/module_graph.rs
index a70a124a7..1ca738977 100644
--- a/cli/module_graph.rs
+++ b/cli/module_graph.rs
@@ -1775,7 +1775,7 @@ impl GraphBuilder {
}
Some(Ok(cached_module)) => {
let is_root = &cached_module.specifier == specifier;
- self.visit(cached_module, is_root)?;
+ self.visit(cached_module, is_root, is_dynamic)?;
}
_ => {}
}
@@ -1823,6 +1823,7 @@ impl GraphBuilder {
&mut self,
cached_module: CachedModule,
is_root: bool,
+ is_root_dynamic: bool,
) -> Result<(), AnyError> {
let specifier = cached_module.specifier.clone();
let requested_specifier = cached_module.requested_specifier.clone();
@@ -1859,14 +1860,22 @@ impl GraphBuilder {
for (_, dep) in module.dependencies.iter() {
let maybe_referrer = Some(dep.location.clone());
if let Some(specifier) = dep.maybe_code.as_ref() {
- self.fetch(specifier, &maybe_referrer, dep.is_dynamic);
+ self.fetch(
+ specifier,
+ &maybe_referrer,
+ is_root_dynamic || dep.is_dynamic,
+ );
}
if let Some(specifier) = dep.maybe_type.as_ref() {
- self.fetch(specifier, &maybe_referrer, dep.is_dynamic);
+ self.fetch(
+ specifier,
+ &maybe_referrer,
+ is_root_dynamic || dep.is_dynamic,
+ );
}
}
if let Some((_, specifier)) = module.maybe_types.as_ref() {
- self.fetch(specifier, &None, false);
+ self.fetch(specifier, &None, is_root_dynamic);
}
if specifier != requested_specifier {
self