From 6a6f564ff9663022506667d1c2761d2e029bfe7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Sat, 27 Apr 2024 16:27:00 +0900 Subject: [PATCH] `unresolved_ctxt` --- .../turbopack-ecmascript/src/tree_shake/graph.rs | 15 +++++++++++++-- crates/turbopack-ecmascript/src/tree_shake/mod.rs | 2 +- .../turbopack-ecmascript/src/tree_shake/tests.rs | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/crates/turbopack-ecmascript/src/tree_shake/graph.rs b/crates/turbopack-ecmascript/src/tree_shake/graph.rs index 0e74939cf9ea5..50692e9f170cf 100644 --- a/crates/turbopack-ecmascript/src/tree_shake/graph.rs +++ b/crates/turbopack-ecmascript/src/tree_shake/graph.rs @@ -10,7 +10,7 @@ use petgraph::{ }; use rustc_hash::{FxHashMap, FxHashSet, FxHasher}; use swc_core::{ - common::{util::take::Take, DUMMY_SP}, + common::{util::take::Take, SyntaxContext, DUMMY_SP}, ecma::{ ast::{ op, ClassDecl, Decl, DefaultDecl, ExportDecl, ExportNamedSpecifier, ExportSpecifier, @@ -541,7 +541,11 @@ impl DepGraph { } /// Fills information per module items - pub(super) fn init(&mut self, module: &Module) -> (Vec, FxHashMap) { + pub(super) fn init( + &mut self, + module: &Module, + unresolved_ctxt: SyntaxContext, + ) -> (Vec, FxHashMap) { let mut exports = vec![]; let mut items = FxHashMap::default(); let mut ids = vec![]; @@ -896,12 +900,19 @@ impl DepGraph { used_ids.write.extend(extra_ids.write); } + let side_effects = used_ids + .read + .iter() + .chain(used_ids.write.iter()) + .any(|id| id.1 == unresolved_ctxt); + let data = ItemData { read_vars: used_ids.read, eventual_read_vars: captured_ids.read, write_vars: used_ids.write, eventual_write_vars: captured_ids.write, content: item.clone(), + side_effects, ..Default::default() }; diff --git a/crates/turbopack-ecmascript/src/tree_shake/mod.rs b/crates/turbopack-ecmascript/src/tree_shake/mod.rs index 002cbc05132d3..c7795b004112b 100644 --- a/crates/turbopack-ecmascript/src/tree_shake/mod.rs +++ b/crates/turbopack-ecmascript/src/tree_shake/mod.rs @@ -66,7 +66,7 @@ impl Analyzer<'_> { unresolved_ctxt: SyntaxContext, ) -> (DepGraph, FxHashMap) { let mut g = DepGraph::default(); - let (item_ids, mut items) = g.init(module); + let (item_ids, mut items) = g.init(module, unresolved_ctxt); let mut analyzer = Analyzer { g: &mut g, diff --git a/crates/turbopack-ecmascript/src/tree_shake/tests.rs b/crates/turbopack-ecmascript/src/tree_shake/tests.rs index d22ab0064647d..f3aa20a787785 100644 --- a/crates/turbopack-ecmascript/src/tree_shake/tests.rs +++ b/crates/turbopack-ecmascript/src/tree_shake/tests.rs @@ -72,7 +72,7 @@ fn run(input: PathBuf) { )); let mut g = DepGraph::default(); - let (item_ids, mut items) = g.init(&module); + let (item_ids, mut items) = g.init(&module, unresolved_ctxt); let mut s = String::new();