From d8339d56973706db88f035c8dceb6bcb6f606826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Segersv=C3=A4rd?= Date: Wed, 26 Aug 2015 16:29:18 +0200 Subject: [PATCH] Removed unused `findDefiningStatement`. --- src/Bundle.js | 21 +++++---------------- src/ExternalModule.js | 5 +---- src/Module.js | 34 ++++++++++++++++++++-------------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/src/Bundle.js b/src/Bundle.js index 4742e68..0b46897 100644 --- a/src/Bundle.js +++ b/src/Bundle.js @@ -137,15 +137,10 @@ export default class Bundle { if ( statement.isIncluded ) return; keys( statement.modifies ).forEach( name => { - const definingStatement = module.definitions[ name ]; - const exportDeclaration = module.exports[ name ] || module.reexports[ name ] || ( - module.exports.default && module.exports.default.identifier === name && module.exports.default - ); + const local = module.locals.lookup( name ); + const exported = module.exports.lookup( name ); - const shouldMark = ( definingStatement && definingStatement.isIncluded ) || - ( exportDeclaration && exportDeclaration.isUsed ); - - if ( shouldMark ) { + if ( local && local.module === module || exported && exported.isUsed ) { settled = false; statement.mark(); return; @@ -153,14 +148,8 @@ export default class Bundle { // special case - https://github.com/rollup/rollup/pull/40 // TODO refactor this? it's a bit confusing - const importDeclaration = module.imports[ name ]; - if ( !importDeclaration || importDeclaration.module.isExternal ) return; - - const otherExportDeclaration = importDeclaration.module.exports[ importDeclaration.name ]; // TODO things like `export default a + b` don't apply here... right? - const otherDefiningStatement = module.findDefiningStatement( otherExportDeclaration.localName ); - - if ( !otherDefiningStatement ) return; + if ( !local || !local.statement || !local.module || local.module.isExternal ) return; settled = false; statement.mark(); @@ -230,7 +219,7 @@ export default class Bundle { let magicString = new MagicString.Bundle({ separator: '\n\n' }); this.orderedModules.forEach( module => { - const source = module.render( allBundleExports, format ); + const source = module.render( allBundleExports, format === 'es6' ); if ( source.toString().length ) { magicString.addSource( source ); } diff --git a/src/ExternalModule.js b/src/ExternalModule.js index 185f634..2af7b9b 100644 --- a/src/ExternalModule.js +++ b/src/ExternalModule.js @@ -17,6 +17,7 @@ export default class ExternalModule { this.needsNamed = false; this.needsAll = false; + bundle.scope.define( this.name, this ); this.exports = bundle.scope.virtual(); const ref = this.exports.reference; @@ -44,8 +45,4 @@ export default class ExternalModule { return ref.call( this.exports, name ); }; } - - findDefiningStatement () { - return null; - } } diff --git a/src/Module.js b/src/Module.js index 7a4ea03..e4e9a9f 100644 --- a/src/Module.js +++ b/src/Module.js @@ -106,9 +106,9 @@ export default class Module { // If the default export has an identifier, bind to it. this.exports.bind( 'default', this.locals.reference( identifier ) ); } else { - this.exports.define( this.name, { - originalName: 'default', - name: 'default', + this.exports.define( 'default', { + originalName: this.name, + name: this.name, module: this, statement, @@ -328,12 +328,6 @@ export default class Module { return this.name; } - findDefiningStatement ( name ) { - if ( this.definitions[ name ] ) return this.definitions[ name ]; - - return null; - } - getModule ( source ) { return this.bundle.moduleById[ this.resolvedIds[ source ] ]; } @@ -488,7 +482,7 @@ export default class Module { return statements; } - render ( toExport ) { + render ( toExport, direct ) { let magicString = this.magicString.clone(); this.statements.forEach( statement => { @@ -533,6 +527,18 @@ export default class Module { let replacements = blank(); let bundleExports = blank(); + // Indirect identifier access. + if ( !direct ) { + keys( statement.dependsOn ) + .forEach( name => { + const id = this.locals.lookup( name ); + + if ( id.module && id.module.isExternal ) { + replacements[ name ] = `${id.module.name}.${id.originalName}`; + } + }); + } + keys( statement.dependsOn ) .concat( keys( statement.defines ) ) .forEach( name => { @@ -564,10 +570,10 @@ export default class Module { const canonicalName = this.defaultName(); // FIXME: dunno what to do here yet. - // if ( statement.node.declaration.type === 'Identifier' && canonicalName === ( moduleReplacements[ statement.node.declaration.name ] || statement.node.declaration.name ) ) { - // magicString.remove( statement.start, statement.next ); - // return; - // } + if ( statement.node.declaration.type === 'Identifier' && canonicalName === ( replacements[ statement.node.declaration.name ] || statement.node.declaration.name ) ) { + magicString.remove( statement.start, statement.next ); + return; + } // prevent `var undefined = sideEffectyDefault(foo)` if ( canonicalName === undefined ) {