From f37d8881e20b01549f58c390fd0d6f16f227dc35 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Sun, 14 Jan 2024 13:05:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/plugin/inner_graph_plugin.rs | 8 ++++++++ .../src/plugin/side_effects_flag_plugin.rs | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/rspack_plugin_javascript/src/plugin/inner_graph_plugin.rs b/crates/rspack_plugin_javascript/src/plugin/inner_graph_plugin.rs index e5d4e847b6c4..0097492adbba 100644 --- a/crates/rspack_plugin_javascript/src/plugin/inner_graph_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/inner_graph_plugin.rs @@ -85,6 +85,7 @@ pub struct InnerGraphPlugin<'a> { rewrite_usage_span: &'a mut HashMap, import_map: &'a ImportMap, pub comments: Option, + pub in_named: bool, } impl<'a> Visit for InnerGraphPlugin<'a> { @@ -311,6 +312,9 @@ impl<'a> Visit for InnerGraphPlugin<'a> { let usage = if let Some(symbol) = self.get_top_level_symbol() { InnerGraphMapUsage::TopLevel(symbol) } else { + if self.in_named { + return; + } InnerGraphMapUsage::True }; self.add_usage(ident.sym.clone(), usage); @@ -411,7 +415,10 @@ impl<'a> Visit for InnerGraphPlugin<'a> { } } *self.rewrite_usage_span = rewrite_usage_span; + let in_named = self.in_named; + self.in_named = true; named_export.visit_children_with(self); + self.in_named = in_named; } fn visit_export_default_expr(&mut self, node: &ExportDefaultExpr) { if !self.is_enabled() { @@ -527,6 +534,7 @@ impl<'a> InnerGraphPlugin<'a> { rewrite_usage_span, import_map, comments, + in_named: false, } } diff --git a/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs b/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs index c8f60aa9001a..851e5ce412e0 100644 --- a/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs +++ b/crates/rspack_plugin_javascript/src/plugin/side_effects_flag_plugin.rs @@ -279,7 +279,7 @@ pub fn is_pure_expression<'a>( Expr::Call(call) => is_pure_call_expr(call, unresolved_ctxt, comments), _ => !expr.may_have_side_effects(&ExprCtx { unresolved_ctxt, - is_unresolved_ref_safe: false, + is_unresolved_ref_safe: true, }), } }