Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c129eba712 | ||
|
|
0e2d7fa941 | ||
|
|
0b33a62032 | ||
|
|
6919ed2b34 | ||
|
|
435320e3f9 | ||
|
|
7b846af965 | ||
|
|
18b836c16a | ||
|
|
fb360039ce |
@@ -11,6 +11,13 @@
|
||||
|
||||
_Note: Gaps between patch versions are faulty/broken releases._
|
||||
|
||||
## 3.3.3
|
||||
|
||||
* **Bug Fix**
|
||||
* Remap top level `this` to `undefined` instead of throwing an error.
|
||||
* Run `selfContained` transformer over the regenerator runtime when building `6to5-runtime`.
|
||||
* Fix `t.isReferenced` not properly allowing `value` nodes.
|
||||
|
||||
## 3.3.1
|
||||
|
||||
* **Bug Fix**
|
||||
|
||||
@@ -16,6 +16,6 @@ exports.FunctionExpression = function (node, parent, scope, context) {
|
||||
context.skip();
|
||||
};
|
||||
|
||||
exports.ThisExpression = function (node, parent, scope, context, file) {
|
||||
throw file.errorWithNode(node, "Top level `this` is `undefined` in strict mode", ReferenceError);
|
||||
exports.ThisExpression = function () {
|
||||
return t.identifier("undefined");
|
||||
};
|
||||
|
||||
@@ -257,8 +257,9 @@ t.isReferenced = function (node, parent) {
|
||||
}
|
||||
|
||||
// yes: { [NODE]: "" }
|
||||
if (t.isProperty(parent)) {
|
||||
return parent.key === node && parent.computed;
|
||||
// no: { NODE: "" }
|
||||
if (t.isProperty(parent) && parent.key === node) {
|
||||
return parent.computed;
|
||||
}
|
||||
|
||||
// no: var NODE = init;
|
||||
@@ -407,10 +408,11 @@ t.ensureBlock = function (node, key) {
|
||||
* parsed nodes of `React.createClass` and `React["createClass"]`.
|
||||
*
|
||||
* @param {String} match Dot delimetered string
|
||||
* @param {Boolean} [allowPartial] Allow a partial match
|
||||
* @returns {Function}
|
||||
*/
|
||||
|
||||
t.buildMatchMemberExpression = function (match) {
|
||||
t.buildMatchMemberExpression = function (match, allowPartial) {
|
||||
var parts = match.split(".");
|
||||
|
||||
return function (member) {
|
||||
@@ -445,7 +447,11 @@ t.buildMatchMemberExpression = function (match) {
|
||||
|
||||
// too many parts
|
||||
if (++i > parts.length) {
|
||||
return false;
|
||||
if (allowPartial) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "6to5",
|
||||
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
|
||||
"version": "3.3.2",
|
||||
"version": "3.3.3",
|
||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||
"homepage": "https://6to5.org/",
|
||||
"repository": "6to5/6to5",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "6to5-runtime",
|
||||
"description": "6to5 selfContained runtime",
|
||||
"version": "3.3.1",
|
||||
"version": "3.3.2",
|
||||
"repository": "6to5/6to5",
|
||||
"author": "Sebastian McKenzie <sebmck@gmail.com>"
|
||||
}
|
||||
@@ -30,6 +30,12 @@ var updatePackage = function () {
|
||||
writeFile("package.json", JSON.stringify(pkg, null, 2));
|
||||
};
|
||||
|
||||
var selfContainify = function (code) {
|
||||
return transform(code, {
|
||||
optional: ["selfContained"]
|
||||
}).code;
|
||||
};
|
||||
|
||||
var buildHelpers2 = function () {
|
||||
var body = [];
|
||||
var tree = t.program(body);
|
||||
@@ -44,5 +50,5 @@ var buildHelpers2 = function () {
|
||||
writeFile("helpers.js", buildHelpers2());
|
||||
writeFile("core-js.js", readFile("core-js/library"));
|
||||
writeFile("regenerator/index.js", readFile("regenerator-6to5/runtime-module"));
|
||||
writeFile("regenerator/runtime.js", readFile("regenerator-6to5/runtime"));
|
||||
writeFile("regenerator/runtime.js", selfContainify(readFile("regenerator-6to5/runtime")));
|
||||
updatePackage();
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"throws": "Top level `this` is `undefined` in strict mode"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"throws": "Top level `this` is `undefined` in strict mode"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"throws": "Top level `this` is `undefined` in strict mode"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"throws": "Top level `this` is `undefined` in strict mode"
|
||||
}
|
||||
5
test/fixtures/transformation/use-strict/undefined-this-arrow-function/expected.js
vendored
Normal file
5
test/fixtures/transformation/use-strict/undefined-this-arrow-function/expected.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
var foo = function () {
|
||||
return undefined;
|
||||
};
|
||||
3
test/fixtures/transformation/use-strict/undefined-this-root-call/expected.js
vendored
Normal file
3
test/fixtures/transformation/use-strict/undefined-this-root-call/expected.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
undefined.foo();
|
||||
3
test/fixtures/transformation/use-strict/undefined-this-root-declaration/expected.js
vendored
Normal file
3
test/fixtures/transformation/use-strict/undefined-this-root-declaration/expected.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
var self = undefined;
|
||||
3
test/fixtures/transformation/use-strict/undefined-this-root-reference/expected.js
vendored
Normal file
3
test/fixtures/transformation/use-strict/undefined-this-root-reference/expected.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
undefined;
|
||||
Reference in New Issue
Block a user