From d1d667f9a8b1dda7ac69394d6e49a4691fda93aa Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Fri, 30 Dec 2016 11:34:35 -0500 Subject: [PATCH] ignore var inits in dead branches - fixes #1198 --- src/ast/nodes/IfStatement.js | 5 +++-- test/function/vars-with-init-in-dead-branch/_config.js | 9 +++++++++ test/function/vars-with-init-in-dead-branch/main.js | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test/function/vars-with-init-in-dead-branch/_config.js create mode 100644 test/function/vars-with-init-in-dead-branch/main.js diff --git a/src/ast/nodes/IfStatement.js b/src/ast/nodes/IfStatement.js index 87c8792..a16d3ca 100644 --- a/src/ast/nodes/IfStatement.js +++ b/src/ast/nodes/IfStatement.js @@ -17,9 +17,10 @@ function handleVarDeclarations ( node, scope ) { function visit ( node ) { if ( node.type === 'VariableDeclaration' && node.kind === 'var' ) { - node.initialise( scope ); - node.declarations.forEach( declarator => { + declarator.init = null; + declarator.initialise( scope ); + extractNames( declarator.id ).forEach( name => { if ( !~hoistedVars.indexOf( name ) ) hoistedVars.push( name ); }); diff --git a/test/function/vars-with-init-in-dead-branch/_config.js b/test/function/vars-with-init-in-dead-branch/_config.js new file mode 100644 index 0000000..c3a1c46 --- /dev/null +++ b/test/function/vars-with-init-in-dead-branch/_config.js @@ -0,0 +1,9 @@ +module.exports = { + description: 'handles vars with init in dead branch (#1198)', + warnings: [ + { + code: 'EMPTY_BUNDLE', + message: 'Generated an empty bundle' + } + ] +}; diff --git a/test/function/vars-with-init-in-dead-branch/main.js b/test/function/vars-with-init-in-dead-branch/main.js new file mode 100644 index 0000000..a2c1863 --- /dev/null +++ b/test/function/vars-with-init-in-dead-branch/main.js @@ -0,0 +1,4 @@ +if ( false ) { + var foo = []; + var bar = foo.concat( 'x' ); +}