From f1a62ef0784448193017a668d21072f5595aa2c6 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 5 Nov 2015 10:09:23 -0500 Subject: [PATCH] transform-es2015-classes: check if node.id is null --- .../es6.classes/export-super-class/actual.js | 1 + .../es6.classes/export-super-class/expected.js | 12 ++++++++++++ .../src/index.js | 6 ++++-- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js create mode 100644 packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js diff --git a/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js new file mode 100644 index 0000000000..76170bb418 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js @@ -0,0 +1 @@ +export default class extends A {} diff --git a/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js new file mode 100644 index 0000000000..62032a4013 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js @@ -0,0 +1,12 @@ +var _class = (function (_A) { + babelHelpers.inherits(_class, _A); + + function _class() { + babelHelpers.classCallCheck(this, _class); + return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments)); + } + + return _class; +})(A); + +export default _class; diff --git a/packages/babel-plugin-transform-es2015-classes/src/index.js b/packages/babel-plugin-transform-es2015-classes/src/index.js index ad7dd70135..f2b58353f6 100644 --- a/packages/babel-plugin-transform-es2015-classes/src/index.js +++ b/packages/babel-plugin-transform-es2015-classes/src/index.js @@ -8,13 +8,15 @@ export default function ({ types: t }) { ClassDeclaration(path) { let { node } = path; + let ref = node.id || path.scope.generateUidIdentifier("class"); + if (path.parentPath.isExportDefaultDeclaration()) { path = path.parentPath; - path.insertAfter(t.exportDefaultDeclaration(node.id)); + path.insertAfter(t.exportDefaultDeclaration(ref)); } path.replaceWith(t.variableDeclaration("let", [ - t.variableDeclarator(node.id, t.toExpression(node)) + t.variableDeclarator(ref, t.toExpression(node)) ])); },