Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ff4df6dae | ||
|
|
0dbb24c922 | ||
|
|
a027d2b9cf | ||
|
|
e290990371 | ||
|
|
d0a2bd170e | ||
|
|
69db46f96b | ||
|
|
27ba4b2bba | ||
|
|
b337c1ab06 | ||
|
|
a1895b4bb4 | ||
|
|
00483917f0 | ||
|
|
d09bafaf8c | ||
|
|
a7ef02c781 | ||
|
|
94cd45c269 | ||
|
|
424bab97d0 | ||
|
|
a1bdd804e2 | ||
|
|
10c051890b | ||
|
|
ac49d0a335 | ||
|
|
b56f1800e5 | ||
|
|
49ef92c586 | ||
|
|
542fe89123 | ||
|
|
5b118c0c3f | ||
|
|
8503916799 | ||
|
|
206c828a56 | ||
|
|
7a261a1db1 |
16
CHANGELOG.md
16
CHANGELOG.md
@@ -1,3 +1,19 @@
|
||||
# 1.12.16
|
||||
|
||||
* Fix comments not being retained from `MethodDefinition` in classes.
|
||||
* Add temporal dead zone in default parameters.
|
||||
|
||||
# 1.12.15
|
||||
|
||||
* Update `acorn-6to5`.
|
||||
|
||||
# 1.12.14
|
||||
|
||||
* Fix duplicate let scoping in functions.
|
||||
* Make JSX whitespace more React-compliant.
|
||||
* Add `_memberExpressionKeywords` transformer that turns keyword identifiers to computed literals.
|
||||
* Upgrade `regenerator-6to5`.
|
||||
|
||||
# 1.12.13
|
||||
|
||||
* Support duplicate constants within different block scopes.
|
||||
|
||||
@@ -133,11 +133,13 @@ for (var i of [1, 2, 3]) {
|
||||
## Generators
|
||||
|
||||
```javascript
|
||||
|
||||
```
|
||||
|
||||
## Generator comprehension
|
||||
|
||||
```javascript
|
||||
|
||||
```
|
||||
|
||||
## Let scoping
|
||||
@@ -151,6 +153,7 @@ for (let i in arr) {
|
||||
## Modules
|
||||
|
||||
```javascript
|
||||
|
||||
```
|
||||
|
||||
## Numeric literals
|
||||
|
||||
@@ -27,37 +27,39 @@ transform.moduleFormatters = {
|
||||
};
|
||||
|
||||
_.each({
|
||||
modules: require("./transformers/modules"),
|
||||
propertyNameShorthand: require("./transformers/property-name-shorthand"),
|
||||
constants: require("./transformers/constants"),
|
||||
arrayComprehension: require("./transformers/array-comprehension"),
|
||||
generatorComprehension: require("./transformers/generator-comprehension"),
|
||||
arrowFunctions: require("./transformers/arrow-functions"),
|
||||
classes: require("./transformers/classes"),
|
||||
modules: require("./transformers/modules"),
|
||||
propertyNameShorthand: require("./transformers/property-name-shorthand"),
|
||||
arrayComprehension: require("./transformers/array-comprehension"),
|
||||
generatorComprehension: require("./transformers/generator-comprehension"),
|
||||
arrowFunctions: require("./transformers/arrow-functions"),
|
||||
classes: require("./transformers/classes"),
|
||||
|
||||
_propertyLiterals: require("./transformers/_property-literals"),
|
||||
computedPropertyNames: require("./transformers/computed-property-names"),
|
||||
_propertyLiterals: require("./transformers/_property-literals"),
|
||||
computedPropertyNames: require("./transformers/computed-property-names"),
|
||||
|
||||
spread: require("./transformers/spread"),
|
||||
templateLiterals: require("./transformers/template-literals"),
|
||||
propertyMethodAssignment: require("./transformers/property-method-assignment"),
|
||||
defaultParameters: require("./transformers/default-parameters"),
|
||||
restParameters: require("./transformers/rest-parameters"),
|
||||
destructuring: require("./transformers/destructuring"),
|
||||
forOf: require("./transformers/for-of"),
|
||||
letScoping: require("./transformers/let-scoping"),
|
||||
unicodeRegex: require("./transformers/unicode-regex"),
|
||||
spread: require("./transformers/spread"),
|
||||
templateLiterals: require("./transformers/template-literals"),
|
||||
propertyMethodAssignment: require("./transformers/property-method-assignment"),
|
||||
defaultParameters: require("./transformers/default-parameters"),
|
||||
restParameters: require("./transformers/rest-parameters"),
|
||||
destructuring: require("./transformers/destructuring"),
|
||||
forOf: require("./transformers/for-of"),
|
||||
unicodeRegex: require("./transformers/unicode-regex"),
|
||||
|
||||
react: require("./transformers/react"),
|
||||
constants: require("./transformers/constants"),
|
||||
letScoping: require("./transformers/let-scoping"),
|
||||
|
||||
_aliasFunctions: require("./transformers/_alias-functions"),
|
||||
_blockHoist: require("./transformers/_block-hoist"),
|
||||
_declarations: require("./transformers/_declarations"),
|
||||
react: require("./transformers/react"),
|
||||
|
||||
generators: require("./transformers/generators"),
|
||||
useStrict: require("./transformers/use-strict"),
|
||||
_aliasFunctions: require("./transformers/_alias-functions"),
|
||||
_blockHoist: require("./transformers/_block-hoist"),
|
||||
_declarations: require("./transformers/_declarations"),
|
||||
|
||||
_moduleFormatter: require("./transformers/_module-formatter")
|
||||
generators: require("./transformers/generators"),
|
||||
useStrict: require("./transformers/use-strict"),
|
||||
|
||||
_memberExpressionKeywords: require("./transformers/_member-expression-keywords"),
|
||||
_moduleFormatter: require("./transformers/_module-formatter")
|
||||
}, function (transformer, key) {
|
||||
transform.transformers[key] = new Transformer(key, transformer);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
var esutils = require("esutils");
|
||||
var t = require("../../types");
|
||||
|
||||
exports.MemberExpression = function (node) {
|
||||
var prop = node.property;
|
||||
if (t.isIdentifier(prop) && esutils.keyword.isKeywordES6(prop.name, true)) {
|
||||
node.property = t.literal(prop.name);
|
||||
node.computed = true;
|
||||
}
|
||||
};
|
||||
@@ -254,6 +254,7 @@ Class.prototype.pushConstructor = function (method) {
|
||||
|
||||
this.hasConstructor = true;
|
||||
t.inherits(construct, fn);
|
||||
t.inheritsComments(construct, method);
|
||||
|
||||
construct.defaults = fn.defaults;
|
||||
construct.params = fn.params;
|
||||
|
||||
@@ -9,24 +9,27 @@ exports.ForOfStatement =
|
||||
exports.ForStatement = function (node, parent, file) {
|
||||
var constants = {};
|
||||
|
||||
var check = function (node, names, parent) {
|
||||
_.each(names, function (name) {
|
||||
var check = function (parent, names) {
|
||||
_.each(names, function (nameNode, name) {
|
||||
if (!_.has(constants, name)) return;
|
||||
if (parent && t.isBlockStatement(parent) && parent !== constants[name]) return;
|
||||
|
||||
throw file.errorWithNode(node, name + " is read-only");
|
||||
throw file.errorWithNode(nameNode, name + " is read-only");
|
||||
});
|
||||
};
|
||||
|
||||
var getIds = function (node) {
|
||||
return t.getIds(node, false, ["MemberExpression"]);
|
||||
return t.getIds(node, true, ["MemberExpression"]);
|
||||
};
|
||||
|
||||
_.each(node.body, function (child, parent) {
|
||||
if (child && t.isVariableDeclaration(child, { kind: "const" })) {
|
||||
_.each(child.declarations, function (declar) {
|
||||
_.each(getIds(declar), function (name) {
|
||||
check(declar, [name], parent);
|
||||
_.each(getIds(declar), function (nameNode, name) {
|
||||
var names = {};
|
||||
names[name] = nameNode;
|
||||
check(parent, names);
|
||||
|
||||
constants[name] = parent;
|
||||
});
|
||||
|
||||
@@ -42,9 +45,10 @@ exports.ForStatement = function (node, parent, file) {
|
||||
|
||||
traverse(node, function (child, parent) {
|
||||
if (child._ignoreConstant) return;
|
||||
if (t.isVariableDeclaration(child)) return;
|
||||
|
||||
if (t.isDeclaration(child) || t.isAssignmentExpression(child)) {
|
||||
check(child, getIds(child), parent);
|
||||
if (t.isVariableDeclarator(child) || t.isDeclaration(child) || t.isAssignmentExpression(child)) {
|
||||
check(parent, getIds(child));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,21 +1,70 @@
|
||||
var util = require("../../util");
|
||||
var t = require("../../types");
|
||||
var _ = require("lodash");
|
||||
var traverse = require("../../traverse");
|
||||
var util = require("../../util");
|
||||
var t = require("../../types");
|
||||
var _ = require("lodash");
|
||||
|
||||
exports.Function = function (node) {
|
||||
exports.Function = function (node, parent, file, scope) {
|
||||
if (!node.defaults || !node.defaults.length) return;
|
||||
t.ensureBlock(node);
|
||||
|
||||
var ids = node.params.map(function (param) {
|
||||
return t.getIds(param);
|
||||
});
|
||||
|
||||
var closure = false;
|
||||
|
||||
_.each(node.defaults, function (def, i) {
|
||||
if (!def) return;
|
||||
|
||||
var param = node.params[i];
|
||||
|
||||
node.body.body.unshift(util.template("if-undefined-set-to", {
|
||||
VARIABLE: param,
|
||||
DEFAULT: def
|
||||
// temporal dead zone check - here we prevent accessing of params that
|
||||
// are to the right - ie. uninitialized parameters
|
||||
_.each(ids.slice(i), function (ids) {
|
||||
var check = function (node, parent) {
|
||||
if (!t.isIdentifier(node) || !t.isReferenced(node, parent)) return;
|
||||
|
||||
if (_.contains(ids, node.name)) {
|
||||
throw file.errorWithNode(node, "Temporal dead zone - accessing a variable before it's initialized");
|
||||
}
|
||||
|
||||
if (scope.has(node.name)) {
|
||||
closure = true;
|
||||
}
|
||||
};
|
||||
|
||||
check(def, node);
|
||||
traverse(def, check);
|
||||
});
|
||||
|
||||
// we're accessing a variable that's already defined within this function
|
||||
var has = scope.get(param.name);
|
||||
if (has && !_.contains(node.params, has)) {
|
||||
closure = true;
|
||||
}
|
||||
});
|
||||
|
||||
var body = [];
|
||||
|
||||
_.each(node.defaults, function (def, i) {
|
||||
if (!def) return;
|
||||
|
||||
body.push(util.template("if-undefined-set-to", {
|
||||
VARIABLE: node.params[i],
|
||||
DEFAULT: def
|
||||
}, true));
|
||||
});
|
||||
|
||||
if (closure) {
|
||||
var container = t.functionExpression(null, [], node.body, node.generator);
|
||||
container._aliasFunction = true;
|
||||
|
||||
body.push(t.returnStatement(t.callExpression(container, [])));
|
||||
|
||||
node.body = t.blockStatement(body);
|
||||
} else {
|
||||
node.body.body = body.concat(node.body.body);
|
||||
}
|
||||
|
||||
node.defaults = [];
|
||||
};
|
||||
|
||||
@@ -74,7 +74,6 @@ function LetScoping(forParent, block, parent, file, scope) {
|
||||
|
||||
this.letReferences = {};
|
||||
this.body = [];
|
||||
this.info = this.getInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,8 +86,10 @@ LetScoping.prototype.run = function () {
|
||||
if (block._letDone) return;
|
||||
block._letDone = true;
|
||||
|
||||
this.info = this.getInfo();
|
||||
|
||||
// this is a block within a `Function` so we can safely leave it be
|
||||
if (t.isFunction(this.parent)) return;
|
||||
if (t.isFunction(this.parent)) return this.noClosure();
|
||||
|
||||
// this block has no let references so let's clean up
|
||||
if (!this.info.keys.length) return this.noClosure();
|
||||
|
||||
32
lib/6to5/transformation/transformers/react.js
vendored
32
lib/6to5/transformation/transformers/react.js
vendored
@@ -106,11 +106,35 @@ exports.XJSElement = {
|
||||
exit: function (node) {
|
||||
var callExpr = node.openingElement;
|
||||
|
||||
var childrenToRender = node.children.filter(function(child) {
|
||||
return !(t.isLiteral(child) && _.isString(child.value) && child.value.match(/^[ \t]*[\r\n][ \t\r\n]*$/));
|
||||
});
|
||||
_.each(node.children, function (child) {
|
||||
if (t.isLiteral(child)) {
|
||||
var lines = child.value.split(/\r\n|\n|\r/);
|
||||
|
||||
_.each(lines, function (line, i) {
|
||||
var isFirstLine = i === 0;
|
||||
var isLastLine = i === lines.length - 1;
|
||||
|
||||
// replace rendered whitespace tabs with spaces
|
||||
var trimmedLine = line.replace(/\t/g, ' ');
|
||||
|
||||
// trim whitespace touching a newline
|
||||
if (!isFirstLine) {
|
||||
trimmedLine = trimmedLine.replace(/^[ ]+/, '');
|
||||
}
|
||||
|
||||
// trim whitespace touching an endline
|
||||
if (!isLastLine) {
|
||||
trimmedLine = trimmedLine.replace(/[ ]+$/, '');
|
||||
}
|
||||
|
||||
if (trimmedLine) {
|
||||
callExpr.arguments.push(t.literal(trimmedLine));
|
||||
}
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
_.each(childrenToRender, function (child) {
|
||||
callExpr.arguments.push(child);
|
||||
});
|
||||
|
||||
|
||||
@@ -9,24 +9,30 @@ var FOR_KEYS = ["left", "init"];
|
||||
function Scope(parent, block) {
|
||||
this.parent = parent;
|
||||
this.block = block;
|
||||
this.ids = this.getIds();
|
||||
|
||||
this.getIds();
|
||||
this.info = this.getInfo();
|
||||
this.declarations = this.info.declarations;
|
||||
}
|
||||
|
||||
Scope.prototype.getIds = function () {
|
||||
Scope.prototype.getInfo = function () {
|
||||
var block = this.block;
|
||||
if (block._scopeIds) return block._scopeIds;
|
||||
if (block._scope) return block._scope;
|
||||
|
||||
var self = this;
|
||||
var ids = block._scopeIds = {};
|
||||
var info = block._scope = {
|
||||
declarations: {}
|
||||
};
|
||||
|
||||
var add = function (node) {
|
||||
self.addDeclaration(node, info.declarations);
|
||||
};
|
||||
|
||||
// ForStatement - left, init
|
||||
|
||||
if (t.isFor(block)) {
|
||||
_.each(FOR_KEYS, function (key) {
|
||||
var node = block[key];
|
||||
if (t.isLet(node)) self.add(node, ids);
|
||||
if (t.isLet(node)) add(node);
|
||||
});
|
||||
|
||||
block = block.body;
|
||||
@@ -37,14 +43,14 @@ Scope.prototype.getIds = function () {
|
||||
if (t.isBlockStatement(block) || t.isProgram(block)) {
|
||||
_.each(block.body, function (node) {
|
||||
// check for non-var `VariableDeclaration`s
|
||||
if (t.isLet(node)) self.add(node, ids);
|
||||
if (t.isLet(node)) add(node);
|
||||
});
|
||||
}
|
||||
|
||||
// CatchClause - param
|
||||
|
||||
if (t.isCatchClause(block)) {
|
||||
self.add(block.param, ids);
|
||||
add(block.param);
|
||||
}
|
||||
|
||||
// Program, Function - var variables
|
||||
@@ -54,7 +60,7 @@ Scope.prototype.getIds = function () {
|
||||
if (t.isFor(node)) {
|
||||
_.each(FOR_KEYS, function (key) {
|
||||
var declar = node[key];
|
||||
if (t.isVar(declar)) self.add(declar, ids);
|
||||
if (t.isVar(declar)) add(declar);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -65,26 +71,26 @@ Scope.prototype.getIds = function () {
|
||||
// we've ran into a declaration!
|
||||
// we'll let the BlockStatement scope deal with `let` declarations
|
||||
if (t.isDeclaration(node) && !t.isLet(node)) {
|
||||
self.add(node, ids);
|
||||
add(node);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Function - params
|
||||
// Function - params, rest
|
||||
|
||||
if (t.isFunction(block)) {
|
||||
this.add(block.rest, ids);
|
||||
add(block.rest);
|
||||
_.each(block.params, function (param) {
|
||||
self.add(param, ids);
|
||||
add(param);
|
||||
});
|
||||
}
|
||||
|
||||
return ids;
|
||||
return info;
|
||||
};
|
||||
|
||||
Scope.prototype.add = function (node, ids) {
|
||||
Scope.prototype.addDeclaration = function (node, declarations) {
|
||||
if (!node) return;
|
||||
_.merge(ids || this.ids, t.getIds(node, true));
|
||||
_.merge(declarations || this.declarations, t.getIds(node, true));
|
||||
};
|
||||
|
||||
Scope.prototype.get = function (id) {
|
||||
@@ -92,7 +98,7 @@ Scope.prototype.get = function (id) {
|
||||
};
|
||||
|
||||
Scope.prototype.getOwn = function (id) {
|
||||
return _.has(this.ids, id) && this.ids[id];
|
||||
return _.has(this.declarations, id) && this.declarations[id];
|
||||
};
|
||||
|
||||
Scope.prototype.parentGet = function (id) {
|
||||
|
||||
@@ -70,6 +70,9 @@ t.isReferenced = function (node, parent) {
|
||||
// we're a property key so we aren't referenced
|
||||
if (t.isProperty(parent) && parent.key === node) return false;
|
||||
|
||||
// we're a variable declarator id so we aren't referenced
|
||||
if (t.isVariableDeclarator(parent) && parent.id === node) return false;
|
||||
|
||||
var isMemberExpression = t.isMemberExpression(parent);
|
||||
|
||||
// we're in a member expression and we're the computed property so we're referenced
|
||||
@@ -161,7 +164,7 @@ t.toBlock = function (node, parent) {
|
||||
t.getIds = function (node, map, ignoreTypes) {
|
||||
ignoreTypes = ignoreTypes || [];
|
||||
|
||||
var search = [node];
|
||||
var search = [].concat(node);
|
||||
var ids = {};
|
||||
|
||||
while (search.length) {
|
||||
@@ -185,14 +188,6 @@ t.getIds = function (node, map, ignoreTypes) {
|
||||
return ids;
|
||||
};
|
||||
|
||||
t.isLet = function (node) {
|
||||
return t.isVariableDeclaration(node) && (node.kind !== "var" || node._let);
|
||||
};
|
||||
|
||||
t.isVar = function (node) {
|
||||
return t.isVariableDeclaration(node, { kind: "var" }) && !node._let;
|
||||
};
|
||||
|
||||
t.getIds.nodes = {
|
||||
AssignmentExpression: "left",
|
||||
ImportSpecifier: "id",
|
||||
@@ -214,13 +209,32 @@ t.getIds.arrays = {
|
||||
ObjectPattern: "properties"
|
||||
};
|
||||
|
||||
t.isLet = function (node) {
|
||||
return t.isVariableDeclaration(node) && (node.kind !== "var" || node._let);
|
||||
};
|
||||
|
||||
t.isVar = function (node) {
|
||||
return t.isVariableDeclaration(node, { kind: "var" }) && !node._let;
|
||||
};
|
||||
|
||||
t.removeComments = function (child) {
|
||||
delete child.leadingComments;
|
||||
delete child.trailingComments;
|
||||
return child;
|
||||
};
|
||||
|
||||
t.inheritsComments = function (child, parent) {
|
||||
child.leadingComments = _.compact([].concat(child.leadingComments, parent.leadingComments));
|
||||
child.trailingComments = _.compact([].concat(child.trailingComments, parent.trailingComments));
|
||||
return child;
|
||||
};
|
||||
|
||||
t.inherits = function (child, parent) {
|
||||
child.loc = parent.loc;
|
||||
child.end = parent.end;
|
||||
child.range = parent.range;
|
||||
child.start = parent.start;
|
||||
child.leadingComments = parent.leadingComments;
|
||||
child.trailingComments = parent.trailingComments;
|
||||
child.loc = parent.loc;
|
||||
child.end = parent.end;
|
||||
child.range = parent.range;
|
||||
child.start = parent.start;
|
||||
t.inheritsComments(child, parent);
|
||||
return child;
|
||||
};
|
||||
|
||||
|
||||
@@ -106,8 +106,13 @@ exports.buildDefineProperties = function (mutatorMap) {
|
||||
if (key[0] === "_") return;
|
||||
|
||||
node = _.clone(node);
|
||||
var inheritNode = node;
|
||||
if (t.isMethodDefinition(node)) node = node.value;
|
||||
mapNode.properties.push(t.property("init", t.identifier(key), node));
|
||||
|
||||
var prop = t.property("init", t.identifier(key), node);
|
||||
t.inheritsComments(prop, inheritNode);
|
||||
t.removeComments(inheritNode);
|
||||
mapNode.properties.push(prop);
|
||||
});
|
||||
|
||||
objExpr.properties.push(propNode);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "6to5",
|
||||
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
|
||||
"version": "1.12.13",
|
||||
"version": "1.12.16",
|
||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||
"homepage": "https://github.com/6to5/6to5",
|
||||
"repository": {
|
||||
@@ -44,11 +44,11 @@
|
||||
"es6-symbol": "0.1.1",
|
||||
"regexpu": "0.3.0",
|
||||
"source-map": "0.1.40",
|
||||
"regenerator-6to5": "https://github.com/6to5/regenerator-6to5/archive/75925940a7bb67d1ee8afec36b6d6eec072fb47c.tar.gz",
|
||||
"regenerator-6to5": "https://github.com/6to5/regenerator-6to5/archive/a9c53518af063ffef410f826225f8ee250131932.tar.gz",
|
||||
"chokidar": "0.10.5",
|
||||
"source-map-support": "0.2.8",
|
||||
"esutils": "1.1.4",
|
||||
"acorn-6to5": "https://github.com/6to5/acorn-6to5/archive/a6c34ba73e215bd16ee585f6794f6a6587820c58.tar.gz",
|
||||
"acorn-6to5": "https://github.com/6to5/acorn-6to5/archive/74d8e9bed20ba302d3504f53d0b1c649968959e1.tar.gz",
|
||||
"estraverse": "^1.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -48,8 +48,8 @@ exports.get = function (entryName) {
|
||||
var execLoc = taskDir + "/exec.js";
|
||||
|
||||
var taskOpts = _.merge({
|
||||
filename: actualLocAlias,
|
||||
sourceMapName: expectLocAlias
|
||||
sourceFileName: actualLocAlias,
|
||||
sourceMapName: expectLocAlias
|
||||
}, _.cloneDeep(suite.options));
|
||||
|
||||
var taskOptsLoc = taskDir + "/options.json";
|
||||
|
||||
@@ -19,7 +19,7 @@ var _extends = function (child, parent) {
|
||||
|
||||
var Test = (function (Foo) {
|
||||
var Test = function Test() {
|
||||
woops.super.test();
|
||||
woops["super"].test();
|
||||
Foo.call(this);
|
||||
Foo.prototype.test.call(this);
|
||||
foob(Foo);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
"use strict";
|
||||
|
||||
var t = function (t, f) {
|
||||
if (f === undefined) f = 5;
|
||||
if (t === undefined) t = "foo";
|
||||
if (f === undefined) f = 5;
|
||||
return t + " bar " + f;
|
||||
};
|
||||
|
||||
|
||||
1
test/fixtures/transformation/default-parameters/tdz-2/actual.js
vendored
Normal file
1
test/fixtures/transformation/default-parameters/tdz-2/actual.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
function foo(a=b, b) {}
|
||||
3
test/fixtures/transformation/default-parameters/tdz-2/options.json
vendored
Normal file
3
test/fixtures/transformation/default-parameters/tdz-2/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"throws": "Temporal dead zone - accessing a variable before it's initialized"
|
||||
}
|
||||
4
test/fixtures/transformation/default-parameters/tdz-3/exec.js
vendored
Normal file
4
test/fixtures/transformation/default-parameters/tdz-3/exec.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
assert.equal((function(a, b=a++){
|
||||
function b(){}
|
||||
return a;
|
||||
})(1), 2);
|
||||
1
test/fixtures/transformation/default-parameters/tdz/actual.js
vendored
Normal file
1
test/fixtures/transformation/default-parameters/tdz/actual.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
function foo(a=a) {}
|
||||
3
test/fixtures/transformation/default-parameters/tdz/options.json
vendored
Normal file
3
test/fixtures/transformation/default-parameters/tdz/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"throws": "Temporal dead zone - accessing a variable before it's initialized"
|
||||
}
|
||||
10
test/fixtures/transformation/let-scoping/exec-duplicate-function-scope/exec.js
vendored
Normal file
10
test/fixtures/transformation/let-scoping/exec-duplicate-function-scope/exec.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
function test () {
|
||||
let value = "outer";
|
||||
|
||||
return (function () {
|
||||
let value = "inner";
|
||||
return value;
|
||||
})();
|
||||
}
|
||||
|
||||
assert(test(), "inner");
|
||||
4
test/fixtures/transformation/misc/_member-expression-keywords/actual.js
vendored
Normal file
4
test/fixtures/transformation/misc/_member-expression-keywords/actual.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
test.catch;
|
||||
test.catch["foo"];
|
||||
test["catch"];
|
||||
test["catch"]["foo"];
|
||||
6
test/fixtures/transformation/misc/_member-expression-keywords/expected.js
vendored
Normal file
6
test/fixtures/transformation/misc/_member-expression-keywords/expected.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
test["catch"];
|
||||
test["catch"]["foo"];
|
||||
test["catch"];
|
||||
test["catch"]["foo"];
|
||||
6
test/fixtures/transformation/misc/_property-literals/actual.js
vendored
Normal file
6
test/fixtures/transformation/misc/_property-literals/actual.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
var obj = {
|
||||
"test": "foob",
|
||||
"!@#$": "foob",
|
||||
"33rd": "foob",
|
||||
fooBar: "foob"
|
||||
};
|
||||
8
test/fixtures/transformation/misc/_property-literals/expected.js
vendored
Normal file
8
test/fixtures/transformation/misc/_property-literals/expected.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
"use strict";
|
||||
|
||||
var obj = {
|
||||
test: "foob",
|
||||
"!@#$": "foob",
|
||||
"33rd": "foob",
|
||||
fooBar: "foob"
|
||||
};
|
||||
@@ -1,15 +1,15 @@
|
||||
define(["exports"], function (exports) {
|
||||
"use strict";
|
||||
|
||||
exports.default = 42;
|
||||
exports.default = {};
|
||||
exports.default = [];
|
||||
exports.default = foo;
|
||||
exports.default = function () {};
|
||||
exports.default = function () {};
|
||||
exports["default"] = 42;
|
||||
exports["default"] = {};
|
||||
exports["default"] = [];
|
||||
exports["default"] = foo;
|
||||
exports["default"] = function () {};
|
||||
exports["default"] = function () {};
|
||||
function foo() {}
|
||||
exports.default = foo;
|
||||
exports["default"] = foo;
|
||||
var Foo = function Foo() {};
|
||||
|
||||
exports.default = Foo;
|
||||
exports["default"] = Foo;
|
||||
});
|
||||
|
||||
0
test/fixtures/transformation/modules-amd/exports-default/untitled
vendored
Normal file
0
test/fixtures/transformation/modules-amd/exports-default/untitled
vendored
Normal file
@@ -11,7 +11,7 @@ define(["exports", "foo"], function (exports, _foo) {
|
||||
exports.foo = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
exports.bar = _foo.foo;
|
||||
exports.default = _foo.foo;
|
||||
exports.default = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@ define(["exports"], function (exports) {
|
||||
exports.foo = foo;
|
||||
exports.bar = bar;
|
||||
exports.bar = foo;
|
||||
exports.default = foo;
|
||||
exports.default = foo;
|
||||
exports["default"] = foo;
|
||||
exports["default"] = foo;
|
||||
exports.bar = bar;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
define(["exports", "foo"], function (exports, _foo) {
|
||||
"use strict";
|
||||
|
||||
var foo = _foo.default;
|
||||
var foo = _foo.default;
|
||||
});
|
||||
var foo = _foo["default"];
|
||||
var foo = _foo["default"];
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
define(["exports", "foo"], function (exports, _foo) {
|
||||
"use strict";
|
||||
|
||||
var foo = _foo.default;
|
||||
var foo = _foo["default"];
|
||||
var xyz = _foo.baz;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
|
||||
"use strict";
|
||||
|
||||
var foo = _foo.default;
|
||||
var foo = _foo["default"];
|
||||
var foo = _foo;
|
||||
var bar = _foo.bar;
|
||||
var bar = _foo.foo;
|
||||
exports.test = test;
|
||||
var test = exports.test = 5;
|
||||
|
||||
exports.default = test;
|
||||
exports["default"] = test;
|
||||
});
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
exports.default = 42;
|
||||
exports.default = {};
|
||||
exports.default = [];
|
||||
exports.default = foo;
|
||||
exports.default = function () {};
|
||||
exports.default = function () {};
|
||||
exports["default"] = 42;
|
||||
exports["default"] = {};
|
||||
exports["default"] = [];
|
||||
exports["default"] = foo;
|
||||
exports["default"] = function () {};
|
||||
exports["default"] = function () {};
|
||||
function foo() {}
|
||||
exports.default = foo;
|
||||
exports["default"] = foo;
|
||||
var Foo = function Foo() {};
|
||||
|
||||
exports.default = Foo;
|
||||
exports["default"] = Foo;
|
||||
|
||||
@@ -10,6 +10,6 @@ exports.foo = require("foo").foo;
|
||||
exports.foo = require("foo").foo;
|
||||
exports.bar = require("foo").bar;
|
||||
exports.bar = require("foo").foo;
|
||||
exports.default = require("foo").foo;
|
||||
exports.default = require("foo").foo;
|
||||
exports.bar = require("foo").bar;
|
||||
exports["default"] = require("foo").foo;
|
||||
exports["default"] = require("foo").foo;
|
||||
exports.bar = require("foo").bar;
|
||||
|
||||
@@ -4,6 +4,6 @@ exports.foo = foo;
|
||||
exports.foo = foo;
|
||||
exports.bar = bar;
|
||||
exports.bar = foo;
|
||||
exports.default = foo;
|
||||
exports.default = foo;
|
||||
exports.bar = bar;
|
||||
exports["default"] = foo;
|
||||
exports["default"] = foo;
|
||||
exports.bar = bar;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
|
||||
var foo = require("foo").default;
|
||||
var foo = require("foo").default;
|
||||
var foo = require("foo")["default"];
|
||||
var foo = require("foo")["default"];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
|
||||
var foo = require("foo").default;
|
||||
var foo = require("foo")["default"];
|
||||
var xyz = require("foo").baz;
|
||||
|
||||
@@ -6,7 +6,7 @@ require("foo-bar");
|
||||
|
||||
require("./directory/foo-bar");
|
||||
|
||||
var foo = require("foo").default;
|
||||
var foo = require("foo")["default"];
|
||||
var foo = require("foo");
|
||||
|
||||
var bar = require("foo").bar;
|
||||
@@ -14,4 +14,4 @@ var bar = require("foo").foo;
|
||||
exports.test = test;
|
||||
var test = exports.test = 5;
|
||||
|
||||
exports.default = test;
|
||||
exports["default"] = test;
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
})(function (exports) {
|
||||
"use strict";
|
||||
|
||||
exports.default = 42;
|
||||
exports.default = {};
|
||||
exports.default = [];
|
||||
exports.default = foo;
|
||||
exports.default = function () {};
|
||||
exports.default = function () {};
|
||||
exports["default"] = 42;
|
||||
exports["default"] = {};
|
||||
exports["default"] = [];
|
||||
exports["default"] = foo;
|
||||
exports["default"] = function () {};
|
||||
exports["default"] = function () {};
|
||||
function foo() {}
|
||||
exports.default = foo;
|
||||
exports["default"] = foo;
|
||||
var Foo = function Foo() {};
|
||||
|
||||
exports.default = Foo;
|
||||
exports["default"] = Foo;
|
||||
});
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
exports.foo = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
exports.bar = _foo.foo;
|
||||
exports.default = _foo.foo;
|
||||
exports.default = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
});
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
exports.foo = foo;
|
||||
exports.bar = bar;
|
||||
exports.bar = foo;
|
||||
exports.default = foo;
|
||||
exports.default = foo;
|
||||
exports["default"] = foo;
|
||||
exports["default"] = foo;
|
||||
exports.bar = bar;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -7,6 +7,6 @@
|
||||
})(function (exports, _foo) {
|
||||
"use strict";
|
||||
|
||||
var foo = _foo.default;
|
||||
var foo = _foo.default;
|
||||
});
|
||||
var foo = _foo["default"];
|
||||
var foo = _foo["default"];
|
||||
});
|
||||
|
||||
@@ -7,6 +7,6 @@
|
||||
})(function (exports, _foo) {
|
||||
"use strict";
|
||||
|
||||
var foo = _foo.default;
|
||||
var foo = _foo["default"];
|
||||
var xyz = _foo.baz;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
})(function (exports, _foo, _fooBar, _directoryFooBar) {
|
||||
"use strict";
|
||||
|
||||
var foo = _foo.default;
|
||||
var foo = _foo["default"];
|
||||
var foo = _foo;
|
||||
var bar = _foo.bar;
|
||||
var bar = _foo.foo;
|
||||
exports.test = test;
|
||||
var test = exports.test = 5;
|
||||
|
||||
exports.default = test;
|
||||
exports["default"] = test;
|
||||
});
|
||||
|
||||
@@ -9,21 +9,20 @@ var _ = require("lodash");
|
||||
var run = function (task) {
|
||||
var actual = task.actual;
|
||||
var expect = task.expect;
|
||||
var opts = task.options;
|
||||
var exec = task.exec;
|
||||
|
||||
var getOpts = function (filename) {
|
||||
var getOpts = function (self) {
|
||||
return _.merge({
|
||||
whtiespace: true,
|
||||
filename: filename
|
||||
}, opts);
|
||||
filename: self.loc
|
||||
}, task.options);
|
||||
};
|
||||
|
||||
var execCode = exec.code;
|
||||
var result;
|
||||
|
||||
if (execCode) {
|
||||
result = transform(execCode, getOpts(exec.filename));
|
||||
result = transform(execCode, getOpts(exec));
|
||||
execCode = result.code;
|
||||
|
||||
require("../lib/6to5/polyfill");
|
||||
@@ -39,7 +38,7 @@ var run = function (task) {
|
||||
var actualCode = actual.code;
|
||||
var expectCode = expect.code;
|
||||
|
||||
result = transform(actualCode, getOpts(actual.filename));
|
||||
result = transform(actualCode, getOpts(actual));
|
||||
actualCode = result.code;
|
||||
|
||||
chai.expect(actualCode).to.be.equal(expectCode, actual.loc + " !== " + expect.loc);
|
||||
|
||||
Reference in New Issue
Block a user