Merge pull request #3119 from loganfsmyth/default-export-generator-6733
Ensure that generator functions always have an identifier - fixes T6733
This commit is contained in:
commit
53877ec158
@ -141,6 +141,12 @@ function getOuterFnExpr(funPath) {
|
||||
let node = funPath.node;
|
||||
t.assertFunction(node);
|
||||
|
||||
if (!node.id){
|
||||
// Default-exported function declarations, and function expressions may not
|
||||
// have a name to reference, so we explicitly add one.
|
||||
node.id = funPath.scope.parent.generateUidIdentifier("callee");
|
||||
}
|
||||
|
||||
if (node.generator && // Non-generator functions don't need to be marked.
|
||||
t.isFunctionDeclaration(node)) {
|
||||
let pp = funPath.findParent(function (path) {
|
||||
@ -166,9 +172,7 @@ function getOuterFnExpr(funPath) {
|
||||
);
|
||||
}
|
||||
|
||||
return node.id || (
|
||||
node.id = funPath.scope.parent.generateUidIdentifier("callee")
|
||||
);
|
||||
return node.id;
|
||||
}
|
||||
|
||||
function getRuntimeMarkDecl(blockPath) {
|
||||
|
||||
4
packages/babel-plugin-transform-regenerator/test/fixtures/regression/6733/actual.js
vendored
Normal file
4
packages/babel-plugin-transform-regenerator/test/fixtures/regression/6733/actual.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export default function * () {
|
||||
var x = yield 5;
|
||||
return 5;
|
||||
}
|
||||
27
packages/babel-plugin-transform-regenerator/test/fixtures/regression/6733/expected.js
vendored
Normal file
27
packages/babel-plugin-transform-regenerator/test/fixtures/regression/6733/expected.js
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = _callee;
|
||||
|
||||
var _marked = [_callee].map(regeneratorRuntime.mark);
|
||||
|
||||
function _callee() {
|
||||
var x;
|
||||
return regeneratorRuntime.wrap(function _callee$(_context) {
|
||||
while (1) switch (_context.prev = _context.next) {
|
||||
case 0:
|
||||
_context.next = 2;
|
||||
return 5;
|
||||
|
||||
case 2:
|
||||
x = _context.sent;
|
||||
return _context.abrupt("return", 5);
|
||||
|
||||
case 4:
|
||||
case "end":
|
||||
return _context.stop();
|
||||
}
|
||||
}, _marked[0], this);
|
||||
}
|
||||
5
packages/babel-plugin-transform-regenerator/test/fixtures/regression/options.json
vendored
Normal file
5
packages/babel-plugin-transform-regenerator/test/fixtures/regression/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
"es2015"
|
||||
]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user