Compare commits

...

9 Commits

Author SHA1 Message Date
Sebastian McKenzie
39854dc088 v4.4.3 2015-02-21 18:13:10 +11:00
Sebastian McKenzie
81132aa942 add 4.4.3 changelog 2015-02-21 18:08:32 +11:00
Sebastian McKenzie
5ba2e6254b check if iterator has a return method before calling it when breaking in a for...of - #838 2015-02-21 18:00:43 +11:00
Sebastian McKenzie
61ea720637 don't traverse into replacement breaks in for-of transformer - thanks @zloirock 2015-02-21 17:55:38 +11:00
Sebastian McKenzie
55357a331d rename selfContained transformer to runtime 2015-02-21 17:20:59 +11:00
Sebastian McKenzie
5deaeba3a0 4.4.2 2015-02-21 14:31:52 +11:00
Sebastian McKenzie
a38ae381e2 v4.4.2 2015-02-21 14:31:07 +11:00
Sebastian McKenzie
9a2e56f003 add moduleId option for specifying a custom module id 2015-02-21 14:29:26 +11:00
Sebastian McKenzie
5bc78b0237 4.4.1 2015-02-21 14:23:36 +11:00
42 changed files with 62 additions and 38 deletions

View File

@@ -13,6 +13,19 @@ _Note: Gaps between patch versions are faulty/broken releases._
See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog.
## 4.4.3
* **Bug Fix**
* Fix `for...of` iterator break returns being duplicated.
* Only call `return` on the iterator if it exists.
* **Internal**
* Rename `selfContained` transformer to `runtime`.
## 4.4.2
* **New Feature**
* Add `moduleId` option for specifying a custom module id.
## 4.4.0
* **New Feature**

View File

