Browse Source

ensure external modules have names, and that those names take priority (#42)

contingency-plan
Rich-Harris 10 years ago
parent
commit
d81acf600b
  1. 31
      src/Bundle.js

31
src/Bundle.js

@ -99,6 +99,22 @@ export default class Bundle {
let definers = blank();
let conflicts = blank();
// Assign names to external modules
this.externalModules.forEach( module => {
// TODO is this right?
let name = makeLegalIdentifier( module.suggestedNames['*'] || module.suggestedNames.default || module.id );
if ( definers[ name ] ) {
conflicts[ name ] = true;
} else {
definers[ name ] = [];
}
definers[ name ].push( module );
module.name = name;
this.assumedGlobals[ name ] = true;
});
// Discover conflicts (i.e. two statements in separate modules both define `foo`)
this.statements.forEach( statement => {
const module = statement.module;
@ -131,21 +147,6 @@ export default class Bundle {
});
});
// Assign names to external modules
this.externalModules.forEach( module => {
// TODO is this right?
let name = makeLegalIdentifier( module.suggestedNames['*'] || module.suggestedNames.default || module.id );
if ( definers[ name ] ) {
conflicts[ name ] = true;
} else {
definers[ name ] = [];
}
definers[ name ].push( module );
module.name = name;
});
// Ensure we don't conflict with globals
keys( this.assumedGlobals ).forEach( name => {
if ( definers[ name ] ) {

Loading…
Cancel
Save