From 1dc3669b52a6493d723a04fdb1521e0e79e51439 Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Sat, 31 Oct 2015 21:13:17 -0400 Subject: [PATCH] ignore changes local to a function when determining global side-effects --- src/utils/testForSideEffects.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/utils/testForSideEffects.js b/src/utils/testForSideEffects.js index 9df2ef4..93d8cb8 100644 --- a/src/utils/testForSideEffects.js +++ b/src/utils/testForSideEffects.js @@ -82,10 +82,12 @@ export default function testForSideEffects ( node, scope, statement, strongDepen let subject = node[ modifierNodes[ node.type ] ]; while ( subject.type === 'MemberExpression' ) subject = subject.object; - const declaration = statement.module.trace( subject.name ); + if ( !scope.findDeclaration( subject.name ) ) { + const declaration = statement.module.trace( subject.name ); - if ( !declaration || declaration.isExternal || declaration.statement.isIncluded ) { - hasSideEffect = true; + if ( !declaration || declaration.isExternal || declaration.isUsed ) { + hasSideEffect = true; + } } } },