diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 0667156ff6c..b5a7bc03404 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -6,7 +6,6 @@ import { GetManualChunk, HasModuleSideEffects, NormalizedInputOptions, - NormalizedTreeshakingOptions, ResolvedId, ResolveIdResult, SourceDescription @@ -51,8 +50,9 @@ export class ModuleLoader { private readonly options: NormalizedInputOptions, private readonly pluginDriver: PluginDriver ) { - this.hasModuleSideEffects = - (options.treeshake as NormalizedTreeshakingOptions)?.moduleSideEffects || (() => true); + this.hasModuleSideEffects = options.treeshake + ? options.treeshake.moduleSideEffects + : () => true; } async addEntryModules( diff --git a/src/ast/nodes/CallExpression.ts b/src/ast/nodes/CallExpression.ts index 95439e77ed8..d440a3fb8e1 100644 --- a/src/ast/nodes/CallExpression.ts +++ b/src/ast/nodes/CallExpression.ts @@ -155,7 +155,7 @@ export default class CallExpression extends NodeBase implements DeoptimizableEnt if (argument.hasEffects(context)) return true; } if ( - (this.context.options.treeshake as NormalizedTreeshakingOptions)?.annotations && + (this.context.options.treeshake as NormalizedTreeshakingOptions).annotations && this.annotatedPure ) return false; diff --git a/src/ast/nodes/NewExpression.ts b/src/ast/nodes/NewExpression.ts index 0279dd1ee7f..280df11bc13 100644 --- a/src/ast/nodes/NewExpression.ts +++ b/src/ast/nodes/NewExpression.ts @@ -26,7 +26,7 @@ export default class NewExpression extends NodeBase { if (argument.hasEffects(context)) return true; } if ( - (this.context.options.treeshake as NormalizedTreeshakingOptions)?.annotations && + (this.context.options.treeshake as NormalizedTreeshakingOptions).annotations && this.annotatedPure ) return false; diff --git a/src/ast/nodes/TryStatement.ts b/src/ast/nodes/TryStatement.ts index c9bd213427c..0727b671c89 100644 --- a/src/ast/nodes/TryStatement.ts +++ b/src/ast/nodes/TryStatement.ts @@ -15,7 +15,7 @@ export default class TryStatement extends StatementBase { hasEffects(context: HasEffectsContext): boolean { return ( - ((this.context.options.treeshake as NormalizedTreeshakingOptions)?.tryCatchDeoptimization + ((this.context.options.treeshake as NormalizedTreeshakingOptions).tryCatchDeoptimization ? this.block.body.length > 0 : this.block.hasEffects(context)) || (this.finalizer !== null && this.finalizer.hasEffects(context)) diff --git a/test/form/samples/no-treeshake/_expected/amd.js b/test/form/samples/no-treeshake/_expected/amd.js index 4148d7a90bd..8358fa23eb0 100644 --- a/test/form/samples/no-treeshake/_expected/amd.js +++ b/test/form/samples/no-treeshake/_expected/amd.js @@ -45,6 +45,10 @@ define(['exports', 'external'], function (exports, external) { 'use strict'; } }); + try { + const x = 1; + } catch {} + exports.create = create; exports.getPrototypeOf = getPrototypeOf; exports.quux = quux; diff --git a/test/form/samples/no-treeshake/_expected/cjs.js b/test/form/samples/no-treeshake/_expected/cjs.js index 27872bf8fba..132fbdc7110 100644 --- a/test/form/samples/no-treeshake/_expected/cjs.js +++ b/test/form/samples/no-treeshake/_expected/cjs.js @@ -49,6 +49,10 @@ test({ } }); +try { + const x = 1; +} catch {} + exports.create = create; exports.getPrototypeOf = getPrototypeOf; exports.quux = quux; diff --git a/test/form/samples/no-treeshake/_expected/es.js b/test/form/samples/no-treeshake/_expected/es.js index b147a6d2916..8570fcb406f 100644 --- a/test/form/samples/no-treeshake/_expected/es.js +++ b/test/form/samples/no-treeshake/_expected/es.js @@ -45,4 +45,8 @@ test({ } }); +try { + const x = 1; +} catch {} + export { create, getPrototypeOf, quux, quux as strange }; diff --git a/test/form/samples/no-treeshake/_expected/iife.js b/test/form/samples/no-treeshake/_expected/iife.js index 5a4250d595e..d5d2cf2893d 100644 --- a/test/form/samples/no-treeshake/_expected/iife.js +++ b/test/form/samples/no-treeshake/_expected/iife.js @@ -46,6 +46,10 @@ var stirred = (function (exports, external) { } }); + try { + const x = 1; + } catch {} + exports.create = create; exports.getPrototypeOf = getPrototypeOf; exports.quux = quux; diff --git a/test/form/samples/no-treeshake/_expected/system.js b/test/form/samples/no-treeshake/_expected/system.js index 7efce8dae51..cbcfbad47d8 100644 --- a/test/form/samples/no-treeshake/_expected/system.js +++ b/test/form/samples/no-treeshake/_expected/system.js @@ -52,6 +52,10 @@ System.register('stirred', ['external'], function (exports) { } }); + try { + const x = 1; + } catch {} + } }; }); diff --git a/test/form/samples/no-treeshake/_expected/umd.js b/test/form/samples/no-treeshake/_expected/umd.js index 2d469f68437..ba892127e2a 100644 --- a/test/form/samples/no-treeshake/_expected/umd.js +++ b/test/form/samples/no-treeshake/_expected/umd.js @@ -49,6 +49,10 @@ } }); + try { + const x = 1; + } catch {} + exports.create = create; exports.getPrototypeOf = getPrototypeOf; exports.quux = quux; diff --git a/test/form/samples/no-treeshake/main.js b/test/form/samples/no-treeshake/main.js index fbd642ea623..47ab0fff75a 100644 --- a/test/form/samples/no-treeshake/main.js +++ b/test/form/samples/no-treeshake/main.js @@ -42,3 +42,7 @@ test({ var unused = 1; } }); + +try { + const x = 1; +} catch {}