Browse Source

prevent `var undefined = sideEffectyDefault(foo)`

contingency-plan
Rich-Harris 10 years ago
parent
commit
8cb61a9a2f
  1. 6
      src/Module.js
  2. 4
      test/form/unused-default-exports/_config.js
  3. 14
      test/form/unused-default-exports/_expected/amd.js
  4. 12
      test/form/unused-default-exports/_expected/cjs.js
  5. 10
      test/form/unused-default-exports/_expected/es6.js
  6. 14
      test/form/unused-default-exports/_expected/iife.js
  7. 18
      test/form/unused-default-exports/_expected/umd.js
  8. 8
      test/form/unused-default-exports/foo.js
  9. 2
      test/form/unused-default-exports/main.js

6
src/Module.js

@ -636,6 +636,12 @@ export default class Module {
return;
}
// prevent `var undefined = sideEffectyDefault(foo)`
if ( canonicalName === undefined ) {
magicString.remove( statement.start, statement.node.declaration.start );
return;
}
// anonymous functions should be converted into declarations
if ( statement.node.declaration.type === 'FunctionExpression' ) {
magicString.overwrite( statement.node.start, statement.node.declaration.start + 8, `function ${canonicalName}` );

4
test/form/unused-default-exports/_config.js

@ -0,0 +1,4 @@
module.exports = {
description: 'does not name unused-but-included default export',
// solo: true
};

14
test/form/unused-default-exports/_expected/amd.js

@ -0,0 +1,14 @@
define(function () { 'use strict';
var foo = { value: 1 };
function mutate ( obj ) {
obj.value += 1;
return obj;
}
mutate( foo );
assert.equal( foo.value, 2 );
});

12
test/form/unused-default-exports/_expected/cjs.js

@ -0,0 +1,12 @@
'use strict';
var foo = { value: 1 };
function mutate ( obj ) {
obj.value += 1;
return obj;
}
mutate( foo );
assert.equal( foo.value, 2 );

10
test/form/unused-default-exports/_expected/es6.js

@ -0,0 +1,10 @@
var foo = { value: 1 };
function mutate ( obj ) {
obj.value += 1;
return obj;
}
mutate( foo );
assert.equal( foo.value, 2 );

14
test/form/unused-default-exports/_expected/iife.js

@ -0,0 +1,14 @@
(function () { 'use strict';
var foo = { value: 1 };
function mutate ( obj ) {
obj.value += 1;
return obj;
}
mutate( foo );
assert.equal( foo.value, 2 );
})();

18
test/form/unused-default-exports/_expected/umd.js

@ -0,0 +1,18 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
typeof define === 'function' && define.amd ? define(factory) :
factory();
}(this, function () { 'use strict';
var foo = { value: 1 };
function mutate ( obj ) {
obj.value += 1;
return obj;
}
mutate( foo );
assert.equal( foo.value, 2 );
}));

8
test/form/unused-default-exports/foo.js

@ -0,0 +1,8 @@
export var foo = { value: 1 };
function mutate ( obj ) {
obj.value += 1;
return obj;
}
export default mutate( foo );

2
test/form/unused-default-exports/main.js

@ -0,0 +1,2 @@
import { foo } from './foo';
assert.equal( foo.value, 2 );
Loading…
Cancel
Save