From 9418822b625b37da3c5d08db3ad5e86f5cd9fd93 Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Tue, 11 Jun 2019 09:32:03 +0200 Subject: [PATCH] Do not tree-shake arguments with side-effects (#2924) --- src/ast/scopes/ParameterScope.ts | 3 ++- .../argument-side-effects/_config.js | 3 +++ .../argument-side-effects/_expected.js | 10 ++++++++++ .../argument-side-effects/main.js | 10 ++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/form/samples/treeshake-excess-arguments/argument-side-effects/_config.js create mode 100644 test/form/samples/treeshake-excess-arguments/argument-side-effects/_expected.js create mode 100644 test/form/samples/treeshake-excess-arguments/argument-side-effects/main.js diff --git a/src/ast/scopes/ParameterScope.ts b/src/ast/scopes/ParameterScope.ts index 4e29d59f6b8..c5823008da7 100644 --- a/src/ast/scopes/ParameterScope.ts +++ b/src/ast/scopes/ParameterScope.ts @@ -58,7 +58,8 @@ export default class ParameterScope extends ChildScope { calledFromTryStatement = true; } } - } else if (!argIncluded && arg.shouldBeIncluded()) { + } + if (!argIncluded && arg.shouldBeIncluded()) { argIncluded = true; } if (argIncluded) { diff --git a/test/form/samples/treeshake-excess-arguments/argument-side-effects/_config.js b/test/form/samples/treeshake-excess-arguments/argument-side-effects/_config.js new file mode 100644 index 00000000000..d2acef03025 --- /dev/null +++ b/test/form/samples/treeshake-excess-arguments/argument-side-effects/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'retains arguments that have side-effects' +}; diff --git a/test/form/samples/treeshake-excess-arguments/argument-side-effects/_expected.js b/test/form/samples/treeshake-excess-arguments/argument-side-effects/_expected.js new file mode 100644 index 00000000000..b92aab28bbc --- /dev/null +++ b/test/form/samples/treeshake-excess-arguments/argument-side-effects/_expected.js @@ -0,0 +1,10 @@ +function sideEffects() { + console.log('print message'); + return true; +} + +function hola(a, b) { + console.log(a); +} + +hola(1, sideEffects()); diff --git a/test/form/samples/treeshake-excess-arguments/argument-side-effects/main.js b/test/form/samples/treeshake-excess-arguments/argument-side-effects/main.js new file mode 100644 index 00000000000..b92aab28bbc --- /dev/null +++ b/test/form/samples/treeshake-excess-arguments/argument-side-effects/main.js @@ -0,0 +1,10 @@ +function sideEffects() { + console.log('print message'); + return true; +} + +function hola(a, b) { + console.log(a); +} + +hola(1, sideEffects());