@@ -89,7 +89,7 @@ File.validOptions = [
"compact",
"resolveModuleSource",
"getModuleName",
"moduleId",
// legacy
"format",
@@ -138,6 +138,10 @@ File.prototype.normalizeOptions = function (opts) {
opts.sourceRoot = slash(opts.sourceRoot);
}
if (opts.moduleId) {
opts.moduleIds = true;
}
opts.basename = path.basename(opts.filename, path.extname(opts.filename));
opts.blacklist = util.arrayify(opts.blacklist);
@@ -172,7 +176,7 @@ File.prototype.normalizeOptions = function (opts) {
}
if (opts.externalHelpers) {
this.set("runtimeIdentifier", t.identifier("babelHelpers"));
this.set("helpersNamespace", t.identifier("babelHelpers"));
}
opts.blacklist = transform._ensureTransformerNames("blacklist", opts.blacklist);
@@ -329,7 +333,7 @@ File.prototype.addHelper = function (name) {
var declar = program._declarations && program._declarations[name];
if (declar) return declar.id;
var runtime = this.get("runtimeIdentifier");
var runtime = this.get("helpersNamespace");
if (runtime) {
name = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, name);

View File

@@ -146,7 +146,7 @@ DefaultFormatter.prototype.isLocalReference = function (node, scope) {
DefaultFormatter.prototype.getModuleName = function () {
var opts = this.file.opts;
if (opts.getModuleName) return opts.getModuleName(opts.filename);
if (opts.moduleId) return opts.moduleId;
var filenameRelative = opts.filenameRelative;
var moduleName = "";

View File

@@ -1 +1,3 @@
{}
{
"selfContained": "runtime"
}

View File

@@ -53,8 +53,9 @@ var breakVisitor = {
var ret = t.expressionStatement(
t.callExpression(t.memberExpression(state.iteratorKey, t.identifier("return")), [])
);
if (state.wrapReturn) ret = state.wrapReturn(ret);
ret = state.wrapReturn(ret);
this.skip();
return [ret, node];
}
}
@@ -99,7 +100,13 @@ var loose = function (node, parent, scope, file) {
scope.traverse(node, breakVisitor, {
iteratorKey: iteratorKey,
wrapReturn: function (node) {
return t.ifStatement(t.unaryExpression("!", isArrayKey, true), node);
return t.ifStatement(
t.logicalExpression(
"&&",
t.unaryExpression("!", isArrayKey, true),
t.memberExpression(iteratorKey, t.identifier("return")
)
), node);
},
label: t.isLabeledStatement(parent) && parent.label.name
});
@@ -145,6 +152,9 @@ var spec = function (node, parent, scope, file) {
scope.traverse(node, breakVisitor, {
iteratorKey: iteratorKey,
wrapReturn: function (node) {
return t.ifStatement(t.memberExpression(iteratorKey, t.identifier("return")), node);
},
label: t.isLabeledStatement(parent) && parent.label.name
});

View File

@@ -79,7 +79,7 @@ module.exports = {
// needs to be after `regenerator` due to needing `regeneratorRuntime` references
// needs to be after `es6.forOf` due to needing `Symbol.iterator` references
// needs to be before `es6.modules` due to dynamic imports
selfContained: require("./other/self-contained"),
runtime: require("./other/runtime"),
// needs to be before `_blockHoist` due to function hoisting etc
"es6.modules": require("./es6/modules"),

View File

@@ -82,7 +82,7 @@ exports.Program = function (node, parent, scope, file) {
};
exports.pre = function (file) {
file.setDynamic("runtimeIdentifier", function () {
file.setDynamic("helpersNamespace", function () {
return file.addImport("babel-runtime/helpers", "babelHelpers");
});

View File

@@ -1,7 +1,7 @@
{
"name": "babel",
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
"version": "4.4.1",
"version": "4.4.3",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
"repository": "babel/babel",

View File

@@ -1,7 +1,7 @@
{
"name": "babel-runtime",
"description": "babel selfContained runtime",
"version": "4.3.0",
"version": "4.4.2",
"repository": "babel/babel",
"author": "Sebastian McKenzie <sebmck@gmail.com>"
}

View File

@@ -17,7 +17,7 @@ foo: for (var _iterator = foo(), _isArray = Array.isArray(_iterator), _i = 0, _i
var x = _ref;
while (true) {
if (!_isArray) _iterator["return"]();
if (!_isArray && _iterator["return"]) _iterator["return"]();
break foo;
}
@@ -55,7 +55,7 @@ foo: for (var _iterator3 = foo(), _isArray3 = Array.isArray(_iterator3), _i3 = 0
}
var x = _ref3;
if (!_isArray3) _iterator3["return"]();
if (!_isArray3 && _iterator3["return"]) _iterator3["return"]();
break foo;
}
@@ -75,7 +75,7 @@ for (var _iterator4 = foo(), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _it
}
var x = _ref4;
if (!_isArray4) _iterator4["return"]();
if (!_isArray4 && _iterator4["return"]) _iterator4["return"]();
break;
}

View File

@@ -6,7 +6,7 @@ foo: for (var _iterator = foo()[Symbol.iterator](), _step; !(_step = _iterator.n
var x = _step.value;
while (true) {
_iterator["return"]();
if (_iterator["return"]) _iterator["return"]();
break foo;
}
@@ -22,8 +22,7 @@ foo: for (var _iterator2 = foo()[Symbol.iterator](), _step2; !(_step2 = _iterato
foo: for (var _iterator3 = foo()[Symbol.iterator](), _step3; !(_step3 = _iterator3.next()).done;) {
var x = _step3.value;
_iterator3["return"]();
if (_iterator3["return"]) _iterator3["return"]();
break foo;
}
@@ -32,8 +31,7 @@ foo: for (var _iterator3 = foo()[Symbol.iterator](), _step3; !(_step3 = _iterato
for (var _iterator4 = foo()[Symbol.iterator](), _step4; !(_step4 = _iterator4.next()).done;) {
var x = _step4.value;
_iterator4["return"]();
if (_iterator4["return"]) _iterator4["return"]();
break;
}

View File

@@ -1,5 +0,0 @@
exports.getModuleName = function () {
return "my custom module name";
};
exports.moduleIds = true;

View File

@@ -0,0 +1,4 @@
{
"moduleIds": true,
"moduleId": "my custom module name"
}

View File

@@ -1,5 +0,0 @@
exports.getModuleName = function () {
return "my custom module name";
};
exports.moduleIds = true;

View File

@@ -0,0 +1,4 @@
{
"moduleIds": true,
"moduleId": "my custom module name"
}

View File

@@ -1,5 +0,0 @@
exports.getModuleName = function () {
return "my custom module name";
};
exports.moduleIds = true;

View File

@@ -0,0 +1,4 @@
{
"moduleIds": true,
"moduleId": "my custom module name"
}

View File

@@ -0,0 +1,4 @@
{
"optional": ["runtime"],
"experimental": true
}

View File

@@ -1,4 +0,0 @@
{
"optional": ["selfContained"],
"experimental": true
}