diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T6750/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T6750/actual.js new file mode 100644 index 0000000000..61cc1477c0 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T6750/actual.js @@ -0,0 +1,6 @@ +export default function() { + return class Select { + query(query) { + } + } +} diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T6750/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T6750/expected.js new file mode 100644 index 0000000000..233d75891b --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T6750/expected.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +function _default() { + return (function () { + function Select() { + babelHelpers.classCallCheck(this, Select); + } + + babelHelpers.createClass(Select, [{ + key: "query", + value: function query(_query) {} + }]); + return Select; + })(); +} +exports.default = _default; diff --git a/packages/babel-traverse/src/scope/lib/renamer.js b/packages/babel-traverse/src/scope/lib/renamer.js index 3d36fcc16d..6c5fddc8dd 100644 --- a/packages/babel-traverse/src/scope/lib/renamer.js +++ b/packages/babel-traverse/src/scope/lib/renamer.js @@ -40,6 +40,14 @@ export default class Renamer { // build specifiers that point back to this export declaration let isDefault = exportDeclar.isExportDefaultDeclaration(); + + if (isDefault && (parentDeclar.isFunctionDeclaration() || + parentDeclar.isClassDeclaration())&& !parentDeclar.node.id) { + // Ensure that default class and function exports have a name so they have a identifier to + // reference from the export specifier list. + parentDeclar.node.id = parentDeclar.scope.generateUidIdentifier("default"); + } + let bindingIdentifiers = parentDeclar.getOuterBindingIdentifiers(); let specifiers = [];