Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
680771c81b | ||
|
|
cad3f63723 | ||
|
|
eceda64528 | ||
|
|
b8ec87e058 | ||
|
|
04bd023787 | ||
|
|
f1759dc419 | ||
|
|
2985f1b40b |
@@ -1,3 +1,11 @@
|
||||
# 1.13.10
|
||||
|
||||
* Add support for `AssignmentExpression` destructuring outside of `ExpressionStatement`.
|
||||
|
||||
# 1.13.9
|
||||
|
||||
* Fix `VirtualPropertyExpression` visitor keys.
|
||||
|
||||
# 1.13.8
|
||||
|
||||
* Only use a single reference in abstract references.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// TODO: Clean up
|
||||
|
||||
var t = require("../../types");
|
||||
var _ = require("lodash");
|
||||
|
||||
@@ -183,10 +185,38 @@ exports.ExpressionStatement = function (node, parent, file, scope) {
|
||||
return nodes;
|
||||
};
|
||||
|
||||
exports.AssignmentExpression = function (node, parent, file) {
|
||||
exports.AssignmentExpression = function (node, parent, file, scope) {
|
||||
if (parent.type === "ExpressionStatement") return;
|
||||
if (!t.isPattern(node.left)) return;
|
||||
throw file.errorWithNode(node, "AssignmentExpression destructuring outside of a ExpressionStatement is forbidden due to current 6to5 limitations");
|
||||
|
||||
var tempName = file.generateUid("temp", scope);
|
||||
var temp = t.identifier(tempName);
|
||||
scope.push(tempName, temp);
|
||||
|
||||
var nodes = [];
|
||||
nodes.push(t.assignmentExpression("=", temp, node.right));
|
||||
|
||||
push({
|
||||
kind: false,
|
||||
file: file,
|
||||
scope: scope
|
||||
}, nodes, node.left, temp);
|
||||
|
||||
nodes.push(temp);
|
||||
|
||||
nodes = nodes.map(function (node) {
|
||||
if (t.isExpressionStatement(node)) {
|
||||
return node.expression;
|
||||
} else if (t.isVariableDeclaration(node)) {
|
||||
var declar = node.declarations[0];
|
||||
scope.push(declar.id.name, declar.id);
|
||||
return t.assignmentExpression("=", declar.id, declar.init);
|
||||
} else {
|
||||
return node;
|
||||
}
|
||||
});
|
||||
|
||||
return t.sequenceExpression(nodes);
|
||||
};
|
||||
|
||||
exports.VariableDeclaration = function (node, parent, file, scope) {
|
||||
|
||||
@@ -112,7 +112,7 @@ Scope.prototype.push = function (name, id, init) {
|
||||
init: init
|
||||
};
|
||||
} else {
|
||||
throw new Error("wtf");
|
||||
throw new TypeError("cannot add a declaration here in node type " + block.type);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
"UpdateExpression": ["argument"],
|
||||
"VariableDeclaration": ["declarations"],
|
||||
"VariableDeclarator": ["id", "init"],
|
||||
"VirtualPropertyExpression": ["left", "right"],
|
||||
"VirtualPropertyExpression": ["object", "property"],
|
||||
"WhileStatement": ["test", "body"],
|
||||
"WithStatement": ["object", "body"],
|
||||
"XJSAttribute": ["name", "value"],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "6to5",
|
||||
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
|
||||
"version": "1.13.8",
|
||||
"version": "1.13.10",
|
||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||
"homepage": "https://github.com/6to5/6to5",
|
||||
"repository": {
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
console.log([x] = [1]);
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"throws": "AssignmentExpression destructuring outside of a ExpressionStatement is forbidden due to current 6to5 limitations"
|
||||
}
|
||||
9
test/fixtures/transformation/es6-destructuring/assignment-expression/expected.js
vendored
Normal file
9
test/fixtures/transformation/es6-destructuring/assignment-expression/expected.js
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
"use strict";
|
||||
|
||||
var _ref;
|
||||
var _toArray = function (arr) {
|
||||
return Array.isArray(arr) ? arr : Array.from(arr);
|
||||
};
|
||||
|
||||
var _temp;
|
||||
console.log((_temp = [123], _ref = _toArray(_temp), x = _ref[0], _temp));
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"throws": "AssignmentExpression destructuring outside of a ExpressionStatement is forbidden due to current 6to5 limitations"
|
||||
}
|
||||
Reference in New Issue
Block a user