Browse Source

correctly rewrite exported var declarations (fixes #484)

gh-669
Rich-Harris 9 years ago
parent
commit
366b414151
  1. 7
      src/Module.js
  2. 9
      test/function/disappearing-exported-value/_config.js
  3. 2
      test/function/disappearing-exported-value/answer.js
  4. 8
      test/function/disappearing-exported-value/main.js

7
src/Module.js

@ -440,7 +440,12 @@ export default class Module {
const declaration = this.declarations[ declarator.id.name ];
if ( declaration.exportName && declaration.isReassigned ) { // `var foo = ...` becomes `exports.foo = ...`
magicString.remove( statement.start, declarator.init ? declarator.start : statement.next );
if ( declarator.init ) {
magicString.overwrite( statement.start, declarator.init.start, `exports.${declaration.exportName} = ` );
} else {
magicString.remove( statement.start, declarator.init ? declarator.start : statement.next );
}
return;
}
}

9
test/function/disappearing-exported-value/_config.js

@ -0,0 +1,9 @@
var assert = require( 'assert' );
module.exports = {
description: 'exported values do not mysteriously disappear (#484)',
exports: function ( exports ) {
assert.equal( exports.exportedAnswer, 42 );
assert.equal( exports.foo(), 42 );
}
};

2
test/function/disappearing-exported-value/answer.js

@ -0,0 +1,2 @@
var answer = 42;
export { answer };

8
test/function/disappearing-exported-value/main.js

@ -0,0 +1,8 @@
import { answer as importedAnswer } from './answer.js';
export { answer as exportedAnswer } from './answer.js';
export function foo () {
var value;
value = importedAnswer;
return value;
}
Loading…
Cancel
Save