Skip to content

Commit 1e2634f

Browse files
committed
manual side effects flagging should override automatic analysis
1 parent c937292 commit 1e2634f

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

lib/NormalModule.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,8 +868,10 @@ class NormalModule extends Module {
868868
* @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
869869
*/
870870
getSideEffectsConnectionState(moduleGraph) {
871-
if (this.factoryMeta !== undefined && this.factoryMeta.sideEffectFree)
872-
return false;
871+
if (this.factoryMeta !== undefined) {
872+
if (this.factoryMeta.sideEffectFree) return false;
873+
if (this.factoryMeta.sideEffectFree === false) return true;
874+
}
873875
if (this.buildMeta !== undefined && this.buildMeta.sideEffectFree) {
874876
if (this._isEvaluatingSideEffects)
875877
return ModuleGraphConnection.CIRCULAR_CONNECTION;

lib/optimize/SideEffectsFlagPlugin.js

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,16 @@ class SideEffectsFlagPlugin {
8282
resolveData.relativePath
8383
) {
8484
const sideEffects = resolveData.descriptionFileData.sideEffects;
85-
const hasSideEffects = SideEffectsFlagPlugin.moduleHasSideEffects(
86-
resolveData.relativePath,
87-
sideEffects,
88-
cache
89-
);
90-
if (!hasSideEffects) {
85+
if (sideEffects !== undefined) {
9186
if (module.factoryMeta === undefined) {
9287
module.factoryMeta = {};
9388
}
94-
module.factoryMeta.sideEffectFree = true;
89+
const hasSideEffects = SideEffectsFlagPlugin.moduleHasSideEffects(
90+
resolveData.relativePath,
91+
sideEffects,
92+
cache
93+
);
94+
module.factoryMeta.sideEffectFree = !hasSideEffects;
9595
}
9696
}
9797

@@ -101,15 +101,11 @@ class SideEffectsFlagPlugin {
101101
normalModuleFactory.hooks.module.tap(
102102
"SideEffectsFlagPlugin",
103103
(module, data) => {
104-
if (data.settings.sideEffects === false) {
104+
if (typeof data.settings.sideEffects === "boolean") {
105105
if (module.factoryMeta === undefined) {
106106
module.factoryMeta = {};
107107
}
108-
module.factoryMeta.sideEffectFree = true;
109-
} else if (data.settings.sideEffects === true) {
110-
if (module.factoryMeta !== undefined) {
111-
module.factoryMeta.sideEffectFree = false;
112-
}
108+
module.factoryMeta.sideEffectFree = !data.settings.sideEffects;
113109
}
114110
return module;
115111
}

0 commit comments

Comments
 (0)