From 34bc8b0aea149d96d88c5777b3dea6e122c8d9bc Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Sun, 9 Aug 2015 20:37:18 +0100
Subject: [PATCH 001/174] disallow let and modules in babel-node REPL
---
packages/babel-cli/src/_babel-node.js | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/packages/babel-cli/src/_babel-node.js b/packages/babel-cli/src/_babel-node.js
index fe7d7fd76f..70a3325da8 100644
--- a/packages/babel-cli/src/_babel-node.js
+++ b/packages/babel-cli/src/_babel-node.js
@@ -38,6 +38,22 @@ babel.register({
//
+var replPlugin = new babel.Plugin("repl", {
+ visitor: {
+ ModuleDeclaration() {
+ throw this.errorWithNode("Modules aren't supported in the REPL");
+ },
+
+ VariableDeclaration(node) {
+ if (node.kind !== "var") {
+ throw this.errorWithNode("Only `var` variables are supported in the REPL");
+ }
+ }
+ }
+});
+
+//
+
var _eval = function (code, filename) {
code = code.trim();
if (!code) return undefined;
@@ -47,7 +63,8 @@ var _eval = function (code, filename) {
blacklist: program.blacklist,
whitelist: program.whitelist,
optional: program.optional,
- stage: program.stage
+ stage: program.stage,
+ plugins: [replPlugin]
}).code;
return vm.runInThisContext(code, {
From 4c71038bceda31b1ddda4962ce3622665901eb5e Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 10 Aug 2015 13:04:08 +0100
Subject: [PATCH 002/174] fix export default function expression disambiguation
- fixes #2189
---
packages/babylon/src/parser/statement.js | 43 ++++---
.../actual.js | 2 +
.../expected.json | 115 ++++++++++++++++++
.../options.json | 3 -
.../options.json | 0
5 files changed, 146 insertions(+), 17 deletions(-)
create mode 100644 packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/actual.js
create mode 100644 packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/expected.json
delete mode 100644 packages/babylon/test/fixtures/harmony/modules/export-default-function-expression/options.json
rename packages/babylon/test/fixtures/harmony/modules/{export-default-function-declaration => }/options.json (100%)
diff --git a/packages/babylon/src/parser/statement.js b/packages/babylon/src/parser/statement.js
index 18482415f8..8a6744f8c0 100644
--- a/packages/babylon/src/parser/statement.js
+++ b/packages/babylon/src/parser/statement.js
@@ -483,11 +483,15 @@ pp.parseVarHead = function (decl) {
// Parse a function declaration or literal (depending on the
// `isStatement` parameter).
-pp.parseFunction = function (node, isStatement, allowExpressionBody, isAsync) {
+pp.parseFunction = function (node, isStatement, allowExpressionBody, isAsync, optionalId) {
this.initFunction(node, isAsync);
node.generator = this.eat(tt.star);
- if (isStatement || this.match(tt.name)) {
+ if (isStatement && !optionalId && !this.match(tt.name)) {
+ this.unexpected();
+ }
+
+ if (this.match(tt.name)) {
node.id = this.parseIdent();
}
@@ -504,9 +508,9 @@ pp.parseFunctionParams = function (node) {
// Parse a class declaration or literal (depending on the
// `isStatement` parameter).
-pp.parseClass = function (node, isStatement) {
+pp.parseClass = function (node, isStatement, optionalId) {
this.next();
- this.parseClassId(node, isStatement);
+ this.parseClassId(node, isStatement, optionalId);
this.parseClassSuper(node);
var classBody = this.startNode();
let hadConstructor = false;
@@ -607,8 +611,16 @@ pp.parseClassMethod = function (classBody, method, isGenerator, isAsync) {
classBody.body.push(this.finishNode(method, "MethodDefinition"));
};
-pp.parseClassId = function (node, isStatement) {
- node.id = this.match(tt.name) ? this.parseIdent() : isStatement ? this.unexpected() : null;
+pp.parseClassId = function (node, isStatement, optionalId) {
+ if (this.match(tt.name)) {
+ node.id = this.parseIdent();
+ } else {
+ if (optionalId || !isStatement) {
+ node.id = null;
+ } else {
+ this.unexpected();
+ }
+ }
};
pp.parseClassSuper = function (node) {
@@ -648,14 +660,17 @@ pp.parseExport = function (node) {
}
this.parseExportFrom(node, true);
} else if (this.eat(tt._default)) { // export default ...
- let possibleDeclaration = this.match(tt._function) || this.match(tt._class);
- let expr = this.parseMaybeAssign();
- let needsSemi = true;
- if (possibleDeclaration) {
- needsSemi = false;
- if (expr.id) {
- expr.type = expr.type === "FunctionExpression" ? "FunctionDeclaration" : "ClassDeclaration";
- }
+ let expr = this.startNode();
+ let needsSemi = false;
+ if (this.eat(tt._function)) {
+ expr = this.parseFunction(expr, true, false, false, true);
+ if (!expr.id) expr.type = "FunctionExpression";
+ } else if (this.match(tt._class)) {
+ expr = this.parseClass(expr, true, true);
+ if (!expr.id) expr.type = "ClassExpression";
+ } else {
+ needsSemi = true;
+ expr = this.parseMaybeAssign();
}
node.declaration = expr;
if (needsSemi) this.semicolon();
diff --git a/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/actual.js b/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/actual.js
new file mode 100644
index 0000000000..1f9bc179c3
--- /dev/null
+++ b/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/actual.js
@@ -0,0 +1,2 @@
+export default function () {}
+(foo);
diff --git a/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/expected.json b/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/expected.json
new file mode 100644
index 0000000000..c204457d46
--- /dev/null
+++ b/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration-expression-disambiguation/expected.json
@@ -0,0 +1,115 @@
+{
+ "type": "File",
+ "start": 0,
+ "end": 36,
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 6
+ }
+ },
+ "program": {
+ "type": "Program",
+ "start": 0,
+ "end": 36,
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 6
+ }
+ },
+ "sourceType": "module",
+ "body": [
+ {
+ "type": "ExportDefaultDeclaration",
+ "start": 0,
+ "end": 29,
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 0
+ },
+ "end": {
+ "line": 1,
+ "column": 29
+ }
+ },
+ "declaration": {
+ "type": "FunctionExpression",
+ "start": 15,
+ "end": 29,
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 15
+ },
+ "end": {
+ "line": 1,
+ "column": 29
+ }
+ },
+ "id": null,
+ "generator": false,
+ "expression": false,
+ "params": [],
+ "body": {
+ "type": "BlockStatement",
+ "start": 27,
+ "end": 29,
+ "loc": {
+ "start": {
+ "line": 1,
+ "column": 27
+ },
+ "end": {
+ "line": 1,
+ "column": 29
+ }
+ },
+ "body": []
+ }
+ }
+ },
+ {
+ "type": "ExpressionStatement",
+ "start": 30,
+ "end": 36,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 0
+ },
+ "end": {
+ "line": 2,
+ "column": 6
+ }
+ },
+ "expression": {
+ "type": "Identifier",
+ "start": 31,
+ "end": 34,
+ "loc": {
+ "start": {
+ "line": 2,
+ "column": 1
+ },
+ "end": {
+ "line": 2,
+ "column": 4
+ }
+ },
+ "name": "foo",
+ "parenthesizedExpression": true
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/packages/babylon/test/fixtures/harmony/modules/export-default-function-expression/options.json b/packages/babylon/test/fixtures/harmony/modules/export-default-function-expression/options.json
deleted file mode 100644
index 2104ca4328..0000000000
--- a/packages/babylon/test/fixtures/harmony/modules/export-default-function-expression/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "sourceType": "module"
-}
diff --git a/packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration/options.json b/packages/babylon/test/fixtures/harmony/modules/options.json
similarity index 100%
rename from packages/babylon/test/fixtures/harmony/modules/export-default-function-declaration/options.json
rename to packages/babylon/test/fixtures/harmony/modules/options.json
From e165e09467be9ad63b4db9192604629460c37427 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 10 Aug 2015 13:04:22 +0100
Subject: [PATCH 003/174] make Directive virtual type check more reliable
---
.../src/traversal/path/lib/virtual-types.js | 20 ++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/packages/babel/src/traversal/path/lib/virtual-types.js b/packages/babel/src/traversal/path/lib/virtual-types.js
index 911b757ad7..1595f47d7a 100644
--- a/packages/babel/src/traversal/path/lib/virtual-types.js
+++ b/packages/babel/src/traversal/path/lib/virtual-types.js
@@ -117,7 +117,7 @@ export var Var = {
export var DirectiveLiteral = {
types: ["Literal"],
checkPath(path) {
- return path.isLiteral() && path.parentPath.isExpressionStatement();
+ return path.parentPath.isDirective();
}
};
@@ -127,8 +127,22 @@ export var DirectiveLiteral = {
export var Directive = {
types: ["ExpressionStatement"],
- checkPath(path) {
- return path.get("expression").isLiteral();
+ checkPath({ inList, container, key }) {
+ // needs to be in a statement list
+ if (!inList) return false;
+
+ // get the last directive node in this list
+ var lastDirective = -1;
+ for (var i = 0; i < container.length; i++) {
+ var node = container[i];
+ if (t.isExpressionStatement(node) && t.isLiteral(node.expression)) {
+ lastDirective = i;
+ } else {
+ break;
+ }
+ }
+
+ return key <= lastDirective;
}
};
From 2afad4b7e917b0a3916421613421ca23768f21c9 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 10 Aug 2015 13:10:32 +0100
Subject: [PATCH 004/174] forward all arguments to parseClassId in flow parser
plugin
---
packages/babylon/src/plugins/flow.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/babylon/src/plugins/flow.js b/packages/babylon/src/plugins/flow.js
index 718f0f4921..07c68d55c6 100644
--- a/packages/babylon/src/plugins/flow.js
+++ b/packages/babylon/src/plugins/flow.js
@@ -703,8 +703,8 @@ export default function (instance) {
});
instance.extend("parseClassId", function (inner) {
- return function (node, isStatement) {
- inner.call(this, node, isStatement);
+ return function (node) {
+ inner.apply(this, arguments);
if (this.isRelational("<")) {
node.typeParameters = this.flowParseTypeParameterDeclaration();
}
From 415d1271b985f7e251df451b5e9cc00c1abeca07 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 11 Aug 2015 00:59:15 +0100
Subject: [PATCH 005/174] add esprima tests and fix bugs picked up by it
---
packages/babel/src/util.js | 11 +-
.../es6.classes/bare-super/actual.js | 5 -
.../es6.classes/bare-super/options.json | 3 -
packages/babylon/src/options.js | 5 -
packages/babylon/src/parser/expression.js | 160 +++--
packages/babylon/src/parser/lval.js | 19 +-
packages/babylon/src/parser/statement.js | 89 ++-
packages/babylon/src/parser/util.js | 17 +
packages/babylon/src/plugins/flow.js | 64 +-
.../core/uncategorised/484/expected.json | 117 ++++
.../core/uncategorised/485/expected.json | 117 ++++
.../core/uncategorised/488/expected.json | 149 +++++
.../core/uncategorised/489/expected.json | 149 +++++
.../core/uncategorised/491/expected.json | 149 +++++
.../core/uncategorised/495/expected.json | 134 +++++
.../core/uncategorised/496/expected.json | 134 +++++
.../core/uncategorised/511/expected.json | 134 +++++
.../core/uncategorised/512/expected.json | 117 ++++
.../core/uncategorised/515/expected.json | 134 +++++
.../core/uncategorised/516/expected.json | 134 +++++
.../core/uncategorised/520/expected.json | 150 +++++
.../core/uncategorised/521/expected.json | 150 +++++
.../core/uncategorised/536/expected.json | 83 +++
.../babylon/test/fixtures/esprima/LICENSE | 21 +
.../migrated_0000/actual.js | 2 +
.../migrated_0000/expected.json | 129 ++++
.../migrated_0001/actual.js | 2 +
.../migrated_0001/expected.json | 129 ++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 129 ++++
.../migrated_0003/actual.js | 2 +
.../migrated_0003/expected.json | 197 ++++++
.../migrated_0004/actual.js | 2 +
.../migrated_0004/expected.json | 130 ++++
.../migrated_0005/actual.js | 2 +
.../migrated_0005/expected.json | 198 ++++++
.../migrated_0006/actual.js | 2 +
.../migrated_0006/expected.json | 198 ++++++
.../migrated_0007/actual.js | 2 +
.../migrated_0007/expected.json | 130 ++++
.../migrated_0008/actual.js | 2 +
.../migrated_0008/expected.json | 198 ++++++
.../migrated_0009/actual.js | 2 +
.../migrated_0009/expected.json | 198 ++++++
.../migrated_0010/actual.js | 2 +
.../migrated_0010/expected.json | 132 ++++
.../migrated_0011/actual.js | 2 +
.../migrated_0011/expected.json | 200 ++++++
.../migrated_0012/actual.js | 2 +
.../migrated_0012/expected.json | 200 ++++++
.../migrated_0013/actual.js | 2 +
.../migrated_0013/expected.json | 112 ++++
.../migrated_0014/actual.js | 2 +
.../migrated_0014/expected.json | 181 ++++++
.../migrated_0015/actual.js | 2 +
.../migrated_0015/expected.json | 181 ++++++
.../declaration-const/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 100 +++
.../declaration-const/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 117 ++++
.../declaration-const/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 215 +++++++
.../declaration-function/dupe-param/actual.js | 1 +
.../empty-param/actual.js | 1 +
.../empty-param/expected.json | 150 +++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 131 ++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 83 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 83 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 116 ++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 132 ++++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 168 ++++++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 148 +++++
.../migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 164 +++++
.../migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 165 +++++
.../migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 132 ++++
.../migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 132 ++++
.../migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 180 ++++++
.../migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 84 +++
.../migrated_0013/actual.js | 1 +
.../migrated_0013/expected.json | 100 +++
.../migrated_0014/actual.js | 1 +
.../migrated_0014/expected.json | 151 +++++
.../declaration-let/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 83 +++
.../declaration-let/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 100 +++
.../declaration-let/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 117 ++++
.../declaration-let/migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 215 +++++++
.../directive-prolog/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 180 ++++++
.../directive-prolog/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 180 ++++++
.../array-binding-pattern-01/actual.js | 1 +
.../array-binding-pattern-01/expected.json | 136 +++++
.../array-binding-pattern-02/actual.js | 1 +
.../array-binding-pattern-02/expected.json | 135 +++++
.../array-binding-pattern-03/actual.js | 1 +
.../array-binding-pattern-03/expected.json | 150 +++++
.../array-binding-pattern-empty/actual.js | 1 +
.../array-binding-pattern-empty/expected.json | 102 ++++
.../elision/actual.js | 1 +
.../elision/expected.json | 105 ++++
.../invalid-dup-param/actual.js | 1 +
.../invalid-dup-param/expected.json | 183 ++++++
.../invalid-dup-param/options.json | 3 +
.../invalid-elision-after-rest/actual.js | 1 +
.../invalid-elision-after-rest/expected.json | 150 +++++
.../invalid-elision-after-rest/options.json | 3 +
.../dupe-param-1/actual.js | 2 +
.../dupe-param-2/actual.js | 2 +
.../dupe-param-3/actual.js | 2 +
.../es2015-array-pattern/elision/actual.js | 1 +
.../elision/expected.json | 117 ++++
.../empty-pattern-catch-param/actual.js | 1 +
.../empty-pattern-catch-param/expected.json | 113 ++++
.../empty-pattern-fn/actual.js | 1 +
.../empty-pattern-fn/expected.json | 100 +++
.../empty-pattern-lexical/actual.js | 1 +
.../empty-pattern-lexical/expected.json | 98 +++
.../empty-pattern-var/actual.js | 1 +
.../empty-pattern-var/expected.json | 100 +++
.../es2015-array-pattern/hole/actual.js | 1 +
.../es2015-array-pattern/hole/expected.json | 134 +++++
.../nested-pattern/actual.js | 1 +
.../nested-pattern/expected.json | 117 ++++
.../patterned-catch-dupe/actual.js | 1 +
.../patterned-catch-dupe/expected.json | 146 +++++
.../patterned-catch-dupe/options.json | 3 +
.../patterned-catch/actual.js | 1 +
.../patterned-catch/expected.json | 464 ++++++++++++++
.../es2015-array-pattern/rest/actual.js | 1 +
.../es2015-array-pattern/rest/expected.json | 132 ++++
.../es2015-array-pattern/rest/options.json | 3 +
.../tailing-hold/actual.js | 1 +
.../tailing-hold/expected.json | 118 ++++
.../with-default-catch-param-fail/actual.js | 1 +
.../options.json | 3 +
.../with-default-catch-param/actual.js | 1 +
.../with-default-catch-param/expected.json | 163 +++++
.../with-default-fn/actual.js | 1 +
.../with-default-fn/expected.json | 150 +++++
.../with-object-pattern/actual.js | 1 +
.../with-object-pattern/expected.json | 169 ++++++
.../arrow-rest-forgetting-comma/actual.js | 1 +
.../arrow-rest-forgetting-comma/options.json | 3 +
.../actual.js | 1 +
.../expected.json | 149 +++++
.../arrow-with-multiple-rest/actual.js | 1 +
.../arrow-with-multiple-rest/options.json | 3 +
.../arrow-with-only-rest/actual.js | 1 +
.../arrow-with-only-rest/expected.json | 117 ++++
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-duplicated-params/actual.js | 1 +
.../invalid-duplicated-params/options.json | 3 +
.../invalid-line-terminator-arrow/actual.js | 2 +
.../options.json | 3 +
.../invalid-param-strict-mode/actual.js | 1 +
.../invalid-param-strict-mode/expected.json | 134 +++++
.../invalid-param-strict-mode/options.json | 3 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 85 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 102 ++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 102 ++++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 118 ++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 134 +++++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 155 +++++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 165 +++++
.../migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 150 +++++
.../migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 165 +++++
.../migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 102 ++++
.../migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 102 ++++
.../migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 102 ++++
.../migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 118 ++++
.../migrated_0013/actual.js | 1 +
.../migrated_0013/expected.json | 135 +++++
.../migrated_0014/actual.js | 1 +
.../migrated_0014/expected.json | 151 +++++
.../migrated_0015/actual.js | 1 +
.../migrated_0015/expected.json | 101 ++++
.../migrated_0016/actual.js | 1 +
.../migrated_0016/expected.json | 138 +++++
.../migrated_0017/actual.js | 1 +
.../migrated_0017/expected.json | 203 +++++++
.../migrated_0018/actual.js | 1 +
.../migrated_0018/expected.json | 116 ++++
.../migrated_0019/actual.js | 1 +
.../migrated_0019/expected.json | 149 +++++
.../migrated_0020/actual.js | 1 +
.../migrated_0020/expected.json | 100 +++
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../object-binding-pattern/expected.json | 32 +
.../invalid-member-expr.failure.json | 1 +
.../invalid-member-expr.js | 1 +
.../invalid-method-in-pattern.failure.json | 1 +
.../invalid-method-in-pattern.js | 1 +
.../invalid-nested-param.failure.json | 1 +
.../invalid-nested-param.js | 1 +
...d-pattern-without-parenthesis.failure.json | 1 +
.../invalid-pattern-without-parenthesis.js | 1 +
...nvalid-rest-in-object-pattern.failure.json | 1 +
.../invalid-rest-in-object-pattern.js | 1 +
.../nested-cover-grammar.js | 1 +
.../object-binding-pattern-01.js | 1 +
.../object-binding-pattern-empty.js | 1 +
.../param-with-rest-without-arrow/actual.js | 1 +
.../options.json | 3 +
.../rest-without-arrow/actual.js | 1 +
.../rest-without-arrow/options.json | 3 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 66 ++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 66 ++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 66 ++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 66 ++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 66 ++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 66 ++
.../es2015-class/migrated_0000/actual.js | 1 +
.../es2015-class/migrated_0000/expected.json | 81 +++
.../es2015-class/migrated_0001/actual.js | 1 +
.../es2015-class/migrated_0001/expected.json | 98 +++
.../es2015-class/migrated_0002/actual.js | 1 +
.../es2015-class/migrated_0002/expected.json | 81 +++
.../es2015-class/migrated_0003/actual.js | 1 +
.../es2015-class/migrated_0003/expected.json | 81 +++
.../es2015-class/migrated_0004/actual.js | 1 +
.../es2015-class/migrated_0004/expected.json | 151 +++++
.../es2015-class/migrated_0005/actual.js | 1 +
.../es2015-class/migrated_0005/expected.json | 220 +++++++
.../es2015-class/migrated_0006/actual.js | 1 +
.../es2015-class/migrated_0006/expected.json | 220 +++++++
.../es2015-class/migrated_0007/actual.js | 1 +
.../es2015-class/migrated_0007/expected.json | 220 +++++++
.../es2015-class/migrated_0008/actual.js | 1 +
.../es2015-class/migrated_0008/expected.json | 220 +++++++
.../es2015-class/migrated_0009/actual.js | 1 +
.../es2015-class/migrated_0009/expected.json | 151 +++++
.../es2015-class/migrated_0010/actual.js | 1 +
.../es2015-class/migrated_0010/expected.json | 237 ++++++++
.../es2015-class/migrated_0011/actual.js | 1 +
.../es2015-class/migrated_0011/expected.json | 306 ++++++++++
.../es2015-class/migrated_0012/actual.js | 1 +
.../es2015-class/migrated_0012/expected.json | 151 +++++
.../es2015-class/migrated_0013/actual.js | 1 +
.../es2015-class/migrated_0013/expected.json | 151 +++++
.../es2015-class/migrated_0014/actual.js | 1 +
.../es2015-class/migrated_0014/expected.json | 220 +++++++
.../es2015-class/migrated_0015/actual.js | 1 +
.../es2015-class/migrated_0015/expected.json | 151 +++++
.../es2015-class/migrated_0016/actual.js | 1 +
.../es2015-class/migrated_0016/expected.json | 147 +++++
.../es2015-class/migrated_0017/actual.js | 1 +
.../es2015-class/migrated_0017/expected.json | 151 +++++
.../es2015-class/migrated_0018/actual.js | 1 +
.../es2015-class/migrated_0018/expected.json | 151 +++++
.../es2015-class/migrated_0019/actual.js | 1 +
.../es2015-class/migrated_0019/expected.json | 224 +++++++
.../es2015-class/migrated_0020/actual.js | 1 +
.../es2015-class/migrated_0020/expected.json | 220 +++++++
.../es2015-class/migrated_0021/actual.js | 1 +
.../es2015-class/migrated_0021/expected.json | 153 +++++
.../es2015-class/migrated_0022/actual.js | 1 +
.../es2015-class/migrated_0022/expected.json | 82 +++
.../es2015-class/migrated_0023/actual.js | 1 +
.../es2015-class/migrated_0023/expected.json | 97 +++
.../es2015-class/migrated_0024/actual.js | 1 +
.../es2015-class/migrated_0024/expected.json | 99 +++
.../es2015-class/migrated_0025/actual.js | 1 +
.../es2015-class/migrated_0025/expected.json | 114 ++++
.../es2015-class/migrated_0026/actual.js | 1 +
.../es2015-class/migrated_0026/expected.json | 168 ++++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 165 +++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 133 ++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 217 +++++++
.../dup-assignment/actual.js | 1 +
.../dup-assignment/expected.json | 163 +++++
.../elision/actual.js | 1 +
.../elision/expected.json | 101 ++++
.../member-expr-in-rest/actual.js | 1 +
.../member-expr-in-rest/expected.json | 164 +++++
.../nested-assignment/actual.js | 1 +
.../nested-assignment/expected.json | 293 +++++++++
.../nested-cover-grammar/actual.js | 1 +
.../nested-cover-grammar/expected.json | 198 ++++++
.../simple-assignment/actual.js | 1 +
.../simple-assignment/expected.json | 115 ++++
.../empty-object-pattern-assignment/actual.js | 1 +
.../expected.json | 99 +++
.../invalid-lhs-01/actual.js | 1 +
.../invalid-lhs-01/options.json | 3 +
.../invalid-lhs-02/actual.js | 1 +
.../invalid-lhs-02/options.json | 3 +
.../invalid-pattern-with-method/actual.js | 1 +
.../invalid-pattern-with-method/options.json | 3 +
.../nested-cover-grammar/actual.js | 1 +
.../nested-cover-grammar/expected.json | 555 +++++++++++++++++
.../object-pattern-assignment/actual.js | 8 +
.../object-pattern-assignment/expected.json | 568 ++++++++++++++++++
.../invalid-cover-grammar/actual.js | 1 +
.../invalid-cover-grammar/options.json | 3 +
.../invalid-group-assignment/actual.js | 1 +
.../invalid-group-assignment/options.json | 3 +
.../export-const-number/actual.js | 1 +
.../export-const-number/expected.json | 117 ++++
.../export-default-array/actual.js | 1 +
.../export-default-array/expected.json | 64 ++
.../export-default-class/actual.js | 1 +
.../export-default-class/expected.json | 81 +++
.../export-default-expression/actual.js | 1 +
.../export-default-expression/expected.json | 101 ++++
.../export-default-function/actual.js | 1 +
.../export-default-function/expected.json | 83 +++
.../export-default-named-function/actual.js | 1 +
.../expected.json | 98 +++
.../export-default-number/actual.js | 1 +
.../export-default-number/expected.json | 66 ++
.../export-default-object/actual.js | 1 +
.../export-default-object/expected.json | 118 ++++
.../export-default-value/actual.js | 1 +
.../export-default-value/expected.json | 64 ++
.../export-from-batch/actual.js | 1 +
.../export-from-batch/expected.json | 66 ++
.../export-from-default/actual.js | 1 +
.../export-from-default/expected.json | 116 ++++
.../export-from-named-as-default/actual.js | 1 +
.../expected.json | 116 ++++
.../export-from-named-as-specifier/actual.js | 1 +
.../expected.json | 116 ++++
.../export-from-named-as-specifiers/actual.js | 1 +
.../expected.json | 163 +++++
.../export-from-specifier/actual.js | 1 +
.../export-from-specifier/expected.json | 116 ++++
.../export-from-specifiers/actual.js | 1 +
.../export-from-specifiers/expected.json | 163 +++++
.../export-function-declaration/actual.js | 1 +
.../export-function-declaration/expected.json | 133 ++++
.../export-function/actual.js | 1 +
.../export-function/expected.json | 100 +++
.../export-let-number/actual.js | 1 +
.../export-let-number/expected.json | 117 ++++
.../export-named-as-default/actual.js | 1 +
.../export-named-as-default/expected.json | 99 +++
.../export-named-as-specifier/actual.js | 1 +
.../export-named-as-specifier/expected.json | 99 +++
.../export-named-as-specifiers/actual.js | 1 +
.../export-named-as-specifiers/expected.json | 146 +++++
.../export-named-empty/actual.js | 1 +
.../export-named-empty/expected.json | 51 ++
.../export-named-specifier/actual.js | 1 +
.../export-named-specifier/expected.json | 99 +++
.../export-named-specifiers-comma/actual.js | 1 +
.../expected.json | 146 +++++
.../export-named-specifiers/actual.js | 1 +
.../export-named-specifiers/expected.json | 146 +++++
.../export-var-anonymous-function/actual.js | 1 +
.../expected.json | 134 +++++
.../export-var-number/actual.js | 1 +
.../export-var-number/expected.json | 117 ++++
.../export-var/actual.js | 1 +
.../export-var/expected.json | 100 +++
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-export-batch-token/actual.js | 1 +
.../invalid-export-batch-token/options.json | 3 +
.../invalid-export-default-equal/actual.js | 1 +
.../invalid-export-default-equal/options.json | 3 +
.../invalid-export-default-token/actual.js | 1 +
.../invalid-export-default-token/options.json | 3 +
.../invalid-export-default/actual.js | 1 +
.../invalid-export-default/options.json | 3 +
.../invalid-export-named-default/actual.js | 1 +
.../invalid-export-named-default/options.json | 3 +
.../es2015-export-declaration/options.json | 3 +
.../for-of-array-pattern-let/actual.js | 1 +
.../for-of-array-pattern-let/expected.json | 162 +++++
.../for-of-array-pattern/actual.js | 1 +
.../for-of-array-pattern/expected.json | 128 ++++
.../for-of-object-pattern-const/actual.js | 1 +
.../for-of-object-pattern-const/expected.json | 232 +++++++
.../for-of-object-pattern/actual.js | 1 +
.../for-of-object-pattern/expected.json | 198 ++++++
.../es2015-for-of/for-of-with-const/actual.js | 1 +
.../for-of-with-const/expected.json | 129 ++++
.../es2015-for-of/for-of-with-let/actual.js | 1 +
.../for-of-with-let/expected.json | 129 ++++
.../es2015-for-of/for-of-with-var/actual.js | 1 +
.../for-of-with-var/expected.json | 129 ++++
.../esprima/es2015-for-of/for-of/actual.js | 1 +
.../es2015-for-of/for-of/expected.json | 95 +++
.../invalid-const-init/actual.js | 1 +
.../invalid-const-init/options.json | 3 +
.../es2015-for-of/invalid-let-init/actual.js | 1 +
.../invalid-let-init/options.json | 3 +
.../es2015-for-of/invalid-lhs-init/actual.js | 1 +
.../invalid-lhs-init/options.json | 3 +
.../es2015-for-of/invalid-var-init/actual.js | 1 +
.../invalid-var-init/expected.json | 146 +++++
.../invalid-var-init/options.json | 3 +
.../esprima/es2015-for-of/let-of-of/actual.js | 1 +
.../es2015-for-of/let-of-of/expected.json | 129 ++++
.../es2015-for-of/unexpected-number/actual.js | 1 +
.../unexpected-number/options.json | 3 +
.../actual.js | 1 +
.../expected.json | 132 ++++
.../actual.js | 1 +
.../expected.json | 133 ++++
.../actual.js | 1 +
.../expected.json | 133 ++++
.../generator-declaration/actual.js | 1 +
.../generator-declaration/expected.json | 83 +++
.../generator-expression-rest-param/actual.js | 1 +
.../expected.json | 116 ++++
.../actual.js | 1 +
.../expected.json | 133 ++++
.../actual.js | 1 +
.../expected.json | 181 ++++++
.../generator-expression-with-yield/actual.js | 1 +
.../expected.json | 134 +++++
.../generator-expression/actual.js | 1 +
.../generator-expression/expected.json | 84 +++
.../actual.js | 3 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../generator-method-with-params/actual.js | 1 +
.../expected.json | 185 ++++++
.../actual.js | 1 +
.../expected.json | 186 ++++++
.../actual.js | 1 +
.../expected.json | 186 ++++++
.../actual.js | 4 +
.../expected.json | 202 +++++++
.../generator-method-with-yield/actual.js | 1 +
.../generator-method-with-yield/expected.json | 169 ++++++
.../generator-method/actual.js | 1 +
.../generator-method/expected.json | 136 +++++
.../actual.js | 3 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 3 +
.../options.json | 3 +
.../actual.js | 3 +
.../options.json | 3 +
.../actual.js | 3 +
.../options.json | 3 +
.../actual.js | 3 +
.../options.json | 3 +
.../actual.js | 3 +
.../options.json | 3 +
.../incomplete-yield-delegate/actual.js | 1 +
.../incomplete-yield-delegate/options.json | 3 +
.../malformed-generator-method-2/actual.js | 1 +
.../malformed-generator-method-2/options.json | 3 +
.../malformed-generator-method/actual.js | 1 +
.../malformed-generator-method/options.json | 3 +
.../actual.js | 1 +
.../expected.json | 151 +++++
.../static-generator-method/actual.js | 1 +
.../static-generator-method/expected.json | 151 +++++
.../dakuten_handakuten/actual.js | 1 +
.../dakuten_handakuten/expected.json | 96 +++
.../es2015-identifier/escaped_all/actual.js | 1 +
.../escaped_all/expected.json | 83 +++
.../escaped_math_alef/actual.js | 1 +
.../escaped_math_alef/expected.json | 83 +++
.../escaped_math_dal_part/actual.js | 1 +
.../escaped_math_dal_part/expected.json | 83 +++
.../escaped_math_kaf_lam/actual.js | 1 +
.../escaped_math_kaf_lam/expected.json | 83 +++
.../escaped_math_zain_start/actual.js | 1 +
.../escaped_math_zain_start/expected.json | 83 +++
.../es2015-identifier/escaped_part/actual.js | 1 +
.../escaped_part/expected.json | 83 +++
.../es2015-identifier/escaped_start/actual.js | 1 +
.../escaped_start/expected.json | 83 +++
.../es2015-identifier/estimated/actual.js | 1 +
.../es2015-identifier/estimated/expected.json | 83 +++
.../ethiopic_digits/actual.js | 1 +
.../ethiopic_digits/expected.json | 83 +++
.../invalid_escaped_surrogate_pairs/actual.js | 1 +
.../options.json | 3 +
.../invalid_expression_await/actual.js | 1 +
.../invalid_expression_await/options.json | 3 +
.../invalid_function_wait/actual.js | 1 +
.../invalid_function_wait/expected.json | 83 +++
.../invalid_function_wait/options.json | 3 +
.../invalid_id_smp/actual.js | 1 +
.../invalid_id_smp/options.json | 3 +
.../invalid_lone_surrogate/actual.js | 1 +
.../invalid_lone_surrogate/expected.json | 100 +++
.../invalid_lone_surrogate/options.json | 3 +
.../invalid_var_await/actual.js | 1 +
.../invalid_var_await/options.json | 3 +
.../es2015-identifier/math_alef/actual.js | 1 +
.../es2015-identifier/math_alef/expected.json | 83 +++
.../es2015-identifier/math_dal_part/actual.js | 1 +
.../math_dal_part/expected.json | 83 +++
.../es2015-identifier/math_kaf_lam/actual.js | 1 +
.../math_kaf_lam/expected.json | 83 +++
.../math_zain_start/actual.js | 1 +
.../math_zain_start/expected.json | 83 +++
.../es2015-identifier/module_await/actual.js | 1 +
.../module_await/expected.json | 98 +++
.../es2015-identifier/valid_await/actual.js | 1 +
.../valid_await/expected.json | 115 ++++
.../es2015-identifier/weierstrass/actual.js | 1 +
.../weierstrass/expected.json | 83 +++
.../weierstrass_weierstrass/actual.js | 1 +
.../weierstrass_weierstrass/expected.json | 83 +++
.../actual.js | 1 +
.../expected.json | 146 +++++
.../actual.js | 1 +
.../expected.json | 130 ++++
.../import-default-as/actual.js | 1 +
.../import-default-as/expected.json | 115 ++++
.../import-default/actual.js | 1 +
.../import-default/expected.json | 99 +++
.../import-jquery/actual.js | 1 +
.../import-jquery/expected.json | 99 +++
.../import-module/actual.js | 1 +
.../import-module/expected.json | 67 +++
.../import-named-as-specifier/actual.js | 1 +
.../import-named-as-specifier/expected.json | 115 ++++
.../import-named-as-specifiers/actual.js | 1 +
.../import-named-as-specifiers/expected.json | 162 +++++
.../import-named-empty/actual.js | 1 +
.../import-named-empty/expected.json | 67 +++
.../import-named-specifier/actual.js | 1 +
.../import-named-specifier/expected.json | 115 ++++
.../import-named-specifiers-comma/actual.js | 1 +
.../expected.json | 162 +++++
.../import-named-specifiers/actual.js | 1 +
.../import-named-specifiers/expected.json | 162 +++++
.../import-namespace-specifier/actual.js | 1 +
.../import-namespace-specifier/expected.json | 99 +++
.../import-null-as-nil/actual.js | 1 +
.../import-null-as-nil/expected.json | 115 ++++
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-import-default/actual.js | 1 +
.../invalid-import-default/options.json | 3 +
.../invalid-import-missing-comma/actual.js | 1 +
.../invalid-import-missing-comma/options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-import-module-specifier/actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-import-specifiers/actual.js | 1 +
.../invalid-import-specifiers/options.json | 3 +
.../es2015-import-declaration/options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../invalid_const_forin/actual.js | 1 +
.../invalid_const_forin/options.json | 3 +
.../invalid_let_forin/actual.js | 1 +
.../invalid_let_forin/options.json | 3 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 184 ++++++
.../assign-new-target/actual.js | 3 +
.../assign-new-target/expected.json | 180 ++++++
.../invalid-dots/actual.js | 1 +
.../invalid-dots/options.json | 3 +
.../invalid-new-target/actual.js | 1 +
.../invalid-new-target/expected.json | 129 ++++
.../invalid-new-target/options.json | 3 +
.../new-new-target/actual.js | 3 +
.../new-new-target/expected.json | 162 +++++
.../new-target-declaration/actual.js | 3 +
.../new-target-declaration/expected.json | 146 +++++
.../new-target-expression/actual.js | 1 +
.../new-target-expression/expected.json | 180 ++++++
.../new-target-invoke/actual.js | 3 +
.../new-target-invoke/expected.json | 162 +++++
.../new-target-precedence/actual.js | 3 +
.../new-target-precedence/expected.json | 178 ++++++
.../unknown-property/actual.js | 1 +
.../unknown-property/options.json | 3 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 167 +++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 184 ++++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 169 ++++++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 167 +++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 167 +++++
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 170 ++++++
.../options.json | 3 +
.../invalid-proto-identifiers/actual.js | 1 +
.../invalid-proto-identifiers/options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-proto-literal-shorthand/actual.js | 1 +
.../expected.json | 172 ++++++
.../options.json | 3 +
.../invalid-proto-literals/actual.js | 1 +
.../invalid-proto-literals/options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 170 ++++++
.../options.json | 3 +
.../invalid-proto-shorthand-literal/actual.js | 1 +
.../expected.json | 172 ++++++
.../options.json | 3 +
.../invalid-proto-shorthands/actual.js | 1 +
.../invalid-proto-shorthands/expected.json | 168 ++++++
.../invalid-proto-shorthands/options.json | 3 +
.../proto-identifier-getter-setter/actual.js | 1 +
.../expected.json | 276 +++++++++
.../proto-identifier-getter/actual.js | 1 +
.../proto-identifier-getter/expected.json | 189 ++++++
.../proto-identifier-method/actual.js | 1 +
.../proto-identifier-method/expected.json | 189 ++++++
.../proto-identifier-setter/actual.js | 1 +
.../proto-identifier-setter/expected.json | 206 +++++++
.../proto-literal-getter-setter/actual.js | 1 +
.../proto-literal-getter-setter/expected.json | 278 +++++++++
.../proto-literal-getter/actual.js | 1 +
.../proto-literal-getter/expected.json | 191 ++++++
.../proto-literal-method/actual.js | 1 +
.../proto-literal-method/expected.json | 191 ++++++
.../proto-literal-setter/actual.js | 1 +
.../proto-literal-setter/expected.json | 208 +++++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 199 ++++++
.../es2015-object-pattern/elision/actual.js | 1 +
.../elision/expected.json | 152 +++++
.../empty-catch-param/actual.js | 1 +
.../empty-catch-param/expected.json | 113 ++++
.../es2015-object-pattern/empty-fn/actual.js | 1 +
.../empty-fn/expected.json | 100 +++
.../empty-for-lex/actual.js | 1 +
.../empty-for-lex/expected.json | 131 ++++
.../empty-lexical/actual.js | 1 +
.../empty-lexical/expected.json | 100 +++
.../es2015-object-pattern/empty-var/actual.js | 1 +
.../empty-var/expected.json | 100 +++
.../es2015-object-pattern/nested/actual.js | 1 +
.../nested/expected.json | 152 +++++
.../properties/actual.js | 1 +
.../properties/expected.json | 439 ++++++++++++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 66 ++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 66 ++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 150 +++++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 66 ++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 66 ++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 66 ++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 150 +++++
.../function-declaration/actual.js | 1 +
.../function-declaration/expected.json | 131 ++++
.../function-expression/actual.js | 1 +
.../function-expression/expected.json | 163 +++++
.../object-method/actual.js | 1 +
.../object-method/expected.json | 215 +++++++
.../object-shorthand-method/actual.js | 1 +
.../object-shorthand-method/expected.json | 199 ++++++
.../call-multi-spread/actual.js | 1 +
.../call-multi-spread/expected.json | 174 ++++++
.../call-spread-default/actual.js | 1 +
.../call-spread-default/expected.json | 160 +++++
.../call-spread-first/actual.js | 1 +
.../call-spread-first/expected.json | 144 +++++
.../call-spread-number/actual.js | 1 +
.../call-spread-number/expected.json | 114 ++++
.../call-spread/actual.js | 1 +
.../call-spread/expected.json | 112 ++++
.../invalid-call-dot-dot/actual.js | 1 +
.../invalid-call-dot-dot/options.json | 3 +
.../invalid-call-dots/actual.js | 1 +
.../invalid-call-dots/options.json | 3 +
.../invalid-call-spreads/actual.js | 1 +
.../invalid-call-spreads/options.json | 3 +
.../invalid-new-dot-dot/actual.js | 1 +
.../invalid-new-dot-dot/options.json | 3 +
.../invalid-new-dots/actual.js | 1 +
.../invalid-new-dots/options.json | 3 +
.../invalid-new-spreads/actual.js | 1 +
.../invalid-new-spreads/options.json | 3 +
.../new-multi-spread/actual.js | 1 +
.../new-multi-spread/expected.json | 174 ++++++
.../new-spread-default/actual.js | 1 +
.../new-spread-default/expected.json | 160 +++++
.../new-spread-first/actual.js | 1 +
.../new-spread-first/expected.json | 144 +++++
.../new-spread-number/actual.js | 1 +
.../new-spread-number/expected.json | 114 ++++
.../new-spread/actual.js | 1 +
.../new-spread/expected.json | 112 ++++
.../arrow_super/actual.js | 5 +
.../arrow_super/expected.json | 232 +++++++
.../constructor_super/actual.js | 5 +
.../constructor_super/expected.json | 213 +++++++
.../invalid_super_access/actual.js | 5 +
.../invalid_super_access/options.json | 3 +
.../invalid_super_id/actual.js | 3 +
.../invalid_super_id/expected.json | 232 +++++++
.../invalid_super_id/options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../es2015-super-property/new_super/actual.js | 5 +
.../new_super/expected.json | 245 ++++++++
.../super_computed/actual.js | 5 +
.../super_computed/expected.json | 231 +++++++
.../super_member/actual.js | 5 +
.../super_member/expected.json | 229 +++++++
.../after-switch/actual.js | 1 +
.../after-switch/options.json | 3 +
.../dollar-sign/actual.js | 1 +
.../dollar-sign/expected.json | 86 +++
.../escape-sequences/actual.js | 1 +
.../escape-sequences/expected.json | 100 +++
.../invalid-escape/actual.js | 1 +
.../invalid-escape/options.json | 3 +
.../line-terminators/actual.js | 1 +
.../line-terminators/expected.json | 100 +++
.../literal-escape-sequences/actual.js | 1 +
.../literal-escape-sequences/expected.json | 100 +++
.../new-expression/actual.js | 1 +
.../new-expression/expected.json | 133 ++++
.../octal-literal/actual.js | 1 +
.../octal-literal/expected.json | 86 +++
.../octal-literal/options.json | 3 +
.../strict-octal-literal/actual.js | 1 +
.../strict-octal-literal/expected.json | 119 ++++
.../strict-octal-literal/options.json | 3 +
.../tagged-interpolation/actual.js | 1 +
.../tagged-interpolation/expected.json | 154 +++++
.../actual.js | 1 +
.../expected.json | 267 ++++++++
.../es2015-template-literals/tagged/actual.js | 1 +
.../tagged/expected.json | 117 ++++
.../unclosed-interpolation/actual.js | 1 +
.../unclosed-interpolation/options.json | 3 +
.../unclosed-nested/actual.js | 1 +
.../unclosed-nested/options.json | 3 +
.../unclosed/actual.js | 1 +
.../unclosed/options.json | 3 +
.../untagged/actual.js | 1 +
.../untagged/expected.json | 86 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 100 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 100 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 100 +++
.../invalid-yield-binding-property/actual.js | 1 +
.../options.json | 3 +
.../invalid-yield-expression/actual.js | 1 +
.../invalid-yield-expression/options.json | 3 +
.../actual.js | 1 +
.../expected.json | 200 ++++++
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../invalid-yield-generator-catch/actual.js | 1 +
.../expected.json | 164 +++++
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 99 +++
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 101 ++++
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 132 ++++
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 100 +++
.../options.json | 3 +
.../invalid-yield-generator-rest/actual.js | 1 +
.../expected.json | 163 +++++
.../invalid-yield-generator-rest/options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 134 +++++
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 164 +++++
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 117 ++++
.../options.json | 3 +
.../actual.js | 1 +
.../expected.json | 133 ++++
.../options.json | 3 +
.../invalid-yield-strict-identifier/actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../actual.js | 1 +
.../options.json | 3 +
.../yield-array-pattern/actual.js | 1 +
.../yield-array-pattern/expected.json | 114 ++++
.../yield-arrow-concise-body/actual.js | 1 +
.../yield-arrow-concise-body/expected.json | 132 ++++
.../yield-arrow-function-body/actual.js | 1 +
.../yield-arrow-function-body/expected.json | 164 +++++
.../yield-arrow-parameter-default/actual.js | 1 +
.../expected.json | 131 ++++
.../yield-arrow-parameter-name/actual.js | 1 +
.../yield-arrow-parameter-name/expected.json | 102 ++++
.../yield-binding-element/actual.js | 1 +
.../yield-binding-element/expected.json | 150 +++++
.../yield-binding-property/actual.js | 1 +
.../yield-binding-property/expected.json | 150 +++++
.../yield-call-expression-property/actual.js | 1 +
.../expected.json | 163 +++++
.../yield-catch-parameter/actual.js | 1 +
.../yield-catch-parameter/expected.json | 113 ++++
.../yield-expression-precedence/actual.js | 1 +
.../yield-expression-precedence/expected.json | 260 ++++++++
.../actual.js | 1 +
.../expected.json | 100 +++
.../yield-function-declaration/actual.js | 1 +
.../yield-function-declaration/expected.json | 83 +++
.../actual.js | 1 +
.../expected.json | 101 ++++
.../yield-function-expression/actual.js | 1 +
.../yield-function-expression/expected.json | 99 +++
.../actual.js | 1 +
.../expected.json | 183 ++++++
.../yield-generator-arrow-default/actual.js | 1 +
.../expected.json | 183 ++++++
.../actual.js | 1 +
.../expected.json | 215 +++++++
.../yield-generator-declaration/actual.js | 1 +
.../yield-generator-declaration/expected.json | 83 +++
.../actual.js | 1 +
.../expected.json | 131 ++++
.../actual.js | 1 +
.../actual.js | 1 +
.../expected.json | 185 ++++++
.../yield-generator-method/actual.js | 1 +
.../yield-generator-method/expected.json | 136 +++++
.../actual.js | 1 +
.../expected.json | 152 +++++
.../yield-lexical-declaration/actual.js | 1 +
.../yield-lexical-declaration/expected.json | 100 +++
.../actual.js | 1 +
.../expected.json | 163 +++++
.../es2015-yield/yield-method/actual.js | 1 +
.../es2015-yield/yield-method/expected.json | 136 +++++
.../yield-parameter-object-pattern/actual.js | 1 +
.../expected.json | 152 +++++
.../yield-rest-parameter/actual.js | 1 +
.../yield-rest-parameter/expected.json | 115 ++++
.../yield-strict-binding-property/actual.js | 1 +
.../expected.json | 183 ++++++
.../yield-strict-method/actual.js | 1 +
.../yield-strict-method/expected.json | 169 ++++++
.../yield-super-property/actual.js | 1 +
.../yield-super-property/expected.json | 229 +++++++
.../yield-variable-declaration/actual.js | 1 +
.../yield-variable-declaration/expected.json | 83 +++
.../yield-yield-expression-delegate/actual.js | 1 +
.../expected.json | 132 ++++
.../yield-yield-expression/actual.js | 1 +
.../yield-yield-expression/expected.json | 132 ++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 100 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 98 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 98 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 98 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 98 +++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 98 +++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 98 +++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 98 +++
.../migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 98 +++
.../migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 98 +++
.../migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 98 +++
.../migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 98 +++
.../migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 98 +++
.../migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 98 +++
.../migrated_0013/actual.js | 1 +
.../migrated_0013/expected.json | 98 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 96 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 128 ++++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 128 ++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 128 ++++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 128 ++++
.../expression-binary/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 128 ++++
.../expression-binary/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 128 ++++
.../expression-binary/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 128 ++++
.../expression-binary/migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 128 ++++
.../expression-binary/migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 128 ++++
.../expression-binary/migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 128 ++++
.../expression-binary/migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 128 ++++
.../expression-binary/migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 128 ++++
.../expression-binary/migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 128 ++++
.../expression-binary/migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 128 ++++
.../expression-binary/migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 128 ++++
.../expression-binary/migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 128 ++++
.../expression-binary/migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 128 ++++
.../expression-binary/migrated_0013/actual.js | 1 +
.../migrated_0013/expected.json | 128 ++++
.../expression-binary/migrated_0014/actual.js | 1 +
.../migrated_0014/expected.json | 128 ++++
.../expression-binary/migrated_0015/actual.js | 1 +
.../migrated_0015/expected.json | 128 ++++
.../expression-binary/migrated_0016/actual.js | 1 +
.../migrated_0016/expected.json | 128 ++++
.../expression-binary/migrated_0017/actual.js | 1 +
.../migrated_0017/expected.json | 128 ++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 96 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 384 ++++++++++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 115 ++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 147 +++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 150 +++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 96 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 96 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 136 +++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 135 +++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 80 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 80 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 96 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 96 +++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 128 ++++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 112 ++++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 112 ++++
.../migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 129 ++++
.../migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 113 ++++
.../migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 81 +++
.../migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 96 +++
.../migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 128 ++++
.../migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 160 +++++
.../migrated_0013/actual.js | 1 +
.../migrated_0013/expected.json | 129 ++++
.../migrated_0014/actual.js | 1 +
.../migrated_0014/expected.json | 96 +++
.../migrated_0015/actual.js | 1 +
.../migrated_0015/expected.json | 130 ++++
.../migrated_0016/actual.js | 1 +
.../migrated_0016/expected.json | 131 ++++
.../migrated_0017/actual.js | 1 +
.../migrated_0017/expected.json | 234 ++++++++
.../migrated_0018/actual.js | 1 +
.../migrated_0018/expected.json | 195 ++++++
.../migrated_0019/actual.js | 1 +
.../migrated_0019/expected.json | 96 +++
.../migrated_0020/actual.js | 1 +
.../migrated_0020/expected.json | 96 +++
.../migrated_0021/actual.js | 1 +
.../migrated_0021/expected.json | 96 +++
.../migrated_0022/actual.js | 1 +
.../migrated_0022/expected.json | 96 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 96 +++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 81 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 81 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 81 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 81 +++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 81 +++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 81 +++
.../expression-primary/array/expected.json | 32 +
.../expression-primary/array/migrated_0000.js | 1 +
.../expression-primary/array/migrated_0001.js | 1 +
.../expression-primary/array/migrated_0002.js | 1 +
.../expression-primary/array/migrated_0003.js | 1 +
.../expression-primary/array/migrated_0004.js | 1 +
.../expression-primary/array/migrated_0005.js | 1 +
.../expression-primary/array/migrated_0006.js | 1 +
.../expression-primary/array/migrated_0007.js | 1 +
.../array/migrated_0008.source.js | 1 +
.../array/migrated_0009.source.js | 1 +
.../array/migrated_0010.source.js | 1 +
.../array/migrated_0011.source.js | 1 +
.../array/migrated_0012.source.js | 1 +
.../expression-primary/literal/expected.json | 32 +
.../literal/numeric/migrated_0000.js | 1 +
.../literal/numeric/migrated_0001.js | 1 +
.../literal/numeric/migrated_0002.js | 1 +
.../literal/numeric/migrated_0003.js | 1 +
.../literal/numeric/migrated_0004.js | 1 +
.../literal/numeric/migrated_0005.js | 1 +
.../literal/numeric/migrated_0006.js | 1 +
.../literal/numeric/migrated_0007.js | 1 +
.../literal/numeric/migrated_0008.js | 1 +
.../literal/numeric/migrated_0009.js | 1 +
.../literal/numeric/migrated_0010.js | 1 +
.../literal/numeric/migrated_0011.js | 1 +
.../literal/numeric/migrated_0012.js | 1 +
.../literal/numeric/migrated_0013.js | 1 +
.../literal/numeric/migrated_0014.js | 1 +
.../literal/numeric/migrated_0015.js | 1 +
.../literal/numeric/migrated_0016.js | 1 +
.../literal/numeric/migrated_0017.js | 1 +
.../literal/numeric/migrated_0018.js | 1 +
.../literal/numeric/migrated_0019.js | 1 +
.../literal/numeric/migrated_0020.js | 1 +
.../literal/numeric/migrated_0021.js | 1 +
.../literal/numeric/migrated_0022.js | 1 +
.../literal/numeric/migrated_0023.js | 1 +
.../literal/numeric/migrated_0024.js | 1 +
.../regular-expression/migrated_0000.js | 1 +
.../regular-expression/migrated_0001.js | 1 +
.../regular-expression/migrated_0002.js | 1 +
.../regular-expression/migrated_0003.js | 1 +
.../regular-expression/migrated_0004.js | 1 +
.../migrated_0005.source.js | 1 +
.../migrated_0006.failure.json | 6 +
.../migrated_0006.source.js | 1 +
.../regular-expression/migrated_0007.js | 1 +
.../regular-expression/migrated_0008.js | 1 +
.../regular-expression/migrated_0009.js | 1 +
.../regular-expression/migrated_0010.js | 1 +
.../regular-expression/migrated_0011.js | 1 +
.../regular-expression/migrated_0012.js | 1 +
.../regular-expression/migrated_0013.js | 1 +
.../u-flag-invalid-range-4-hex.failure.json | 6 +
.../u-flag-invalid-range-4-hex.js | 1 +
.../u-flag-invalid-range-var-hex.failure.json | 6 +
.../u-flag-invalid-range-var-hex.js | 1 +
.../u-flag-surrogate-pair.js | 1 +
.../regular-expression/u-flag-valid-range.js | 1 +
.../literal/string/migrated_0000.js | 1 +
.../literal/string/migrated_0001.js | 1 +
.../literal/string/migrated_0002.source.js | 1 +
.../literal/string/migrated_0003.js | 1 +
.../literal/string/migrated_0006.js | 1 +
.../literal/string/migrated_0007.js | 2 +
.../literal/string/migrated_0008.js | 1 +
.../literal/string/migrated_0009.js | 1 +
.../literal/string/migrated_0010.js | 1 +
.../literal/string/migrated_0011.js | 1 +
.../literal/string/migrated_0012.js | 1 +
.../literal/string/migrated_0013.js | 1 +
.../literal/string/migrated_0015.js | 1 +
.../literal/string/migrated_0016.js | 1 +
.../literal/string/migrated_0017.js | 2 +
.../literal/string/migrated_0018.js | 1 +
.../expression-primary/object/expected.json | 32 +
.../object/migrated_0000.js | 1 +
.../object/migrated_0001.js | 1 +
.../object/migrated_0002.js | 1 +
.../object/migrated_0003.js | 1 +
.../object/migrated_0004.js | 1 +
.../object/migrated_0005.js | 1 +
.../object/migrated_0006.js | 1 +
.../object/migrated_0007.js | 1 +
.../object/migrated_0008.js | 1 +
.../object/migrated_0009.js | 1 +
.../object/migrated_0010.js | 1 +
.../object/migrated_0011.js | 1 +
.../object/migrated_0012.js | 1 +
.../object/migrated_0013.js | 1 +
.../object/migrated_0014.js | 1 +
.../object/migrated_0015.js | 1 +
.../object/migrated_0016.js | 1 +
.../object/migrated_0017.js | 1 +
.../object/migrated_0018.js | 1 +
.../object/migrated_0019.js | 1 +
.../object/migrated_0020.js | 1 +
.../object/migrated_0021.js | 1 +
.../object/migrated_0022.js | 1 +
.../object/migrated_0023.js | 1 +
.../object/migrated_0024.js | 1 +
.../object/migrated_0025.js | 1 +
.../object/migrated_0026.js | 1 +
.../object/migrated_0027.js | 1 +
.../object/migrated_0028.js | 1 +
.../object/migrated_0029.js | 1 +
.../object/migrated_0030.js | 1 +
.../object/migrated_0031.js | 1 +
.../object/migrated_0032.js | 1 +
.../object/migrated_0033.js | 1 +
.../object/migrated_0034.js | 1 +
.../object/migrated_0035.js | 1 +
.../object/migrated_0036.js | 1 +
.../object/migrated_0037.js | 1 +
.../object/migrated_0038.js | 1 +
.../expression-primary/other/expected.json | 32 +
.../expression-primary/other/migrated_0000.js | 1 +
.../expression-primary/other/migrated_0001.js | 1 +
.../expression-primary/other/migrated_0002.js | 3 +
.../expression-primary/other/migrated_0003.js | 1 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 96 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 96 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 96 +++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 96 +++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 96 +++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 128 ++++
.../expression-unary/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 81 +++
.../expression-unary/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 81 +++
.../expression-unary/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 81 +++
.../expression-unary/migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 81 +++
.../expression-unary/migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 81 +++
.../expression-unary/migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 81 +++
.../expression-unary/migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 81 +++
.../expression-unary/migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 81 +++
.../expression-unary/migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 81 +++
.../expression-unary/migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 81 +++
.../expression-unary/migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 81 +++
.../expression-unary/migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 81 +++
.../expression-unary/migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 81 +++
.../invalid-syntax/GH-1106-00/actual.js | 1 +
.../invalid-syntax/GH-1106-00/options.json | 3 +
.../invalid-syntax/GH-1106-01/actual.js | 1 +
.../invalid-syntax/GH-1106-01/options.json | 3 +
.../invalid-syntax/GH-1106-02/actual.js | 1 +
.../invalid-syntax/GH-1106-02/options.json | 3 +
.../invalid-syntax/GH-1106-03/actual.js | 1 +
.../invalid-syntax/GH-1106-03/options.json | 3 +
.../invalid-syntax/GH-1106-04/actual.js | 1 +
.../invalid-syntax/GH-1106-04/options.json | 3 +
.../invalid-syntax/GH-1106-05/actual.js | 1 +
.../invalid-syntax/GH-1106-05/options.json | 3 +
.../invalid-syntax/GH-1106-06/actual.js | 1 +
.../invalid-syntax/GH-1106-06/options.json | 3 +
.../invalid-syntax/GH-1106-07/actual.js | 1 +
.../invalid-syntax/GH-1106-07/options.json | 3 +
.../invalid-syntax/GH-1106-09/actual.js | 1 +
.../invalid-syntax/GH-1106-09/expected.json | 66 ++
.../invalid-syntax/GH-1106-09/options.json | 3 +
.../invalid-syntax/migrated_0000/actual.js | 1 +
.../invalid-syntax/migrated_0000/options.json | 3 +
.../invalid-syntax/migrated_0001/actual.js | 1 +
.../invalid-syntax/migrated_0001/options.json | 3 +
.../invalid-syntax/migrated_0002/actual.js | 1 +
.../invalid-syntax/migrated_0002/options.json | 3 +
.../invalid-syntax/migrated_0003/actual.js | 1 +
.../invalid-syntax/migrated_0003/options.json | 3 +
.../invalid-syntax/migrated_0004/actual.js | 1 +
.../invalid-syntax/migrated_0004/options.json | 3 +
.../invalid-syntax/migrated_0005/actual.js | 1 +
.../invalid-syntax/migrated_0005/options.json | 3 +
.../invalid-syntax/migrated_0006/actual.js | 1 +
.../invalid-syntax/migrated_0006/options.json | 3 +
.../invalid-syntax/migrated_0007/actual.js | 1 +
.../invalid-syntax/migrated_0007/options.json | 3 +
.../invalid-syntax/migrated_0008/actual.js | 1 +
.../invalid-syntax/migrated_0008/options.json | 3 +
.../invalid-syntax/migrated_0009/actual.js | 1 +
.../invalid-syntax/migrated_0009/options.json | 3 +
.../invalid-syntax/migrated_0010/actual.js | 1 +
.../invalid-syntax/migrated_0010/options.json | 3 +
.../invalid-syntax/migrated_0011/actual.js | 1 +
.../invalid-syntax/migrated_0011/options.json | 3 +
.../invalid-syntax/migrated_0012/actual.js | 1 +
.../invalid-syntax/migrated_0012/options.json | 3 +
.../invalid-syntax/migrated_0013/actual.js | 1 +
.../invalid-syntax/migrated_0013/options.json | 3 +
.../invalid-syntax/migrated_0014/actual.js | 1 +
.../invalid-syntax/migrated_0014/options.json | 3 +
.../invalid-syntax/migrated_0015/actual.js | 1 +
.../invalid-syntax/migrated_0015/options.json | 3 +
.../invalid-syntax/migrated_0016/actual.js | 1 +
.../invalid-syntax/migrated_0016/options.json | 3 +
.../invalid-syntax/migrated_0017/actual.js | 1 +
.../invalid-syntax/migrated_0017/options.json | 3 +
.../invalid-syntax/migrated_0018/actual.js | 1 +
.../invalid-syntax/migrated_0018/options.json | 3 +
.../invalid-syntax/migrated_0019/actual.js | 1 +
.../invalid-syntax/migrated_0019/options.json | 3 +
.../invalid-syntax/migrated_0020/actual.js | 1 +
.../invalid-syntax/migrated_0020/options.json | 3 +
.../invalid-syntax/migrated_0021/actual.js | 1 +
.../invalid-syntax/migrated_0021/options.json | 3 +
.../invalid-syntax/migrated_0022/actual.js | 1 +
.../invalid-syntax/migrated_0022/options.json | 3 +
.../invalid-syntax/migrated_0023/actual.js | 1 +
.../invalid-syntax/migrated_0023/options.json | 3 +
.../invalid-syntax/migrated_0024/actual.js | 1 +
.../invalid-syntax/migrated_0024/options.json | 3 +
.../invalid-syntax/migrated_0025/actual.js | 1 +
.../invalid-syntax/migrated_0025/options.json | 3 +
.../invalid-syntax/migrated_0026/actual.js | 1 +
.../invalid-syntax/migrated_0026/options.json | 3 +
.../invalid-syntax/migrated_0027/actual.js | 1 +
.../invalid-syntax/migrated_0027/options.json | 3 +
.../invalid-syntax/migrated_0028/actual.js | 1 +
.../invalid-syntax/migrated_0028/options.json | 3 +
.../invalid-syntax/migrated_0029/actual.js | 1 +
.../invalid-syntax/migrated_0029/options.json | 3 +
.../invalid-syntax/migrated_0030/actual.js | 1 +
.../invalid-syntax/migrated_0030/options.json | 3 +
.../invalid-syntax/migrated_0031/actual.js | 2 +
.../invalid-syntax/migrated_0031/options.json | 3 +
.../invalid-syntax/migrated_0032/actual.js | 1 +
.../invalid-syntax/migrated_0032/options.json | 3 +
.../invalid-syntax/migrated_0033/actual.js | 1 +
.../migrated_0033/expected.json | 100 +++
.../invalid-syntax/migrated_0033/options.json | 3 +
.../invalid-syntax/migrated_0034/actual.js | 1 +
.../migrated_0034/expected.json | 100 +++
.../invalid-syntax/migrated_0034/options.json | 3 +
.../invalid-syntax/migrated_0035/actual.js | 1 +
.../invalid-syntax/migrated_0035/options.json | 3 +
.../invalid-syntax/migrated_0036/actual.js | 1 +
.../migrated_0036/expected.json | 100 +++
.../invalid-syntax/migrated_0036/options.json | 3 +
.../invalid-syntax/migrated_0037/actual.js | 1 +
.../migrated_0037/expected.json | 100 +++
.../invalid-syntax/migrated_0037/options.json | 3 +
.../invalid-syntax/migrated_0038/actual.js | 1 +
.../invalid-syntax/migrated_0038/options.json | 3 +
.../invalid-syntax/migrated_0039/actual.js | 1 +
.../invalid-syntax/migrated_0039/options.json | 3 +
.../invalid-syntax/migrated_0040/actual.js | 2 +
.../invalid-syntax/migrated_0040/options.json | 3 +
.../invalid-syntax/migrated_0041/actual.js | 1 +
.../migrated_0041/expected.json | 100 +++
.../invalid-syntax/migrated_0041/options.json | 3 +
.../invalid-syntax/migrated_0042/actual.js | 1 +
.../migrated_0042/expected.json | 100 +++
.../invalid-syntax/migrated_0042/options.json | 3 +
.../invalid-syntax/migrated_0043/actual.js | 1 +
.../migrated_0043/expected.json | 100 +++
.../invalid-syntax/migrated_0043/options.json | 3 +
.../invalid-syntax/migrated_0044/actual.js | 1 +
.../migrated_0044/expected.json | 100 +++
.../invalid-syntax/migrated_0044/options.json | 3 +
.../invalid-syntax/migrated_0045/actual.js | 1 +
.../invalid-syntax/migrated_0045/options.json | 3 +
.../invalid-syntax/migrated_0046/actual.js | 1 +
.../invalid-syntax/migrated_0046/options.json | 3 +
.../invalid-syntax/migrated_0047/actual.js | 1 +
.../invalid-syntax/migrated_0047/options.json | 3 +
.../invalid-syntax/migrated_0048/actual.js | 1 +
.../migrated_0048/expected.json | 100 +++
.../invalid-syntax/migrated_0048/options.json | 3 +
.../invalid-syntax/migrated_0049/actual.js | 1 +
.../migrated_0049/expected.json | 100 +++
.../invalid-syntax/migrated_0049/options.json | 3 +
.../invalid-syntax/migrated_0050/actual.js | 1 +
.../migrated_0050/expected.json | 100 +++
.../invalid-syntax/migrated_0050/options.json | 3 +
.../invalid-syntax/migrated_0051/actual.js | 1 +
.../migrated_0051/expected.json | 100 +++
.../invalid-syntax/migrated_0051/options.json | 3 +
.../invalid-syntax/migrated_0052/actual.js | 1 +
.../invalid-syntax/migrated_0052/options.json | 3 +
.../invalid-syntax/migrated_0053/actual.js | 1 +
.../invalid-syntax/migrated_0053/options.json | 3 +
.../invalid-syntax/migrated_0054/actual.js | 1 +
.../invalid-syntax/migrated_0054/options.json | 3 +
.../invalid-syntax/migrated_0055/actual.js | 1 +
.../invalid-syntax/migrated_0055/options.json | 3 +
.../invalid-syntax/migrated_0056/actual.js | 1 +
.../invalid-syntax/migrated_0056/options.json | 3 +
.../invalid-syntax/migrated_0057/actual.js | 1 +
.../invalid-syntax/migrated_0057/options.json | 3 +
.../invalid-syntax/migrated_0058/actual.js | 1 +
.../invalid-syntax/migrated_0058/options.json | 3 +
.../invalid-syntax/migrated_0059/actual.js | 1 +
.../invalid-syntax/migrated_0059/options.json | 3 +
.../invalid-syntax/migrated_0060/actual.js | 1 +
.../invalid-syntax/migrated_0060/options.json | 3 +
.../invalid-syntax/migrated_0061/actual.js | 1 +
.../invalid-syntax/migrated_0061/options.json | 3 +
.../invalid-syntax/migrated_0062/actual.js | 2 +
.../invalid-syntax/migrated_0062/options.json | 3 +
.../invalid-syntax/migrated_0063/actual.js | 1 +
.../invalid-syntax/migrated_0063/options.json | 3 +
.../invalid-syntax/migrated_0064/actual.js | 1 +
.../invalid-syntax/migrated_0064/options.json | 3 +
.../invalid-syntax/migrated_0065/actual.js | 1 +
.../invalid-syntax/migrated_0065/options.json | 3 +
.../invalid-syntax/migrated_0066/actual.js | 1 +
.../invalid-syntax/migrated_0066/options.json | 3 +
.../invalid-syntax/migrated_0067/actual.js | 1 +
.../invalid-syntax/migrated_0067/options.json | 3 +
.../invalid-syntax/migrated_0068/actual.js | 1 +
.../invalid-syntax/migrated_0068/options.json | 3 +
.../invalid-syntax/migrated_0069/actual.js | 1 +
.../invalid-syntax/migrated_0069/options.json | 3 +
.../invalid-syntax/migrated_0070/actual.js | 3 +
.../invalid-syntax/migrated_0070/options.json | 3 +
.../invalid-syntax/migrated_0071/actual.js | 1 +
.../invalid-syntax/migrated_0071/options.json | 3 +
.../invalid-syntax/migrated_0072/actual.js | 1 +
.../invalid-syntax/migrated_0072/options.json | 3 +
.../invalid-syntax/migrated_0073/actual.js | 1 +
.../invalid-syntax/migrated_0073/options.json | 3 +
.../invalid-syntax/migrated_0074/actual.js | 1 +
.../invalid-syntax/migrated_0074/options.json | 3 +
.../invalid-syntax/migrated_0075/actual.js | 1 +
.../invalid-syntax/migrated_0075/options.json | 3 +
.../invalid-syntax/migrated_0076/actual.js | 1 +
.../invalid-syntax/migrated_0076/options.json | 3 +
.../invalid-syntax/migrated_0077/actual.js | 1 +
.../invalid-syntax/migrated_0077/options.json | 3 +
.../invalid-syntax/migrated_0078/actual.js | 1 +
.../invalid-syntax/migrated_0078/options.json | 3 +
.../invalid-syntax/migrated_0080/actual.js | 1 +
.../invalid-syntax/migrated_0080/options.json | 3 +
.../invalid-syntax/migrated_0081/actual.js | 1 +
.../invalid-syntax/migrated_0081/options.json | 3 +
.../invalid-syntax/migrated_0082/actual.js | 1 +
.../invalid-syntax/migrated_0082/options.json | 3 +
.../invalid-syntax/migrated_0083/actual.js | 1 +
.../invalid-syntax/migrated_0083/options.json | 3 +
.../invalid-syntax/migrated_0084/actual.js | 1 +
.../invalid-syntax/migrated_0084/options.json | 3 +
.../invalid-syntax/migrated_0085/actual.js | 1 +
.../invalid-syntax/migrated_0085/options.json | 3 +
.../invalid-syntax/migrated_0086/actual.js | 1 +
.../invalid-syntax/migrated_0086/options.json | 3 +
.../invalid-syntax/migrated_0087/actual.js | 1 +
.../invalid-syntax/migrated_0087/options.json | 3 +
.../invalid-syntax/migrated_0088/actual.js | 1 +
.../invalid-syntax/migrated_0088/options.json | 3 +
.../invalid-syntax/migrated_0089/actual.js | 1 +
.../invalid-syntax/migrated_0089/options.json | 3 +
.../invalid-syntax/migrated_0090/actual.js | 1 +
.../invalid-syntax/migrated_0090/options.json | 3 +
.../invalid-syntax/migrated_0091/actual.js | 1 +
.../invalid-syntax/migrated_0091/options.json | 3 +
.../invalid-syntax/migrated_0092/actual.js | 1 +
.../migrated_0092/expected.json | 118 ++++
.../invalid-syntax/migrated_0092/options.json | 3 +
.../invalid-syntax/migrated_0093/actual.js | 1 +
.../invalid-syntax/migrated_0093/options.json | 3 +
.../invalid-syntax/migrated_0094/actual.js | 1 +
.../invalid-syntax/migrated_0094/options.json | 3 +
.../invalid-syntax/migrated_0095/actual.js | 1 +
.../invalid-syntax/migrated_0095/options.json | 3 +
.../invalid-syntax/migrated_0096/actual.js | 1 +
.../invalid-syntax/migrated_0096/options.json | 3 +
.../invalid-syntax/migrated_0097/actual.js | 1 +
.../invalid-syntax/migrated_0097/options.json | 3 +
.../invalid-syntax/migrated_0098/actual.js | 1 +
.../invalid-syntax/migrated_0098/options.json | 3 +
.../invalid-syntax/migrated_0099/actual.js | 1 +
.../invalid-syntax/migrated_0099/options.json | 3 +
.../invalid-syntax/migrated_0100/actual.js | 1 +
.../invalid-syntax/migrated_0100/options.json | 3 +
.../invalid-syntax/migrated_0101/actual.js | 1 +
.../migrated_0101/expected.json | 167 +++++
.../invalid-syntax/migrated_0101/options.json | 3 +
.../invalid-syntax/migrated_0102/actual.js | 1 +
.../invalid-syntax/migrated_0102/options.json | 3 +
.../invalid-syntax/migrated_0103/actual.js | 1 +
.../invalid-syntax/migrated_0103/options.json | 3 +
.../invalid-syntax/migrated_0104/actual.js | 1 +
.../invalid-syntax/migrated_0104/options.json | 3 +
.../invalid-syntax/migrated_0105/actual.js | 1 +
.../invalid-syntax/migrated_0105/options.json | 3 +
.../invalid-syntax/migrated_0106/actual.js | 1 +
.../invalid-syntax/migrated_0106/options.json | 3 +
.../invalid-syntax/migrated_0107/actual.js | 1 +
.../invalid-syntax/migrated_0107/options.json | 3 +
.../invalid-syntax/migrated_0108/actual.js | 1 +
.../invalid-syntax/migrated_0108/options.json | 3 +
.../invalid-syntax/migrated_0109/actual.js | 1 +
.../invalid-syntax/migrated_0109/options.json | 3 +
.../invalid-syntax/migrated_0110/actual.js | 1 +
.../invalid-syntax/migrated_0110/options.json | 3 +
.../invalid-syntax/migrated_0111/actual.js | 1 +
.../invalid-syntax/migrated_0111/options.json | 3 +
.../invalid-syntax/migrated_0112/actual.js | 1 +
.../invalid-syntax/migrated_0112/options.json | 3 +
.../invalid-syntax/migrated_0113/actual.js | 1 +
.../invalid-syntax/migrated_0113/options.json | 3 +
.../invalid-syntax/migrated_0114/actual.js | 1 +
.../invalid-syntax/migrated_0114/options.json | 3 +
.../invalid-syntax/migrated_0115/actual.js | 1 +
.../invalid-syntax/migrated_0115/options.json | 3 +
.../invalid-syntax/migrated_0116/actual.js | 1 +
.../invalid-syntax/migrated_0116/options.json | 3 +
.../invalid-syntax/migrated_0117/actual.js | 1 +
.../invalid-syntax/migrated_0117/options.json | 3 +
.../invalid-syntax/migrated_0118/actual.js | 1 +
.../invalid-syntax/migrated_0118/options.json | 3 +
.../invalid-syntax/migrated_0119/actual.js | 1 +
.../invalid-syntax/migrated_0119/options.json | 3 +
.../invalid-syntax/migrated_0120/actual.js | 1 +
.../invalid-syntax/migrated_0120/options.json | 3 +
.../invalid-syntax/migrated_0121/actual.js | 1 +
.../invalid-syntax/migrated_0121/options.json | 3 +
.../invalid-syntax/migrated_0122/actual.js | 1 +
.../invalid-syntax/migrated_0122/options.json | 3 +
.../invalid-syntax/migrated_0123/actual.js | 1 +
.../invalid-syntax/migrated_0123/options.json | 3 +
.../invalid-syntax/migrated_0124/actual.js | 1 +
.../invalid-syntax/migrated_0124/options.json | 3 +
.../invalid-syntax/migrated_0125/actual.js | 1 +
.../invalid-syntax/migrated_0125/options.json | 3 +
.../invalid-syntax/migrated_0126/actual.js | 1 +
.../invalid-syntax/migrated_0126/options.json | 3 +
.../invalid-syntax/migrated_0127/actual.js | 1 +
.../invalid-syntax/migrated_0127/options.json | 3 +
.../invalid-syntax/migrated_0128/actual.js | 1 +
.../invalid-syntax/migrated_0128/options.json | 3 +
.../invalid-syntax/migrated_0129/actual.js | 1 +
.../invalid-syntax/migrated_0129/options.json | 3 +
.../invalid-syntax/migrated_0130/actual.js | 1 +
.../invalid-syntax/migrated_0130/options.json | 3 +
.../invalid-syntax/migrated_0131/actual.js | 1 +
.../invalid-syntax/migrated_0131/options.json | 3 +
.../invalid-syntax/migrated_0132/actual.js | 1 +
.../invalid-syntax/migrated_0132/options.json | 3 +
.../invalid-syntax/migrated_0133/actual.js | 1 +
.../invalid-syntax/migrated_0133/options.json | 3 +
.../invalid-syntax/migrated_0134/actual.js | 1 +
.../invalid-syntax/migrated_0134/options.json | 3 +
.../invalid-syntax/migrated_0135/actual.js | 1 +
.../invalid-syntax/migrated_0135/options.json | 3 +
.../invalid-syntax/migrated_0136/actual.js | 1 +
.../invalid-syntax/migrated_0136/options.json | 3 +
.../invalid-syntax/migrated_0137/actual.js | 1 +
.../migrated_0137/expected.json | 100 +++
.../invalid-syntax/migrated_0137/options.json | 3 +
.../invalid-syntax/migrated_0138/actual.js | 1 +
.../migrated_0138/expected.json | 132 ++++
.../invalid-syntax/migrated_0138/options.json | 3 +
.../invalid-syntax/migrated_0139/actual.js | 1 +
.../migrated_0139/expected.json | 132 ++++
.../invalid-syntax/migrated_0139/options.json | 3 +
.../invalid-syntax/migrated_0140/actual.js | 1 +
.../migrated_0140/expected.json | 83 +++
.../invalid-syntax/migrated_0140/options.json | 3 +
.../invalid-syntax/migrated_0141/actual.js | 1 +
.../invalid-syntax/migrated_0141/options.json | 3 +
.../invalid-syntax/migrated_0142/actual.js | 1 +
.../invalid-syntax/migrated_0142/options.json | 3 +
.../invalid-syntax/migrated_0143/actual.js | 1 +
.../invalid-syntax/migrated_0143/options.json | 3 +
.../invalid-syntax/migrated_0144/actual.js | 1 +
.../invalid-syntax/migrated_0144/options.json | 3 +
.../invalid-syntax/migrated_0145/actual.js | 1 +
.../invalid-syntax/migrated_0145/options.json | 3 +
.../invalid-syntax/migrated_0146/actual.js | 1 +
.../invalid-syntax/migrated_0146/options.json | 3 +
.../invalid-syntax/migrated_0147/actual.js | 1 +
.../invalid-syntax/migrated_0147/options.json | 3 +
.../invalid-syntax/migrated_0148/actual.js | 3 +
.../invalid-syntax/migrated_0148/options.json | 3 +
.../invalid-syntax/migrated_0149/actual.js | 1 +
.../invalid-syntax/migrated_0149/options.json | 3 +
.../invalid-syntax/migrated_0150/actual.js | 1 +
.../invalid-syntax/migrated_0150/options.json | 3 +
.../invalid-syntax/migrated_0151/actual.js | 1 +
.../invalid-syntax/migrated_0151/options.json | 3 +
.../invalid-syntax/migrated_0152/actual.js | 1 +
.../invalid-syntax/migrated_0152/options.json | 3 +
.../invalid-syntax/migrated_0153/actual.js | 1 +
.../invalid-syntax/migrated_0153/options.json | 3 +
.../invalid-syntax/migrated_0154/actual.js | 1 +
.../invalid-syntax/migrated_0154/options.json | 3 +
.../invalid-syntax/migrated_0155/actual.js | 2 +
.../invalid-syntax/migrated_0155/options.json | 3 +
.../invalid-syntax/migrated_0156/actual.js | 2 +
.../invalid-syntax/migrated_0156/options.json | 3 +
.../invalid-syntax/migrated_0157/actual.js | 2 +
.../invalid-syntax/migrated_0157/options.json | 3 +
.../invalid-syntax/migrated_0158/actual.js | 2 +
.../invalid-syntax/migrated_0158/options.json | 3 +
.../invalid-syntax/migrated_0159/actual.js | 2 +
.../invalid-syntax/migrated_0159/options.json | 3 +
.../invalid-syntax/migrated_0160/actual.js | 2 +
.../invalid-syntax/migrated_0160/options.json | 3 +
.../invalid-syntax/migrated_0161/actual.js | 2 +
.../invalid-syntax/migrated_0161/options.json | 3 +
.../invalid-syntax/migrated_0162/actual.js | 1 +
.../invalid-syntax/migrated_0162/options.json | 3 +
.../invalid-syntax/migrated_0163/actual.js | 1 +
.../migrated_0163/expected.json | 100 +++
.../invalid-syntax/migrated_0163/options.json | 3 +
.../invalid-syntax/migrated_0164/actual.js | 1 +
.../invalid-syntax/migrated_0164/options.json | 3 +
.../invalid-syntax/migrated_0165/actual.js | 1 +
.../migrated_0165/expected.json | 100 +++
.../invalid-syntax/migrated_0165/options.json | 3 +
.../invalid-syntax/migrated_0166/actual.js | 1 +
.../migrated_0166/expected.json | 100 +++
.../invalid-syntax/migrated_0166/options.json | 3 +
.../invalid-syntax/migrated_0167/actual.js | 1 +
.../migrated_0167/expected.json | 100 +++
.../invalid-syntax/migrated_0167/options.json | 3 +
.../invalid-syntax/migrated_0168/actual.js | 1 +
.../invalid-syntax/migrated_0168/options.json | 3 +
.../invalid-syntax/migrated_0169/actual.js | 1 +
.../migrated_0169/expected.json | 100 +++
.../invalid-syntax/migrated_0169/options.json | 3 +
.../invalid-syntax/migrated_0170/actual.js | 1 +
.../invalid-syntax/migrated_0170/options.json | 3 +
.../invalid-syntax/migrated_0171/actual.js | 1 +
.../invalid-syntax/migrated_0171/options.json | 3 +
.../invalid-syntax/migrated_0172/actual.js | 1 +
.../invalid-syntax/migrated_0172/options.json | 3 +
.../invalid-syntax/migrated_0173/actual.js | 1 +
.../invalid-syntax/migrated_0173/options.json | 3 +
.../invalid-syntax/migrated_0174/actual.js | 1 +
.../invalid-syntax/migrated_0174/options.json | 3 +
.../invalid-syntax/migrated_0175/actual.js | 1 +
.../invalid-syntax/migrated_0175/options.json | 3 +
.../invalid-syntax/migrated_0176/actual.js | 1 +
.../invalid-syntax/migrated_0176/options.json | 3 +
.../invalid-syntax/migrated_0177/actual.js | 1 +
.../invalid-syntax/migrated_0177/options.json | 3 +
.../invalid-syntax/migrated_0178/actual.js | 1 +
.../invalid-syntax/migrated_0178/options.json | 3 +
.../invalid-syntax/migrated_0179/actual.js | 1 +
.../invalid-syntax/migrated_0179/options.json | 3 +
.../invalid-syntax/migrated_0180/actual.js | 1 +
.../invalid-syntax/migrated_0180/options.json | 3 +
.../invalid-syntax/migrated_0181/actual.js | 1 +
.../invalid-syntax/migrated_0181/options.json | 3 +
.../invalid-syntax/migrated_0182/actual.js | 1 +
.../invalid-syntax/migrated_0182/options.json | 3 +
.../invalid-syntax/migrated_0183/actual.js | 1 +
.../invalid-syntax/migrated_0183/options.json | 3 +
.../invalid-syntax/migrated_0184/actual.js | 1 +
.../invalid-syntax/migrated_0184/options.json | 3 +
.../invalid-syntax/migrated_0185/actual.js | 1 +
.../invalid-syntax/migrated_0185/options.json | 3 +
.../invalid-syntax/migrated_0186/actual.js | 1 +
.../invalid-syntax/migrated_0186/options.json | 3 +
.../invalid-syntax/migrated_0187/actual.js | 1 +
.../invalid-syntax/migrated_0187/options.json | 3 +
.../invalid-syntax/migrated_0188/actual.js | 1 +
.../invalid-syntax/migrated_0188/options.json | 3 +
.../invalid-syntax/migrated_0189/actual.js | 1 +
.../invalid-syntax/migrated_0189/options.json | 3 +
.../invalid-syntax/migrated_0190/actual.js | 1 +
.../invalid-syntax/migrated_0190/options.json | 3 +
.../invalid-syntax/migrated_0191/actual.js | 1 +
.../invalid-syntax/migrated_0191/options.json | 3 +
.../invalid-syntax/migrated_0192/actual.js | 1 +
.../invalid-syntax/migrated_0192/options.json | 3 +
.../invalid-syntax/migrated_0193/actual.js | 1 +
.../invalid-syntax/migrated_0193/options.json | 3 +
.../invalid-syntax/migrated_0194/actual.js | 1 +
.../invalid-syntax/migrated_0194/options.json | 3 +
.../invalid-syntax/migrated_0195/actual.js | 1 +
.../invalid-syntax/migrated_0195/options.json | 3 +
.../invalid-syntax/migrated_0196/actual.js | 1 +
.../invalid-syntax/migrated_0196/options.json | 3 +
.../invalid-syntax/migrated_0197/actual.js | 1 +
.../invalid-syntax/migrated_0197/options.json | 3 +
.../invalid-syntax/migrated_0198/actual.js | 1 +
.../invalid-syntax/migrated_0198/options.json | 3 +
.../invalid-syntax/migrated_0199/actual.js | 1 +
.../invalid-syntax/migrated_0199/options.json | 3 +
.../invalid-syntax/migrated_0200/actual.js | 1 +
.../invalid-syntax/migrated_0200/options.json | 3 +
.../invalid-syntax/migrated_0201/actual.js | 1 +
.../migrated_0201/expected.json | 117 ++++
.../invalid-syntax/migrated_0201/options.json | 3 +
.../invalid-syntax/migrated_0202/actual.js | 1 +
.../migrated_0202/expected.json | 117 ++++
.../invalid-syntax/migrated_0202/options.json | 3 +
.../invalid-syntax/migrated_0203/actual.js | 1 +
.../invalid-syntax/migrated_0203/options.json | 3 +
.../invalid-syntax/migrated_0204/actual.js | 1 +
.../invalid-syntax/migrated_0204/options.json | 3 +
.../invalid-syntax/migrated_0205/actual.js | 1 +
.../migrated_0205/expected.json | 149 +++++
.../invalid-syntax/migrated_0205/options.json | 3 +
.../invalid-syntax/migrated_0206/actual.js | 1 +
.../migrated_0206/expected.json | 149 +++++
.../invalid-syntax/migrated_0206/options.json | 3 +
.../invalid-syntax/migrated_0207/actual.js | 1 +
.../invalid-syntax/migrated_0207/options.json | 3 +
.../invalid-syntax/migrated_0208/actual.js | 1 +
.../migrated_0208/expected.json | 149 +++++
.../invalid-syntax/migrated_0208/options.json | 3 +
.../invalid-syntax/migrated_0209/actual.js | 1 +
.../invalid-syntax/migrated_0209/options.json | 3 +
.../invalid-syntax/migrated_0210/actual.js | 1 +
.../invalid-syntax/migrated_0210/options.json | 3 +
.../invalid-syntax/migrated_0211/actual.js | 1 +
.../invalid-syntax/migrated_0211/options.json | 3 +
.../invalid-syntax/migrated_0212/actual.js | 1 +
.../migrated_0212/expected.json | 134 +++++
.../invalid-syntax/migrated_0212/options.json | 3 +
.../invalid-syntax/migrated_0213/actual.js | 1 +
.../migrated_0213/expected.json | 134 +++++
.../invalid-syntax/migrated_0213/options.json | 3 +
.../invalid-syntax/migrated_0214/actual.js | 1 +
.../invalid-syntax/migrated_0214/options.json | 3 +
.../invalid-syntax/migrated_0215/actual.js | 1 +
.../invalid-syntax/migrated_0215/options.json | 3 +
.../invalid-syntax/migrated_0216/actual.js | 1 +
.../migrated_0216/expected.json | 99 +++
.../invalid-syntax/migrated_0216/options.json | 3 +
.../invalid-syntax/migrated_0217/actual.js | 1 +
.../invalid-syntax/migrated_0217/options.json | 3 +
.../invalid-syntax/migrated_0218/actual.js | 1 +
.../invalid-syntax/migrated_0218/options.json | 3 +
.../invalid-syntax/migrated_0219/actual.js | 1 +
.../invalid-syntax/migrated_0219/options.json | 3 +
.../invalid-syntax/migrated_0220/actual.js | 1 +
.../invalid-syntax/migrated_0220/options.json | 3 +
.../invalid-syntax/migrated_0221/actual.js | 1 +
.../migrated_0221/expected.json | 150 +++++
.../invalid-syntax/migrated_0221/options.json | 3 +
.../invalid-syntax/migrated_0222/actual.js | 1 +
.../migrated_0222/expected.json | 183 ++++++
.../invalid-syntax/migrated_0222/options.json | 3 +
.../invalid-syntax/migrated_0223/actual.js | 1 +
.../invalid-syntax/migrated_0223/options.json | 3 +
.../invalid-syntax/migrated_0224/actual.js | 1 +
.../invalid-syntax/migrated_0224/options.json | 3 +
.../invalid-syntax/migrated_0225/actual.js | 1 +
.../invalid-syntax/migrated_0225/options.json | 3 +
.../invalid-syntax/migrated_0226/actual.js | 1 +
.../invalid-syntax/migrated_0226/options.json | 3 +
.../invalid-syntax/migrated_0227/actual.js | 1 +
.../invalid-syntax/migrated_0227/options.json | 3 +
.../invalid-syntax/migrated_0228/actual.js | 1 +
.../invalid-syntax/migrated_0228/options.json | 3 +
.../invalid-syntax/migrated_0229/actual.js | 1 +
.../invalid-syntax/migrated_0229/options.json | 3 +
.../invalid-syntax/migrated_0230/actual.js | 1 +
.../invalid-syntax/migrated_0230/options.json | 3 +
.../invalid-syntax/migrated_0231/actual.js | 1 +
.../invalid-syntax/migrated_0231/options.json | 3 +
.../invalid-syntax/migrated_0232/actual.js | 1 +
.../invalid-syntax/migrated_0232/options.json | 3 +
.../invalid-syntax/migrated_0233/actual.js | 1 +
.../migrated_0233/expected.json | 134 +++++
.../invalid-syntax/migrated_0233/options.json | 3 +
.../invalid-syntax/migrated_0234/actual.js | 1 +
.../migrated_0234/expected.json | 117 ++++
.../invalid-syntax/migrated_0234/options.json | 3 +
.../invalid-syntax/migrated_0235/actual.js | 1 +
.../migrated_0235/expected.json | 134 +++++
.../invalid-syntax/migrated_0235/options.json | 3 +
.../invalid-syntax/migrated_0236/actual.js | 1 +
.../migrated_0236/expected.json | 134 +++++
.../invalid-syntax/migrated_0236/options.json | 3 +
.../invalid-syntax/migrated_0238/actual.js | 1 +
.../migrated_0238/expected.json | 83 +++
.../invalid-syntax/migrated_0238/options.json | 3 +
.../invalid-syntax/migrated_0239/actual.js | 1 +
.../invalid-syntax/migrated_0239/options.json | 3 +
.../invalid-syntax/migrated_0240/actual.js | 1 +
.../invalid-syntax/migrated_0240/options.json | 3 +
.../invalid-syntax/migrated_0241/actual.js | 1 +
.../migrated_0241/expected.json | 134 +++++
.../invalid-syntax/migrated_0241/options.json | 3 +
.../invalid-syntax/migrated_0242/actual.js | 1 +
.../migrated_0242/expected.json | 134 +++++
.../invalid-syntax/migrated_0242/options.json | 3 +
.../invalid-syntax/migrated_0243/actual.js | 1 +
.../invalid-syntax/migrated_0243/options.json | 3 +
.../invalid-syntax/migrated_0244/actual.js | 1 +
.../invalid-syntax/migrated_0244/options.json | 3 +
.../invalid-syntax/migrated_0245/actual.js | 1 +
.../invalid-syntax/migrated_0245/options.json | 3 +
.../invalid-syntax/migrated_0246/actual.js | 1 +
.../migrated_0246/expected.json | 150 +++++
.../invalid-syntax/migrated_0246/options.json | 3 +
.../invalid-syntax/migrated_0247/actual.js | 1 +
.../migrated_0247/expected.json | 150 +++++
.../invalid-syntax/migrated_0247/options.json | 3 +
.../invalid-syntax/migrated_0248/actual.js | 1 +
.../invalid-syntax/migrated_0248/options.json | 3 +
.../invalid-syntax/migrated_0249/actual.js | 1 +
.../invalid-syntax/migrated_0249/options.json | 3 +
.../invalid-syntax/migrated_0250/actual.js | 1 +
.../invalid-syntax/migrated_0250/options.json | 3 +
.../invalid-syntax/migrated_0252/actual.js | 1 +
.../invalid-syntax/migrated_0252/options.json | 3 +
.../invalid-syntax/migrated_0253/actual.js | 1 +
.../migrated_0253/expected.json | 64 ++
.../invalid-syntax/migrated_0253/options.json | 3 +
.../invalid-syntax/migrated_0254/actual.js | 1 +
.../invalid-syntax/migrated_0254/options.json | 3 +
.../invalid-syntax/migrated_0255/actual.js | 1 +
.../invalid-syntax/migrated_0255/options.json | 3 +
.../invalid-syntax/migrated_0256/actual.js | 1 +
.../invalid-syntax/migrated_0256/options.json | 3 +
.../invalid-syntax/migrated_0257/actual.js | 1 +
.../invalid-syntax/migrated_0257/options.json | 3 +
.../invalid-syntax/migrated_0258/actual.js | 1 +
.../invalid-syntax/migrated_0258/options.json | 3 +
.../invalid-syntax/migrated_0259/actual.js | 1 +
.../invalid-syntax/migrated_0259/options.json | 3 +
.../invalid-syntax/migrated_0260/actual.js | 1 +
.../invalid-syntax/migrated_0260/options.json | 3 +
.../invalid-syntax/migrated_0261/actual.js | 1 +
.../invalid-syntax/migrated_0261/options.json | 3 +
.../invalid-syntax/migrated_0262/actual.js | 1 +
.../invalid-syntax/migrated_0262/options.json | 3 +
.../invalid-syntax/migrated_0263/actual.js | 1 +
.../invalid-syntax/migrated_0263/options.json | 3 +
.../invalid-syntax/migrated_0264/actual.js | 1 +
.../invalid-syntax/migrated_0264/options.json | 3 +
.../invalid-syntax/migrated_0265/actual.js | 1 +
.../invalid-syntax/migrated_0265/options.json | 3 +
.../invalid-syntax/migrated_0266/actual.js | 1 +
.../invalid-syntax/migrated_0266/options.json | 3 +
.../invalid-syntax/migrated_0267/actual.js | 1 +
.../invalid-syntax/migrated_0267/options.json | 3 +
.../invalid-syntax/migrated_0268/actual.js | 1 +
.../invalid-syntax/migrated_0268/options.json | 3 +
.../invalid-syntax/migrated_0269/actual.js | 1 +
.../invalid-syntax/migrated_0269/options.json | 3 +
.../invalid-syntax/migrated_0270/actual.js | 1 +
.../migrated_0270/expected.json | 151 +++++
.../invalid-syntax/migrated_0270/options.json | 3 +
.../invalid-syntax/migrated_0271/actual.js | 1 +
.../migrated_0271/expected.json | 153 +++++
.../invalid-syntax/migrated_0271/options.json | 3 +
.../invalid-syntax/migrated_0272/actual.js | 1 +
.../invalid-syntax/migrated_0272/options.json | 3 +
.../invalid-syntax/migrated_0273/actual.js | 1 +
.../invalid-syntax/migrated_0273/options.json | 3 +
.../invalid-syntax/migrated_0274/actual.js | 1 +
.../invalid-syntax/migrated_0274/options.json | 3 +
.../invalid-syntax/migrated_0275/actual.js | 1 +
.../invalid-syntax/migrated_0275/options.json | 3 +
.../invalid-syntax/migrated_0276/actual.js | 1 +
.../invalid-syntax/migrated_0276/options.json | 3 +
.../invalid-syntax/migrated_0277/actual.js | 1 +
.../migrated_0277/expected.json | 168 ++++++
.../invalid-syntax/migrated_0277/options.json | 3 +
.../invalid-syntax/migrated_0278/actual.js | 1 +
.../migrated_0278/expected.json | 151 +++++
.../invalid-syntax/migrated_0278/options.json | 3 +
.../statement-block/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 81 +++
.../statement-block/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 144 +++++
.../statement-block/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 49 ++
.../statement-break/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 99 +++
.../statement-break/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 145 +++++
.../statement-break/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 145 +++++
.../statement-break/migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 145 +++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 99 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 99 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 145 +++++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 145 +++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 145 +++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 48 ++
.../statement-empty/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 48 ++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 64 ++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 97 +++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 100 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 100 +++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 100 +++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 100 +++
.../statement-if/migrated_0000/actual.js | 1 +
.../statement-if/migrated_0000/expected.json | 112 ++++
.../statement-if/migrated_0001/actual.js | 1 +
.../statement-if/migrated_0001/expected.json | 116 ++++
.../statement-if/migrated_0002/actual.js | 1 +
.../statement-if/migrated_0002/expected.json | 132 ++++
.../statement-if/migrated_0003/actual.js | 1 +
.../statement-if/migrated_0004/actual.js | 1 +
.../statement-if/migrated_0004/expected.json | 158 +++++
.../statement-if/migrated_0005/actual.js | 2 +
.../statement-if/migrated_0005/expected.json | 128 ++++
.../statement-if/migrated_0006/actual.js | 1 +
.../statement-if/migrated_0006/expected.json | 128 ++++
.../statement-iteration/const_forin/actual.js | 1 +
.../const_forin/expected.json | 178 ++++++
.../for-statement-with-seq/actual.js | 1 +
.../for-statement-with-seq/expected.json | 130 ++++
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 113 ++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 113 ++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 211 +++++++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 132 ++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 113 ++++
.../migrated_0005/actual.js | 2 +
.../migrated_0005/expected.json | 113 ++++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 113 ++++
.../migrated_0007/actual.js | 1 +
.../migrated_0007/expected.json | 211 +++++++
.../migrated_0008/actual.js | 1 +
.../migrated_0008/expected.json | 66 ++
.../migrated_0009/actual.js | 1 +
.../migrated_0009/expected.json | 67 +++
.../migrated_0010/actual.js | 1 +
.../migrated_0010/expected.json | 115 ++++
.../migrated_0011/actual.js | 1 +
.../migrated_0011/expected.json | 132 ++++
.../migrated_0012/actual.js | 1 +
.../migrated_0012/expected.json | 132 ++++
.../migrated_0013/actual.js | 1 +
.../migrated_0013/expected.json | 181 ++++++
.../migrated_0014/actual.js | 1 +
.../migrated_0014/expected.json | 164 +++++
.../migrated_0015/actual.js | 1 +
.../migrated_0015/expected.json | 196 ++++++
.../migrated_0016/actual.js | 1 +
.../migrated_0016/expected.json | 245 ++++++++
.../migrated_0017/actual.js | 1 +
.../migrated_0017/expected.json | 144 +++++
.../migrated_0018/actual.js | 1 +
.../migrated_0018/expected.json | 178 ++++++
.../migrated_0019/actual.js | 1 +
.../migrated_0019/expected.json | 195 ++++++
.../migrated_0020/actual.js | 1 +
.../migrated_0020/expected.json | 178 ++++++
.../migrated_0021/actual.js | 1 +
.../migrated_0021/expected.json | 176 ++++++
.../migrated_0022/actual.js | 1 +
.../migrated_0022/expected.json | 241 ++++++++
.../migrated_0023/actual.js | 1 +
.../migrated_0023/expected.json | 278 +++++++++
.../migrated_0024/actual.js | 1 +
.../migrated_0024/expected.json | 159 +++++
.../migrated_0025/actual.js | 1 +
.../migrated_0025/expected.json | 194 ++++++
.../migrated_0026/actual.js | 1 +
.../migrated_0026/expected.json | 127 ++++
.../pattern-in-for-in/actual.js | 1 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 113 ++++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 128 ++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 95 +++
.../statement-return/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 101 ++++
.../statement-return/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 101 ++++
.../statement-return/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 116 ++++
.../statement-return/migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 148 +++++
.../statement-switch/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 65 ++
.../statement-switch/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 164 +++++
.../statement-switch/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 198 ++++++
.../statement-throw/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 64 ++
.../statement-throw/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 96 +++
.../statement-throw/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 118 ++++
.../statement-try/migrated_0000/actual.js | 1 +
.../statement-try/migrated_0000/expected.json | 113 ++++
.../statement-try/migrated_0001/actual.js | 1 +
.../statement-try/migrated_0001/expected.json | 113 ++++
.../statement-try/migrated_0002/actual.js | 1 +
.../statement-try/migrated_0002/expected.json | 113 ++++
.../statement-try/migrated_0003/actual.js | 1 +
.../statement-try/migrated_0003/expected.json | 178 ++++++
.../statement-try/migrated_0004/actual.js | 1 +
.../statement-try/migrated_0004/expected.json | 147 +++++
.../statement-try/migrated_0005/actual.js | 1 +
.../statement-try/migrated_0005/expected.json | 226 +++++++
.../statement-try/migrated_0006/actual.js | 1 +
.../statement-try/migrated_0006/expected.json | 306 ++++++++++
.../complex-pattern-requires-init/actual.js | 1 +
.../options.json | 3 +
.../migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 83 +++
.../migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 115 ++++
.../migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 100 +++
.../migrated_0003/actual.js | 1 +
.../migrated_0003/expected.json | 149 +++++
.../migrated_0004/actual.js | 1 +
.../migrated_0004/expected.json | 198 ++++++
.../migrated_0005/actual.js | 1 +
.../migrated_0005/expected.json | 147 +++++
.../migrated_0006/actual.js | 1 +
.../migrated_0006/expected.json | 179 ++++++
.../statement-with/migrated_0000/actual.js | 1 +
.../migrated_0000/expected.json | 127 ++++
.../statement-with/migrated_0001/actual.js | 1 +
.../migrated_0001/expected.json | 127 ++++
.../statement-with/migrated_0002/actual.js | 1 +
.../migrated_0002/expected.json | 144 +++++
.../async-functions/illegal-parens/actual.js | 1 +
.../illegal-parens/options.json | 3 +
.../actual.js | 1 +
.../expected.json | 166 +++++
.../options.json | 3 +
.../arrow-functions/inner-parens/actual.js | 1 +
.../arrow-functions/inner-parens/options.json | 3 +
.../harmony/uncategorised/289/expected.json | 187 ++++++
.../harmony/uncategorised/297/expected.json | 167 +++++
2094 files changed, 82947 insertions(+), 122 deletions(-)
delete mode 100644 packages/babel/test/fixtures/transformation/es6.classes/bare-super/actual.js
delete mode 100644 packages/babel/test/fixtures/transformation/es6.classes/bare-super/options.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/484/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/485/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/488/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/489/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/491/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/495/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/496/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/511/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/512/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/515/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/516/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/520/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/521/expected.json
create mode 100644 packages/babylon/test/fixtures/core/uncategorised/536/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/LICENSE
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/automatic-semicolon-insertion/migrated_0015/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-const/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-const/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-const/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-const/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-const/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-const/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/dupe-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/empty-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/empty-param/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-function/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/declaration-let/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/directive-prolog/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/directive-prolog/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/directive-prolog/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/directive-prolog/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-01/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-01/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-02/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-02/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-03/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-03/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-empty/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/array-binding-pattern-empty/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/elision/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/elision/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/invalid-dup-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/invalid-dup-param/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/invalid-dup-param/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/invalid-elision-after-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/invalid-elision-after-rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-binding-pattern/invalid-elision-after-rest/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/dupe-param-1/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/dupe-param-2/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/dupe-param-3/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/elision/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/elision/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-catch-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-catch-param/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-fn/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-fn/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-lexical/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-lexical/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-var/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/empty-pattern-var/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/hole/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/hole/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/nested-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/nested-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/patterned-catch-dupe/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/patterned-catch-dupe/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/patterned-catch-dupe/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/patterned-catch/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/patterned-catch/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/rest/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/tailing-hold/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/tailing-hold/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-default-catch-param-fail/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-default-catch-param-fail/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-default-catch-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-default-catch-param/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-default-fn/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-default-fn/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-object-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-array-pattern/with-object-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-rest-forgetting-comma/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-rest-forgetting-comma/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-with-multiple-arg-and-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-with-multiple-arg-and-rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-with-multiple-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-with-multiple-rest/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-with-only-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/arrow-with-only-rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/complex-rest-in-arrow-not-allowed/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/complex-rest-in-arrow-not-allowed/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-duplicated-params/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-duplicated-params/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-line-terminator-arrow/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-line-terminator-arrow/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-param-strict-mode/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-param-strict-mode/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/invalid-param-strict-mode/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0015/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0016/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0016/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0017/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0017/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0018/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0018/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0019/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0019/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0020/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/migrated_0020/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/expected.json
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-member-expr.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-member-expr.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-method-in-pattern.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-method-in-pattern.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-nested-param.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-nested-param.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-pattern-without-parenthesis.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-pattern-without-parenthesis.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-rest-in-object-pattern.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/invalid-rest-in-object-pattern.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/nested-cover-grammar.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/object-binding-pattern-01.js
create mode 100755 packages/babylon/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern/object-binding-pattern-empty.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/param-with-rest-without-arrow/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/param-with-rest-without-arrow/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/rest-without-arrow/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-arrow-function/rest-without-arrow/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-binary-integer-literal/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0015/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0016/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0016/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0017/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0017/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0018/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0018/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0019/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0019/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0020/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0020/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0021/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0021/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0022/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0022/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0023/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0023/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0024/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0024/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0025/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0025/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0026/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-class/migrated_0026/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-default-parameter-value/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-default-parameter-value/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-default-parameter-value/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-default-parameter-value/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-default-parameter-value/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-default-parameter-value/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/dup-assignment/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/dup-assignment/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/elision/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/elision/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/member-expr-in-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/member-expr-in-rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/nested-assignment/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/nested-assignment/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/nested-cover-grammar/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/nested-cover-grammar/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/simple-assignment/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-array-pattern/simple-assignment/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/empty-object-pattern-assignment/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/empty-object-pattern-assignment/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-lhs-01/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-lhs-01/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-lhs-02/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-lhs-02/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-pattern-with-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-pattern-with-method/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/nested-cover-grammar/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/nested-cover-grammar/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/object-pattern-assignment/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/object-pattern-assignment/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment/invalid-cover-grammar/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment/invalid-cover-grammar/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment/invalid-group-assignment/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-destructuring-assignment/invalid-group-assignment/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-const-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-const-number/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-array/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-array/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-class/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-class/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-function/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-function/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-named-function/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-named-function/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-number/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-object/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-object/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-value/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-default-value/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-batch/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-batch/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-named-as-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-named-as-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-named-as-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-named-as-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-named-as-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-named-as-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-from-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-function-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-function-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-function/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-function/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-let-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-let-number/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-as-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-as-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-as-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-as-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-as-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-as-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-empty/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-empty/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-specifiers-comma/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-specifiers-comma/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-named-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-var-anonymous-function/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-var-anonymous-function/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-var-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-var-number/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-var/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/export-var/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-batch-missing-from-clause/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-batch-missing-from-clause/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-batch-token/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-batch-token/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-default-equal/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-default-equal/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-default-token/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-default-token/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-named-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/invalid-export-named-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-export-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-array-pattern-let/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-array-pattern-let/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-array-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-array-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-object-pattern-const/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-object-pattern-const/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-object-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-object-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-with-const/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-with-const/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-with-let/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-with-let/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-with-var/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of-with-var/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/for-of/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-const-init/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-const-init/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-let-init/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-let-init/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-lhs-init/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-lhs-init/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-var-init/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-var-init/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/invalid-var-init/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/let-of-of/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/let-of-of/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/unexpected-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-for-of/unexpected-number/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration-with-params/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration-with-params/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration-with-yield-delegate/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration-with-yield-delegate/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration-with-yield/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration-with-yield/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-rest-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-rest-param/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-with-params/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-with-params/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-with-yield-delegate/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-with-yield-delegate/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-with-yield/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression-with-yield/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-computed-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-computed-name/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-invalid-computed-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-invalid-computed-name/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-params/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-params/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield-delegate/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield-delegate/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield-line-terminator/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield-line-terminator/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method-with-yield/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-binding-element/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-binding-element/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-binding-property-reserved/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-binding-property-reserved/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-binding-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-binding-property/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-computed-property-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-computed-property-name/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-invalid-binding-element/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-invalid-binding-element/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-invalid-binding-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-invalid-binding-property/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-invalid-computed-property-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/generator-parameter-invalid-computed-property-name/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/incomplete-yield-delegate/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/incomplete-yield-delegate/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/malformed-generator-method-2/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/malformed-generator-method-2/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/malformed-generator-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/malformed-generator-method/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/static-generator-method-with-computed-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/static-generator-method-with-computed-name/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/static-generator-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-generator/static-generator-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/dakuten_handakuten/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/dakuten_handakuten/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_all/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_all/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_alef/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_alef/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_dal_part/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_dal_part/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_kaf_lam/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_kaf_lam/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_zain_start/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_math_zain_start/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_part/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_part/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_start/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/escaped_start/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/estimated/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/estimated/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/ethiopic_digits/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/ethiopic_digits/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_escaped_surrogate_pairs/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_escaped_surrogate_pairs/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_expression_await/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_expression_await/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_function_wait/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_function_wait/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_function_wait/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_id_smp/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_id_smp/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_lone_surrogate/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_lone_surrogate/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_lone_surrogate/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_var_await/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/invalid_var_await/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_alef/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_alef/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_dal_part/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_dal_part/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_kaf_lam/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_kaf_lam/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_zain_start/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/math_zain_start/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/module_await/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/module_await/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/valid_await/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/valid_await/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/weierstrass/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/weierstrass/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/weierstrass_weierstrass/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-identifier/weierstrass_weierstrass/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default-and-named-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default-and-named-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default-and-namespace-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default-and-namespace-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default-as/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default-as/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-jquery/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-jquery/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-module/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-module/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-as-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-as-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-as-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-as-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-empty/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-empty/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-specifiers-comma/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-specifiers-comma/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-named-specifiers/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-namespace-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-namespace-specifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-null-as-nil/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/import-null-as-nil/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-after-named-after-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-after-named-after-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-after-named/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-after-named/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-missing-module-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-missing-module-specifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-module-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default-module-specifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-missing-comma/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-missing-comma/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-missing-module-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-missing-module-specifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-module-specifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-module-specifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-named-after-named/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-named-after-named/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-named-after-namespace/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-named-after-namespace/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-named-as-missing-from/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-named-as-missing-from/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-namespace-after-named/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-namespace-after-named/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-namespace-missing-as/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-namespace-missing-as/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-specifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/invalid-import-specifiers/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-import-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/invalid_complex_binding_without_init/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/invalid_complex_binding_without_init/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/invalid_const_forin/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/invalid_const_forin/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/invalid_let_forin/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/invalid_let_forin/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-lexical-declaration/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/assign-new-target/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/assign-new-target/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/invalid-dots/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/invalid-dots/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/invalid-new-target/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/invalid-new-target/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/invalid-new-target/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-new-target/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-new-target/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-invoke/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-invoke/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-precedence/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/new-target-precedence/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/unknown-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-meta-property/unknown-property/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-method-definition/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-getter-literal-identifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-getter-literal-identifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifier-literal/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifier-literal/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifier-shorthand/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifier-shorthand/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifier-shorthand/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifiers/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-identifiers/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literal-identifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literal-identifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literal-shorthand/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literal-shorthand/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literal-shorthand/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literals/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-literals/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-setter-literal-identifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-setter-literal-identifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthand-identifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthand-identifier/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthand-identifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthand-literal/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthand-literal/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthand-literal/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthands/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthands/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/invalid-proto-shorthands/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-getter-setter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-getter-setter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-getter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-getter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-setter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-identifier-setter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-getter-setter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-getter-setter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-getter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-getter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-setter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-initialiser/proto-literal-setter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-literal-property-value-shorthand/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-literal-property-value-shorthand/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/elision/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/elision/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-catch-param/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-catch-param/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-fn/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-fn/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-for-lex/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-for-lex/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-lexical/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-lexical/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-var/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/empty-var/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/nested/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/nested/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/properties/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-object-pattern/properties/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-octal-integer-literal/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/function-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/function-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/function-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/function-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/object-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/object-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/object-shorthand-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-rest-parameter/object-shorthand-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-multi-spread/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-multi-spread/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread-first/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread-first/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread-number/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/call-spread/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-call-dot-dot/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-call-dot-dot/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-call-dots/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-call-dots/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-call-spreads/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-call-spreads/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-new-dot-dot/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-new-dot-dot/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-new-dots/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-new-dots/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-new-spreads/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/invalid-new-spreads/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-multi-spread/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-multi-spread/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread-first/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread-first/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread-number/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread-number/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-spread-element/new-spread/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/arrow_super/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/arrow_super/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/constructor_super/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/constructor_super/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_access/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_access/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_id/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_id/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_id/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_not_inside_function/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/invalid_super_not_inside_function/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/new_super/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/new_super/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/super_computed/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/super_computed/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/super_member/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-super-property/super_member/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/after-switch/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/after-switch/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/dollar-sign/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/dollar-sign/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/escape-sequences/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/escape-sequences/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/invalid-escape/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/invalid-escape/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/line-terminators/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/line-terminators/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/literal-escape-sequences/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/literal-escape-sequences/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/new-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/new-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/octal-literal/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/octal-literal/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/octal-literal/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/strict-octal-literal/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/strict-octal-literal/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/strict-octal-literal/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/tagged-interpolation/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/tagged-interpolation/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/tagged-nested-with-object-literal/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/tagged-nested-with-object-literal/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/tagged/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/tagged/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/unclosed-interpolation/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/unclosed-interpolation/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/unclosed-nested/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/unclosed-nested/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/unclosed/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/unclosed/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/untagged/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-template-literals/untagged/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-unicode-code-point-escape-sequence/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-unicode-code-point-escape-sequence/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-unicode-code-point-escape-sequence/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-unicode-code-point-escape-sequence/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-unicode-code-point-escape-sequence/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-unicode-code-point-escape-sequence/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-binding-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-binding-property/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-expression/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-parameters/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-parameters/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-catch/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-catch/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-catch/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-export-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-export-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-name/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-name/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-expression-rest/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-function-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-function-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-lexical-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-lexical-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-member-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-member-expression/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-rest/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-rest/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-rest/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-strict-function-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-strict-function-expression/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-strict-function-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-strict-function-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-variable-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-variable-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-generator-variable-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-array-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-array-pattern/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-arrow-parameter-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-arrow-parameter-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-arrow-parameter-default/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-arrow-parameter-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-arrow-parameter-name/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-binding-element/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-binding-element/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-catch-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-catch-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-formal-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-formal-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-function-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-function-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-function-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-function-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-function-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-function-expression/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-identifier/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-identifier/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-lexical-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-lexical-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-rest-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-rest-parameter/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-variable-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/invalid-yield-strict-variable-declaration/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-array-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-array-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-concise-body/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-concise-body/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-function-body/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-function-body/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-parameter-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-parameter-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-parameter-name/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-arrow-parameter-name/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-binding-element/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-binding-element/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-binding-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-binding-property/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-call-expression-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-call-expression-property/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-catch-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-catch-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-expression-precedence/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-expression-precedence/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-declaration-formal-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-declaration-formal-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-expression-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-expression-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-function-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-arrow-concise-body/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-arrow-concise-body/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-arrow-default/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-arrow-default/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-arrow-function-body/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-arrow-function-body/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-default-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-default-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-function-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-function-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-function-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-parameter-object-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-generator-parameter-object-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-lexical-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-lexical-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-member-expression-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-member-expression-property/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-parameter-object-pattern/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-parameter-object-pattern/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-rest-parameter/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-rest-parameter/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-strict-binding-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-strict-binding-property/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-strict-method/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-strict-method/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-super-property/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-super-property/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-variable-declaration/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-variable-declaration/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-yield-expression-delegate/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-yield-expression-delegate/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-yield-expression/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/es2015-yield/yield-yield-expression/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-additive/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-additive/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-additive/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-additive/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-additive/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-additive/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-assignment/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-bitwise/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-bitwise/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-bitwise/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-bitwise/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-bitwise/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-bitwise/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary-logical/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0015/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0016/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0016/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0017/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-binary/migrated_0017/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-bitwise-shift/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-bitwise-shift/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-bitwise-shift/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-bitwise-shift/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-bitwise-shift/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-bitwise-shift/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-complex/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-complex/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-conditional/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-conditional/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-conditional/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-conditional/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-conditional/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-conditional/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-equality/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-grouping/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-grouping/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-grouping/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-grouping/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0015/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0016/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0016/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0017/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0017/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0018/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0018/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0019/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0019/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0020/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0020/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0021/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0021/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0022/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-left-hand-side/migrated_0022/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-multiplicative/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-multiplicative/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-multiplicative/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-multiplicative/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-multiplicative/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-multiplicative/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-postfix/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-primary/array/expected.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0000.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0001.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0002.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0003.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0004.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0005.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0006.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0007.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0008.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0009.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0010.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0011.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/array/migrated_0012.source.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-primary/literal/expected.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0000.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0001.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0002.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0003.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0004.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0005.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0006.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0007.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0008.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0009.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0010.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0011.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0012.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0013.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0014.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0015.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0016.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0017.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0018.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0019.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0020.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0021.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0022.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0023.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/numeric/migrated_0024.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0000.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0001.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0002.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0003.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0004.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0005.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0006.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0006.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0007.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0008.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0009.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0010.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0011.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0012.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/migrated_0013.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/u-flag-invalid-range-4-hex.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/u-flag-invalid-range-4-hex.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/u-flag-invalid-range-var-hex.failure.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/u-flag-invalid-range-var-hex.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/u-flag-surrogate-pair.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/regular-expression/u-flag-valid-range.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0000.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0001.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0002.source.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0003.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0006.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0007.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0008.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0009.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0010.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0011.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0012.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0013.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0015.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0016.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0017.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/literal/string/migrated_0018.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-primary/object/expected.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0000.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0001.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0002.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0003.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0004.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0005.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0006.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0007.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0008.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0009.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0010.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0011.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0012.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0013.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0014.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0015.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0016.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0017.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0018.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0019.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0020.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0021.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0022.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0023.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0024.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0025.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0026.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0027.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0028.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0029.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0030.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0031.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0032.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0033.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0034.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0035.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0036.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0037.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/object/migrated_0038.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-primary/other/expected.json
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/other/migrated_0000.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/other/migrated_0001.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/other/migrated_0002.js
create mode 100755 packages/babylon/test/fixtures/esprima/expression-primary/other/migrated_0003.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-relational/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/expression-unary/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-00/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-00/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-01/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-01/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-02/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-02/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-03/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-03/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-04/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-04/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-05/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-05/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-06/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-06/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-07/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-07/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-09/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-09/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/GH-1106-09/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0000/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0001/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0002/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0003/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0004/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0005/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0006/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0007/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0008/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0009/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0010/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0011/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0012/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0013/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0014/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0015/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0016/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0016/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0017/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0017/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0018/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0018/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0019/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0019/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0020/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0020/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0021/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0021/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0022/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0022/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0023/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0023/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0024/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0024/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0025/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0025/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0026/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0026/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0027/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0027/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0028/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0028/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0029/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0029/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0030/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0030/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0031/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0031/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0032/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0032/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0033/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0033/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0033/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0034/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0034/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0034/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0035/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0035/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0036/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0036/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0036/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0037/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0037/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0037/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0038/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0038/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0039/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0039/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0040/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0040/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0041/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0041/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0041/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0042/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0042/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0042/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0043/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0043/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0043/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0044/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0044/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0044/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0045/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0045/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0046/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0046/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0047/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0047/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0048/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0048/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0048/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0049/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0049/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0049/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0050/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0050/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0050/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0051/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0051/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0051/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0052/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0052/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0053/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0053/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0054/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0054/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0055/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0055/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0056/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0056/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0057/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0057/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0058/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0058/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0059/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0059/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0060/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0060/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0061/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0061/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0062/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0062/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0063/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0063/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0064/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0064/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0065/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0065/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0066/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0066/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0067/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0067/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0068/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0068/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0069/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0069/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0070/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0070/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0071/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0071/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0072/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0072/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0073/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0073/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0074/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0074/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0075/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0075/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0076/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0076/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0077/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0077/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0078/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0078/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0080/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0080/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0081/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0081/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0082/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0082/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0083/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0083/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0084/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0084/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0085/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0085/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0086/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0086/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0087/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0087/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0088/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0088/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0089/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0089/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0090/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0090/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0091/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0091/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0092/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0092/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0092/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0093/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0093/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0094/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0094/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0095/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0095/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0096/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0096/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0097/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0097/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0098/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0098/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0099/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0099/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0100/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0100/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0101/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0101/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0101/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0102/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0102/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0103/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0103/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0104/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0104/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0105/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0105/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0106/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0106/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0107/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0107/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0108/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0108/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0109/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0109/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0110/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0110/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0111/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0111/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0112/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0112/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0113/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0113/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0114/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0114/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0115/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0115/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0116/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0116/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0117/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0117/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0118/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0118/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0119/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0119/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0120/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0120/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0121/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0121/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0122/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0122/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0123/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0123/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0124/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0124/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0125/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0125/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0126/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0126/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0127/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0127/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0128/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0128/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0129/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0129/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0130/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0130/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0131/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0131/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0132/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0132/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0133/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0133/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0134/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0134/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0135/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0135/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0136/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0136/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0137/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0137/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0137/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0138/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0138/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0138/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0139/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0139/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0139/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0140/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0140/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0140/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0141/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0141/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0142/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0142/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0143/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0143/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0144/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0144/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0145/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0145/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0146/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0146/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0147/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0147/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0148/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0148/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0149/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0149/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0150/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0150/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0151/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0151/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0152/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0152/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0153/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0153/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0154/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0154/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0155/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0155/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0156/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0156/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0157/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0157/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0158/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0158/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0159/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0159/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0160/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0160/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0161/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0161/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0162/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0162/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0163/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0163/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0163/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0164/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0164/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0165/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0165/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0165/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0166/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0166/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0166/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0167/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0167/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0167/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0168/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0168/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0169/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0169/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0169/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0170/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0170/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0171/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0171/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0172/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0172/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0173/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0173/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0174/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0174/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0175/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0175/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0176/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0176/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0177/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0177/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0178/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0178/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0179/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0179/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0180/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0180/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0181/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0181/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0182/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0182/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0183/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0183/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0184/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0184/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0185/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0185/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0186/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0186/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0187/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0187/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0188/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0188/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0189/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0189/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0190/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0190/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0191/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0191/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0192/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0192/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0193/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0193/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0194/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0194/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0195/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0195/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0196/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0196/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0197/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0197/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0198/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0198/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0199/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0199/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0200/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0200/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0201/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0201/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0201/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0202/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0202/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0202/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0203/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0203/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0204/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0204/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0205/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0205/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0205/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0206/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0206/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0206/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0207/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0207/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0208/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0208/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0208/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0209/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0209/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0210/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0210/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0211/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0211/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0212/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0212/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0212/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0213/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0213/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0213/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0214/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0214/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0215/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0215/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0216/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0216/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0216/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0217/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0217/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0218/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0218/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0219/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0219/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0220/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0220/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0221/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0221/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0221/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0222/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0222/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0222/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0223/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0223/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0224/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0224/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0225/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0225/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0226/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0226/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0227/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0227/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0228/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0228/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0229/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0229/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0230/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0230/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0231/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0231/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0232/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0232/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0233/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0233/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0233/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0234/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0234/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0234/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0235/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0235/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0235/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0236/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0236/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0236/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0238/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0238/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0238/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0239/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0239/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0240/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0240/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0241/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0241/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0241/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0242/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0242/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0242/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0243/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0243/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0244/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0244/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0245/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0245/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0246/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0246/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0246/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0247/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0247/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0247/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0248/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0248/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0249/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0249/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0250/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0250/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0252/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0252/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0253/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0253/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0253/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0254/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0254/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0255/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0255/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0256/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0256/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0257/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0257/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0258/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0258/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0259/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0259/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0260/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0260/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0261/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0261/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0262/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0262/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0263/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0263/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0264/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0264/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0265/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0265/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0266/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0266/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0267/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0267/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0268/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0268/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0269/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0269/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0270/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0270/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0270/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0271/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0271/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0271/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0272/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0272/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0273/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0273/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0274/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0274/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0275/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0275/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0276/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0276/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0277/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0277/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0277/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0278/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0278/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/invalid-syntax/migrated_0278/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-block/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-block/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-block/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-block/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-block/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-block/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-break/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-continue/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-debugger/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-debugger/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-empty/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-empty/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-expression/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-if/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/const_forin/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/const_forin/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/for-statement-with-seq/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/for-statement-with-seq/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0007/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0007/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0008/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0008/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0009/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0009/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0010/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0010/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0011/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0011/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0012/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0012/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0013/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0013/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0014/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0014/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0015/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0015/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0016/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0016/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0017/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0017/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0018/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0018/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0019/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0019/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0020/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0020/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0021/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0021/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0022/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0022/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0023/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0023/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0024/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0024/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0025/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0025/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0026/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/migrated_0026/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-iteration/pattern-in-for-in/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-labelled/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-labelled/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-labelled/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-labelled/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-labelled/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-labelled/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-return/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-switch/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-switch/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-switch/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-switch/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-switch/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-switch/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-throw/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-throw/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-throw/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-throw/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-throw/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-throw/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-try/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/complex-pattern-requires-init/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/complex-pattern-requires-init/options.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0003/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0003/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0004/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0004/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0005/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0005/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0006/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-variable/migrated_0006/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-with/migrated_0000/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-with/migrated_0000/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-with/migrated_0001/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-with/migrated_0001/expected.json
create mode 100644 packages/babylon/test/fixtures/esprima/statement-with/migrated_0002/actual.js
create mode 100644 packages/babylon/test/fixtures/esprima/statement-with/migrated_0002/expected.json
create mode 100644 packages/babylon/test/fixtures/experimental/async-functions/illegal-parens/actual.js
create mode 100644 packages/babylon/test/fixtures/experimental/async-functions/illegal-parens/options.json
create mode 100644 packages/babylon/test/fixtures/flow/regression/arrow-function-parens-with-return-type/actual.js
create mode 100644 packages/babylon/test/fixtures/flow/regression/arrow-function-parens-with-return-type/expected.json
create mode 100644 packages/babylon/test/fixtures/flow/regression/arrow-function-parens-with-return-type/options.json
create mode 100644 packages/babylon/test/fixtures/harmony/arrow-functions/inner-parens/actual.js
create mode 100644 packages/babylon/test/fixtures/harmony/arrow-functions/inner-parens/options.json
create mode 100644 packages/babylon/test/fixtures/harmony/uncategorised/289/expected.json
create mode 100644 packages/babylon/test/fixtures/harmony/uncategorised/297/expected.json
diff --git a/packages/babel/src/util.js b/packages/babel/src/util.js
index 61b5ca8b56..2f0610873f 100644
--- a/packages/babel/src/util.js
+++ b/packages/babel/src/util.js
@@ -199,9 +199,14 @@ export function template(name: string, nodes?: Array
+ - ES6 enabled by default.
+ - Comment attachment.
+ - Support for JSX and Flow.
+ - Support for experimental language proposals.
+
## Credits
Heavily based on [acorn](https://github.com/marijnh/acorn) and [acorn-jsx](https://github.com/RReverser/acorn-jsx),
thanks to the awesome work of [@RReverser](https://github.com/RReverser) and [@marijnh](https://github.com/marijnh).
-Significant diversions are expected to occur in the future such as streaming, EBNF definitions, sweet.js integration,
-interspacial parsing, comment attachment and more.
+Significant diversions are expected to occur in the future such as streaming, EBNF definitions, sweet.js integration, interspacial parsing and more.
+
+## API
+
+### `babylon.parse(code, [options])`
+
+## Options
+
+- **allowImportExportEverywhere**: By default, `import` and `export`
+ declarations can only appear at a program's top level. Setting this
+ option to `true` allows them anywhere where a statement is allowed.
+
+- **allowReturnOutsideFunction**: By default, a return statement at
+ the top level raises an error. Set this to `true` to accept such
+ code.
+
+- **sourceType**: Indicate the mode the code should be parsed in. Can be
+ either `"script"` or `"module"`.
+
+- **features**: Object containing names of all the proposed syntax you want
+ to support.
+
+- **plugins**: Object containg the plugins that you want to enable.
+
+### Example
+
+```javascript
+require("babylon").parse("code", {
+ // parse in strict mode and allow module declarations
+ sourceType: "module",
+
+ features: {
+ // enable experimental async functions
+ asyncFunctions: true
+ }
+
+ plugins: {
+ // enable jsx and flow syntax
+ jsx: true,
+ flow: true
+ }
+});
+```
+
+### Features
+
+ - `asyncFunctions`
+ - `doExpressions`
+ - `comprehensions`
+ - `trailingFunctionCommas`
+ - `objectRestSpread`
+ - `decorators`
+
+### Plugins
+
+ - `jsx`
+ - `flow`
From cfec910a178d4b93933517f781ad268952920baf Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:26:17 +0100
Subject: [PATCH 098/174] add validation to node builders
---
packages/babel-types/src/definitions/core.js | 432 +++++++++++++++---
.../babel-types/src/definitions/es2015.js | 243 ++++++++--
.../src/definitions/experimental.js | 79 +++-
packages/babel-types/src/definitions/flow.js | 175 +++++--
packages/babel-types/src/definitions/index.js | 54 ++-
packages/babel-types/src/definitions/jsx.js | 74 ++-
packages/babel-types/src/definitions/misc.js | 9 +-
packages/babel-types/src/index.js | 23 +-
8 files changed, 920 insertions(+), 169 deletions(-)
diff --git a/packages/babel-types/src/definitions/core.js b/packages/babel-types/src/definitions/core.js
index ce35a2941a..be0ba1387c 100644
--- a/packages/babel-types/src/definitions/core.js
+++ b/packages/babel-types/src/definitions/core.js
@@ -1,8 +1,11 @@
-import define, { assertValueType, assertNodeType } from "./index";
+import * as t from "../index";
+import define, { assertValueType, assertNodeType, assertEach, chain, assertOneOf } from "./index";
define("ArrayExpression", {
fields: {
- elements: { validate: assertValueType("array") }
+ elements: {
+ validate: assertValueType("array")
+ }
},
visitor: ["elements"],
aliases: ["Expression"]
@@ -11,9 +14,15 @@ define("ArrayExpression", {
define("AssignmentExpression", {
fields: {
elements: {
- operator: { validate: assertValueType("string") },
- left: { validate: assertNodeType("LVal") },
- right: { validate: assertNodeType("Expression") }
+ operator: {
+ validate: assertValueType("string")
+ },
+ left: {
+ validate: assertNodeType("LVal")
+ },
+ right: {
+ validate: assertNodeType("Expression")
+ }
}
},
builder: ["operator", "left", "right"],
@@ -24,53 +33,104 @@ define("AssignmentExpression", {
define("BinaryExpression", {
builder: ["operator", "left", "right"],
fields: {
- operator: { validate: assertValueType("string") },
- left: { validate: assertNodeType("Expression") },
- right: { validate: assertNodeType("Expression") }
+ operator: {
+ validate: assertValueType("string")
+ },
+ left: {
+ validate: assertNodeType("Expression")
+ },
+ right: {
+ validate: assertNodeType("Expression")
+ }
},
visitor: ["left", "right"],
aliases: ["Binary", "Expression"]
});
-define("BlockStatement", {
- visitor: ["body"],
+define("Directive", {
fields: {
- body: { validate: assertValueType("array") }
+ value: {
+ validate: assertValueType("string")
+ }
+ }
+});
+
+define("BlockStatement", {
+ builder: ["body", "directives"],
+ visitor: ["directives", "body"],
+ fields: {
+ directives: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Directive"))),
+ default: []
+ },
+ body: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Statement")))
+ }
},
aliases: ["Scopable", "BlockParent", "Block", "Statement"]
});
define("BreakStatement", {
visitor: ["label"],
+ fields: {
+ label: {
+ validate: assertNodeType("Identifier"),
+ optional: true
+ }
+ },
aliases: ["Statement", "Terminatorless", "CompletionStatement"]
});
define("CallExpression", {
visitor: ["callee", "arguments"],
fields: {
- callee: { validate: assertNodeType("Expression") },
- arguments: { validate: assertValueType("array") }
+ callee: {
+ validate: assertNodeType("Expression")
+ },
+ arguments: {
+ validate: assertValueType("array")
+ }
},
aliases: ["Expression"]
});
define("CatchClause", {
visitor: ["param", "body"],
+ fields: {
+ param: {
+ validate: assertNodeType("Identifier")
+ },
+ body: {
+ validate: assertNodeType("BlockStatement")
+ }
+ },
aliases: ["Scopable"]
});
define("ConditionalExpression", {
visitor: ["test", "consequent", "alternate"],
fields: {
- test: { validate: assertNodeType("Expression") },
- consequent: { validate: assertNodeType("Expression") },
- alternate: { validate: assertNodeType("Expression") }
+ test: {
+ validate: assertNodeType("Expression")
+ },
+ consequent: {
+ validate: assertNodeType("Expression")
+ },
+ alternate: {
+ validate: assertNodeType("Expression")
+ }
},
aliases: ["Expression"]
});
define("ContinueStatement", {
visitor: ["label"],
+ fields: {
+ label: {
+ validate: assertNodeType("Identifier"),
+ optional: true
+ }
+ },
aliases: ["Statement", "Terminatorless", "CompletionStatement"]
});
@@ -79,7 +139,15 @@ define("DebuggerStatement", {
});
define("DoWhileStatement", {
- visitor: ["body", "test"],
+ visitor: ["test", "body"],
+ fields: {
+ test: {
+ validate: assertNodeType("Expression")
+ },
+ body: {
+ validate: assertNodeType("BlockStatement")
+ }
+ },
aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
});
@@ -90,7 +158,9 @@ define("EmptyStatement", {
define("ExpressionStatement", {
visitor: ["expression"],
fields: {
- expression: { validate: assertNodeType("Expression") }
+ expression: {
+ validate: assertNodeType("Expression")
+ }
},
aliases: ["Statement"]
});
@@ -99,27 +169,60 @@ define("File", {
builder: ["program", "comments", "tokens"],
visitor: ["program"],
fields: {
- program: { validate: assertNodeType("Program") }
+ program: {
+ validate: assertNodeType("Program")
+ }
}
});
define("ForInStatement", {
visitor: ["left", "right", "body"],
- aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"]
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: assertNodeType("VariableDeclaration", "LVal")
+ },
+ right: {
+ validate: assertNodeType("Expression")
+ },
+ body: {
+ validate: assertNodeType("Statement")
+ }
+ }
});
define("ForStatement", {
visitor: ["init", "test", "update", "body"],
- aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"]
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
+ fields: {
+ init: {
+ validate: assertNodeType("VariableDeclaration", "Expression")
+ },
+ test: {
+ validate: assertNodeType("Expression")
+ },
+ update: {
+ validate: assertNodeType("Expression")
+ },
+ body: {
+ validate: assertNodeType("Statement")
+ }
+ }
});
define("FunctionDeclaration", {
builder: ["id", "params", "body", "generator", "async"],
visitor: ["id", "params", "body", "returnType", "typeParameters"],
fields: {
- id: { validate: assertNodeType("Identifier") },
- params: { validate: assertValueType("array") },
- body: { validate: assertNodeType("BlockStatement") },
+ id: {
+ validate: assertNodeType("Identifier")
+ },
+ params: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("LVal")))
+ },
+ body: {
+ validate: assertNodeType("BlockStatement")
+ },
generator: {
default: false,
validate: assertValueType("boolean")
@@ -129,14 +232,22 @@ define("FunctionDeclaration", {
validate: assertValueType("boolean")
}
},
- aliases: ["Scopable", "Function", "Func", "BlockParent", "FunctionParent", "Statement", "Pure", "Declaration"]
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pure", "Declaration"]
});
define("FunctionExpression", {
builder: ["id", "params", "body", "generator", "async"],
fields: {
- params: { validate: assertValueType("array") },
- body: { validate: assertNodeType("BlockStatement") },
+ id: {
+ validate: assertNodeType("Identifier"),
+ optional: true
+ },
+ params: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("LVal")))
+ },
+ body: {
+ validate: assertNodeType("BlockStatement")
+ },
generator: {
default: false,
validate: assertValueType("boolean")
@@ -147,29 +258,61 @@ define("FunctionExpression", {
}
},
visitor: ["id", "params", "body", "returnType", "typeParameters"],
- aliases: ["Scopable", "Function", "Func", "BlockParent", "FunctionParent", "Expression", "Pure"]
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pure"]
});
define("Identifier", {
builder: ["name"],
visitor: ["typeAnnotation"],
- aliases: ["Expression", "LVal"]
+ aliases: ["Expression", "LVal"],
+ fields: {
+ name: {
+ validate(node, key, val) {
+ if (!t.isValidIdentifier(val)) {
+ // todo
+ }
+ }
+ }
+ }
});
define("IfStatement", {
visitor: ["test", "consequent", "alternate"],
- aliases: ["Statement"]
+ aliases: ["Statement"],
+ fields: {
+ test: {
+ validate: assertNodeType("Expression")
+ },
+ consequent: {
+ optional: true,
+ validate: assertNodeType("Statement")
+ },
+ alternate: {
+ optional: true,
+ validate: assertNodeType("Statement")
+ }
+ }
});
define("LabeledStatement", {
visitor: ["label", "body"],
- aliases: ["Statement"]
+ aliases: ["Statement"],
+ fields: {
+ label: {
+ validate: assertNodeType("Identifier")
+ },
+ body: {
+ validate: assertNodeType("Statement")
+ }
+ }
});
define("StringLiteral", {
builder: ["value"],
fields: {
- value: { validate: assertValueType("string") }
+ value: {
+ validate: assertValueType("string")
+ }
},
aliases: ["Expression", "Pure", "Literal", "Immutable"]
});
@@ -177,7 +320,9 @@ define("StringLiteral", {
define("NumberLiteral", {
builder: ["value"],
fields: {
- value: { validate: assertValueType("number") }
+ value: {
+ validate: assertValueType("number")
+ }
},
aliases: ["Expression", "Pure", "Literal", "Immutable"]
});
@@ -189,73 +334,161 @@ define("NullLiteral", {
define("BooleanLiteral", {
builder: ["value"],
fields: {
- value: { validate: assertValueType("boolean") }
+ value: {
+ validate: assertValueType("boolean")
+ }
},
aliases: ["Expression", "Pure", "Literal", "Immutable"]
});
define("RegexLiteral", {
builder: ["pattern", "flags"],
+ aliases: ["Expression", "Literal"],
fields: {
- pattern: { validate: assertValueType("string") },
+ pattern: {
+ validate: assertValueType("string")
+ },
flags: {
validate: assertValueType("string"),
default: ""
}
- },
- aliases: ["Expression", "Literal"]
+ }
});
define("LogicalExpression", {
builder: ["operator", "left", "right"],
visitor: ["left", "right"],
- aliases: ["Binary", "Expression"]
+ aliases: ["Binary", "Expression"],
+ fields: {
+ operator: {
+ // todo
+ },
+ left: {
+ validate: assertNodeType("Expression")
+ },
+ right: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("MemberExpression", {
builder: ["object", "property", "computed"],
- fields: {
- computed: { default: false }
- },
visitor: ["object", "property"],
- aliases: ["Expression", "LVal"]
+ aliases: ["Expression", "LVal"],
+ fields: {
+ object: {
+ validate: assertNodeType("Expression")
+ },
+ property: {
+ validate(node, key, val) {
+ var expectedType = node.computed ? "Expression" : "Identifier";
+ assertNodeType(expectedType)(node, key, val);
+ }
+ },
+ computed: {
+ default: false
+ }
+ }
});
define("NewExpression", {
visitor: ["callee", "arguments"],
- aliases: ["Expression"]
+ aliases: ["Expression"],
+ fields: {
+ callee: {
+ validate: assertNodeType("Expression")
+ },
+ arguments: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Expression")))
+ }
+ }
});
define("ObjectExpression", {
visitor: ["properties"],
- aliases: ["Expression"]
+ aliases: ["Expression"],
+ fields: {
+ properties: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Property", "SpreadProperty")))
+ }
+ }
});
define("Program", {
- visitor: ["body"],
+ visitor: ["directives", "body"],
+ builder: ["body", "directives"],
fields: {
- body: { validate: assertValueType("array") }
+ directives: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Directive"))),
+ default: []
+ },
+ body: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Statement")))
+ }
},
aliases: ["Scopable", "BlockParent", "Block", "FunctionParent"]
});
define("Property", {
- builder: ["kind", "key", "value", "computed"],
+ builder: ["kind", "key", "value", "computed", "method", "shorthand"],
fields: {
- kind: { default: "init" },
- computed: { default: false }
+ kind: {
+ validate: chain(assertValueType("string"), assertOneOf("init", "get", "set")),
+ default: "init"
+ },
+ computed: {
+ validate: assertValueType("boolean"),
+ default: false
+ },
+ key: {
+ validate(node, key, val) {
+ var expectedTypes = node.computed ? "Expression" : ["Identifier", "Literal"];
+ assertNodeType(...expectedTypes)(node, key, val);
+ }
+ },
+ value: {
+ validate(node, key, val) {
+ var expectedType = "Expression";
+ if (node.kind === "get" || node.kind === "set" || node.method) {
+ expectedType = "FunctionExpression";
+ }
+ assertNodeType(expectedType)(node, key, val);
+ }
+ },
+ method: {
+ validate: assertValueType("boolean"),
+ default: false
+ },
+ shorthand: {
+ validate: assertValueType("boolean"),
+ default: false
+ },
+ decorators: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("Decorator")))
+ }
},
visitor: ["key", "value", "decorators"],
aliases: ["UserWhitespacable"]
});
define("RestElement", {
- visitor: ["argument", "typeAnnotation"]
+ visitor: ["argument", "typeAnnotation"],
+ fields: {
+ argument: {
+ validate: assertNodeType("LVal")
+ }
+ }
});
define("ReturnStatement", {
visitor: ["argument"],
- aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("SequenceExpression", {
@@ -267,12 +500,18 @@ define("SequenceExpression", {
});
define("SwitchCase", {
- visitor: ["test", "consequent"]
+ visitor: ["test", "consequent"],
+ fields: {
+ // todo
+ }
});
define("SwitchStatement", {
visitor: ["discriminant", "cases"],
- aliases: ["Statement", "BlockParent", "Scopable"]
+ aliases: ["Statement", "BlockParent", "Scopable"],
+ fields: {
+ // todo
+ }
});
define("ThisExpression", {
@@ -281,19 +520,45 @@ define("ThisExpression", {
define("ThrowStatement", {
visitor: ["argument"],
- aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
+// todo: at least handler or finalizer should be set to be valid
define("TryStatement", {
- builder: ["block", "handler", "finalizer"],
- visitor: ["block", "handlers", "handler", "guardedHandlers", "finalizer"],
- aliases: ["Statement"]
+ visitor: ["block", "handler", "finalizer"],
+ aliases: ["Statement"],
+ fields: {
+ body: {
+ validate: assertNodeType("BlockStatement")
+ },
+ handler: {
+ optional: true,
+ handler: assertNodeType("BlockStatement")
+ },
+ finalizer: {
+ optional: true,
+ validate: assertNodeType("BlockStatement")
+ }
+ }
});
define("UnaryExpression", {
builder: ["operator", "argument", "prefix"],
fields: {
- prefix: { default: false }
+ prefix: {
+ default: false
+ },
+ argument: {
+ validate: assertNodeType("Expression")
+ },
+ operator: {
+ // todo
+ }
},
visitor: ["argument"],
aliases: ["UnaryLike", "Expression"]
@@ -302,7 +567,15 @@ define("UnaryExpression", {
define("UpdateExpression", {
builder: ["operator", "argument", "prefix"],
fields: {
- prefix: { default: false }
+ prefix: {
+ default: false
+ },
+ argument: {
+ validate: assertNodeType("Expression")
+ },
+ operator: {
+ // todo
+ }
},
visitor: ["argument"],
aliases: ["Expression"]
@@ -311,19 +584,52 @@ define("UpdateExpression", {
define("VariableDeclaration", {
builder: ["kind", "declarations"],
visitor: ["declarations"],
- aliases: ["Statement", "Declaration"]
+ aliases: ["Statement", "Declaration"],
+ fields: {
+ kind: {
+ validate: chain(assertValueType("string"), assertOneOf("var", "let", "const"))
+ },
+ declarations: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("VariableDeclarator")))
+ }
+ }
});
define("VariableDeclarator", {
- visitor: ["id", "init"]
+ visitor: ["id", "init"],
+ fields: {
+ id: {
+ validate: assertNodeType("LVal")
+ },
+ init: {
+ optional: true,
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("WhileStatement", {
visitor: ["test", "body"],
- aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
+ fields: {
+ test: {
+ validate: assertNodeType("Expression")
+ },
+ body: {
+ validate: assertNodeType("BlockStatement", "Statement")
+ }
+ }
});
define("WithStatement", {
visitor: ["object", "body"],
- aliases: ["Statement"]
+ aliases: ["Statement"],
+ fields: {
+ object: {
+ object: assertNodeType("Expression")
+ },
+ body: {
+ validate: assertNodeType("BlockStatement")
+ }
+ }
});
diff --git a/packages/babel-types/src/definitions/es2015.js b/packages/babel-types/src/definitions/es2015.js
index 7f1d6d238e..09425ecebd 100644
--- a/packages/babel-types/src/definitions/es2015.js
+++ b/packages/babel-types/src/definitions/es2015.js
@@ -1,113 +1,248 @@
-import define from "./index";
+import define, { assertNodeType, assertValueType, chain, assertEach, assertOneOf } from "./index";
define("AssignmentPattern", {
visitor: ["left", "right"],
- aliases: ["Pattern", "LVal"]
+ aliases: ["Pattern", "LVal"],
+ fields: {
+ left: {
+ validate: assertNodeType("Identifier")
+ },
+ right: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("ArrayPattern", {
visitor: ["elements", "typeAnnotation"],
- aliases: ["Pattern", "LVal"]
+ aliases: ["Pattern", "LVal"],
+ fields: {
+ elements: {
+ validate: chain(assertValueType("array"), assertEach(assertValueType("Expression")))
+ }
+ }
});
define("ArrowFunctionExpression", {
builder: ["params", "body", "async"],
visitor: ["params", "body", "returnType"],
- aliases: ["Scopable", "Function", "Func", "BlockParent", "FunctionParent", "Expression", "Pure"]
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pure"],
+ fields: {
+ params: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("LVal")))
+ },
+ body: {
+ validate: assertNodeType("BlockStatement", "Expression")
+ },
+ async: {
+ validate: assertValueType("boolean"),
+ default: false
+ }
+ }
});
define("ClassBody", {
- visitor: ["body"]
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: chain(assertValueType("array"), assertEach(assertValueType("MethodDefinition", "ClassProperty")))
+ }
+ }
});
define("ClassDeclaration", {
+ builder: ["id", "superClass", "body", "decorators"],
visitor: ["id", "body", "superClass", "typeParameters", "superTypeParameters", "implements", "decorators"],
- aliases: ["Scopable", "Class", "Statement", "Declaration"]
+ aliases: ["Scopable", "Class", "Statement", "Declaration"],
+ fields: {
+ id: {
+ validate: assertNodeType("Identifier")
+ },
+ body: {
+ validate: assertNodeType("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: assertNodeType("Expression")
+ },
+ decorators: {
+ validate: chain(assertValueType("array"), assertEach(assertValueType("Decorator")))
+ }
+ }
});
define("ClassExpression", {
+ builder: ["id", "superClass", "body", "decorators"],
visitor: ["id", "body", "superClass", "typeParameters", "superTypeParameters", "implements", "decorators"],
- aliases: ["Scopable", "Class", "Expression"]
+ aliases: ["Scopable", "Class", "Expression"],
+ fields: {
+ id: {
+ optional: true,
+ validate: assertNodeType("Identifier")
+ },
+ body: {
+ validate: assertNodeType("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: assertNodeType("Expression")
+ },
+ decorators: {
+ validate: chain(assertValueType("array"), assertEach(assertValueType("Decorator")))
+ }
+ }
});
define("ExportAllDeclaration", {
visitor: ["source", "exported"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"]
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ // todo
+ }
});
define("ExportDefaultDeclaration", {
visitor: ["declaration"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"]
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ // todo
+ }
});
define("ExportNamedDeclaration", {
visitor: ["declaration", "specifiers", "source"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"]
-});
-
-define("ExportDefaultSpecifier", {
- visitor: ["exported"],
- aliases: ["ModuleSpecifier"]
-});
-
-define("ExportNamespaceSpecifier", {
- visitor: ["exported"],
- aliases: ["ModuleSpecifier"]
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ // todo
+ }
});
define("ExportSpecifier", {
visitor: ["local", "exported"],
- aliases: ["ModuleSpecifier"]
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: assertNodeType("Identifier")
+ },
+ imported: {
+ validate: assertNodeType("Identifier")
+ }
+ }
});
define("ForOfStatement", {
visitor: ["left", "right", "body"],
- aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"]
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: assertNodeType("VariableDeclaration", "LVal")
+ },
+ right: {
+ validate: assertNodeType("Expression")
+ },
+ body: {
+ validate: assertNodeType("Statement")
+ }
+ }
});
define("ImportDeclaration", {
visitor: ["specifiers", "source"],
- aliases: ["Statement", "Declaration", "ModuleDeclaration"]
+ aliases: ["Statement", "Declaration", "ModuleDeclaration"],
+ fields: {
+ specifiers: {
+ // todo
+ },
+ source: {
+ validate: assertNodeType("StringLiteral")
+ }
+ }
});
define("ImportDefaultSpecifier", {
visitor: ["local"],
- aliases: ["ModuleSpecifier"]
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: assertNodeType("Identifier")
+ }
+ }
});
define("ImportNamespaceSpecifier", {
visitor: ["local"],
- aliases: ["ModuleSpecifier"]
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: assertNodeType("Identifier")
+ }
+ }
});
define("ImportSpecifier", {
visitor: ["local", "imported"],
- aliases: ["ModuleSpecifier"]
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: assertNodeType("Identifier")
+ },
+ imported: {
+ validate: assertNodeType("Identifier")
+ }
+ }
});
define("MetaProperty", {
visitor: ["meta", "property"],
- aliases: ["Expression"]
+ aliases: ["Expression"],
+ fields: {
+ // todo: limit to new.target
+ meta: {
+ validate: assertValueType("string")
+ },
+ property: {
+ validate: assertValueType("string")
+ }
+ }
});
define("MethodDefinition", {
builder: ["key", "value", "kind", "computed", "static"],
+ visitor: ["key", "value", "decorators"],
fields: {
- kind: { default: "method" },
- computed: { default: false },
- static: { default: false }
- },
- visitor: ["key", "value", "decorators"]
+ kind: {
+ validate: chain(assertValueType("string"), assertOneOf("get", "set", "method", "constructor")),
+ default: "method"
+ },
+ computed: {
+ default: false,
+ validate: assertValueType("boolean")
+ },
+ static: {
+ default: false,
+ validate: assertValueType("boolean")
+ }
+ }
});
define("ObjectPattern", {
visitor: ["properties", "typeAnnotation"],
- aliases: ["Pattern", "LVal"]
+ aliases: ["Pattern", "LVal"],
+ fields: {
+ properties: {
+ validate: chain(assertValueType("array"), assertEach(assertValueType("RestProperty", "Property")))
+ }
+ }
});
define("SpreadElement", {
visitor: ["argument"],
- aliases: ["UnaryLike"]
+ aliases: ["UnaryLike"],
+ fields: {
+ argument: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("Super", {
@@ -116,18 +251,50 @@ define("Super", {
define("TaggedTemplateExpression", {
visitor: ["tag", "quasi"],
- aliases: ["Expression"]
+ aliases: ["Expression"],
+ fields: {
+ tag: {
+ validate: assertNodeType("Expression")
+ },
+ quasi: {
+ validate: assertNodeType("TemplateLiteral")
+ }
+ }
});
-define("TemplateElement");
+define("TemplateElement", {
+ builder: ["value", "tail"],
+ fields: {
+ value: {
+ // todo: flatten `raw` into main node
+ },
+ tail: {
+ validate: assertValueType("boolean"),
+ default: false
+ }
+ }
+});
define("TemplateLiteral", {
visitor: ["quasis", "expressions"],
- aliases: ["Expression", "Literal"]
+ aliases: ["Expression", "Literal"],
+ fields: {
+ // todo
+ }
});
define("YieldExpression", {
builder: ["argument", "delegate"],
visitor: ["argument"],
- aliases: ["Expression", "Terminatorless"]
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ delegate: {
+ validate: assertValueType("boolean"),
+ default: false
+ },
+ argument: {
+ optional: true,
+ validate: assertNodeType("Expression"),
+ }
+ }
});
diff --git a/packages/babel-types/src/definitions/experimental.js b/packages/babel-types/src/definitions/experimental.js
index 6af58866b9..1e0d171782 100644
--- a/packages/babel-types/src/definitions/experimental.js
+++ b/packages/babel-types/src/definitions/experimental.js
@@ -1,34 +1,97 @@
-import define from "./index";
+import define, { assertNodeType, assertValueType } from "./index";
define("AwaitExpression", {
builder: ["argument", "all"],
visitor: ["argument"],
- aliases: ["Expression", "Terminatorless"]
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ all: {
+ validate: assertValueType("boolean"),
+ default: false
+ },
+ argument: {
+ validate: assertNodeType("Expression"),
+ }
+ }
});
define("BindExpression", {
- visitor: ["object", "callee"]
+ visitor: ["object", "callee"],
+ fields: {
+ // todo
+ }
});
define("ComprehensionBlock", {
- visitor: ["left", "right"]
+ visitor: ["left", "right"],
+ fields: {
+ // todo
+ }
});
define("ComprehensionExpression", {
visitor: ["filter", "blocks", "body"],
- aliases: ["Expression", "Scopable"]
+ aliases: ["Expression", "Scopable"],
+ fields: {
+ // todo
+ }
});
define("Decorator", {
- visitor: ["expression"]
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("DoExpression", {
visitor: ["body"],
- aliases: ["Expression"]
+ aliases: ["Expression"],
+ fields: {
+ body: {
+ validate: assertNodeType("BlockStatement")
+ }
+ }
+});
+
+define("ExportDefaultSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: assertNodeType("Identifier")
+ }
+ }
+});
+
+define("ExportNamespaceSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: assertNodeType("Identifier")
+ }
+ }
+});
+
+define("RestProperty", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ fields: {
+ argument: {
+ validate: assertNodeType("LVal")
+ }
+ }
});
define("SpreadProperty", {
visitor: ["argument"],
- aliases: ["UnaryLike"]
+ aliases: ["UnaryLike"],
+ fields: {
+ argument: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
diff --git a/packages/babel-types/src/definitions/flow.js b/packages/babel-types/src/definitions/flow.js
index 2cfcc3e3e1..f5fe07c9d6 100644
--- a/packages/babel-types/src/definitions/flow.js
+++ b/packages/babel-types/src/definitions/flow.js
@@ -1,80 +1,128 @@
import define from "./index";
define("AnyTypeAnnotation", {
- aliases: ["Flow", "FlowBaseAnnotation"]
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
});
define("ArrayTypeAnnotation", {
visitor: ["elementType"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("BooleanTypeAnnotation", {
- aliases: ["Flow", "FlowBaseAnnotation"]
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
});
define("BooleanLiteralTypeAnnotation", {
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("ClassImplements", {
visitor: ["id", "typeParameters"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("ClassProperty", {
visitor: ["key", "value", "typeAnnotation", "decorators"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("DeclareClass", {
visitor: ["id", "typeParameters", "extends", "body"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"]
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
});
define("DeclareFunction", {
visitor: ["id"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"]
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
});
define("DeclareModule", {
visitor: ["id", "body"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"]
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
});
define("DeclareVariable", {
visitor: ["id"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"]
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
});
define("FunctionTypeAnnotation", {
visitor: ["typeParameters", "params", "rest", "returnType"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("FunctionTypeParam", {
visitor: ["name", "typeAnnotation"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("GenericTypeAnnotation", {
visitor: ["id", "typeParameters"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("InterfaceExtends", {
visitor: ["id", "typeParameters"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("InterfaceDeclaration", {
visitor: ["id", "typeParameters", "extends", "body"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"]
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
});
define("IntersectionTypeAnnotation", {
visitor: ["types"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("MixedTypeAnnotation", {
@@ -83,90 +131,147 @@ define("MixedTypeAnnotation", {
define("NullableTypeAnnotation", {
visitor: ["typeAnnotation"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("NumberLiteralTypeAnnotation", {
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("NumberTypeAnnotation", {
- aliases: ["Flow", "FlowBaseAnnotation"]
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
});
define("StringLiteralTypeAnnotation", {
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("StringTypeAnnotation", {
- aliases: ["Flow", "FlowBaseAnnotation"]
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
});
define("TupleTypeAnnotation", {
visitor: ["types"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("TypeofTypeAnnotation", {
visitor: ["argument"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("TypeAlias", {
visitor: ["id", "typeParameters", "right"],
- aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"]
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
});
define("TypeAnnotation", {
visitor: ["typeAnnotation"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("TypeCastExpression", {
visitor: ["expression", "typeAnnotation"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("TypeParameterDeclaration", {
visitor: ["params"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("TypeParameterInstantiation", {
visitor: ["params"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("ObjectTypeAnnotation", {
visitor: ["properties", "indexers", "callProperties"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("ObjectTypeCallProperty", {
visitor: ["value"],
- aliases: ["Flow", "UserWhitespacable"]
+ aliases: ["Flow", "UserWhitespacable"],
+ fields: {
+ // todo
+ }
});
define("ObjectTypeIndexer", {
visitor: ["id", "key", "value"],
- aliases: ["Flow", "UserWhitespacable"]
+ aliases: ["Flow", "UserWhitespacable"],
+ fields: {
+ // todo
+ }
});
define("ObjectTypeProperty", {
visitor: ["key", "value"],
- aliases: ["Flow", "UserWhitespacable"]
+ aliases: ["Flow", "UserWhitespacable"],
+ fields: {
+ // todo
+ }
});
define("QualifiedTypeIdentifier", {
visitor: ["id", "qualification"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("UnionTypeAnnotation", {
visitor: ["types"],
- aliases: ["Flow"]
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
});
define("VoidTypeAnnotation", {
- aliases: ["Flow", "FlowBaseAnnotation"]
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
});
diff --git a/packages/babel-types/src/definitions/index.js b/packages/babel-types/src/definitions/index.js
index b384f7e1be..e9199969f8 100644
--- a/packages/babel-types/src/definitions/index.js
+++ b/packages/babel-types/src/definitions/index.js
@@ -5,38 +5,76 @@ export var ALIAS_KEYS = {};
export var NODE_FIELDS = {};
export var BUILDER_KEYS = {};
+function getType(val) {
+ if (Array.isArray(val)) {
+ return "array";
+ } else if (val === null) {
+ return "null";
+ } else if (val === undefined) {
+ return "undefined";
+ } else {
+ return typeof val;
+ }
+}
+
export function assertContains(vals) {
return function (val, key) {
if (vals.indexOf(val) < 0) {
- throw new TypeError(`Property ${key} with the value of ${val} expected to be one of ${JSON.stringify(vals)}`);
+ throw new TypeError(`Property ${key} with the value of ${JSON.stringify(val)} expected to be one of ${JSON.stringify(vals)}`);
+ }
+ };
+}
+
+export function assertEach(callback) {
+ return function (node, key, val) {
+ if (!Array.isArray(val)) return;
+
+ for (var i = 0; i < val.length; i++) {
+ callback(node, `${key}[${i}]`, val[i]);
+ }
+ };
+}
+
+export function assertOneOf(...vals) {
+ return function (node, key, val) {
+ if (vals.indexOf(val) < 0) {
+ throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(vals)} but got ${JSON.stringify(val)}`);
}
};
}
export function assertNodeType(...types) {
- return function (node, key) {
+ return function (node, key, val) {
var valid = false;
for (var type of types) {
- if (t.is(type, node)) {
+ if (t.is(type, val)) {
valid = true;
break;
}
}
if (!valid) {
- throw new TypeError(`Property ${key} expected node to be of a type ${JSON.stringify(types)} but instead got ${node && node.type}`);
+ throw new TypeError(`Property ${key} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val && val.type)}`);
}
};
}
export function assertValueType(type) {
- return function (val, key) {
- var valid = typeof val === type;
- if (type === "array" && Array.isArray(val)) valid = true;
+ return function (node, key, val) {
+ var valid = getType(val) === type;
if (!valid) {
- throw new TypeError(`Property ${key} expected type of ${type} but got ${typeof val}`);
+ console.log(type, key, val);
+ throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);
+ }
+ };
+}
+
+export function chain(...fns) {
+ return function (...args) {
+ for (var fn of fns) {
+ fn(...args);
}
};
}
diff --git a/packages/babel-types/src/definitions/jsx.js b/packages/babel-types/src/definitions/jsx.js
index 8f2acabac0..2da69891c8 100644
--- a/packages/babel-types/src/definitions/jsx.js
+++ b/packages/babel-types/src/definitions/jsx.js
@@ -1,13 +1,27 @@
-import define, { assertValueType } from "./index";
+import define, { assertNodeType, assertValueType, chain, assertEach } from "./index";
define("JSXAttribute", {
visitor: ["name", "value"],
- aliases: ["JSX", "Immutable"]
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ name: {
+ validate: assertNodeType("JSXIdentifier", "JSXMemberExpression")
+ },
+ value: {
+ optional: true,
+ validate: assertNodeType("JSXElement", "StringLiteral", "JSXExpressionContainer")
+ }
+ }
});
define("JSXClosingElement", {
visitor: ["name"],
- aliases: ["JSX", "Immutable"]
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ name: {
+ validate: assertNodeType("JSXIdentifier", "JSXMemberExpression")
+ }
+ }
});
define("JSXElement", {
@@ -34,37 +48,79 @@ define("JSXEmptyExpression", {
define("JSXExpressionContainer", {
visitor: ["expression"],
- aliases: ["JSX", "Immutable"]
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ expression: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("JSXIdentifier", {
+ builder: ["name"],
aliases: ["JSX", "Expression"]
});
define("JSXMemberExpression", {
visitor: ["object", "property"],
- aliases: ["JSX", "Expression"]
+ aliases: ["JSX", "Expression"],
+ fields: {
+ object: {
+ validate: assertNodeType("JSXIdentifier")
+ },
+ property: {
+ validate: assertNodeType("JSXIdentifier")
+ }
+ }
});
define("JSXNamespacedName", {
visitor: ["namespace", "name"],
- aliases: ["JSX"]
+ aliases: ["JSX"],
+ fields: {
+ namespace: {
+ validate: assertNodeType("JSXIdentifier")
+ },
+ name: {
+ validate: assertNodeType("JSXIdentifier")
+ }
+ }
});
define("JSXOpeningElement", {
+ builder: ["name", "attributes", "selfClosing"],
visitor: ["name", "attributes"],
- aliases: ["JSX", "Immutable"]
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ name: {
+ validate: assertNodeType("JSXIdentifier", "JSXMemberExpression")
+ },
+ selfClosing: {
+ default: false,
+ validate: assertValueType("boolean")
+ },
+ attributes: {
+ validate: chain(assertValueType("array"), assertEach(assertNodeType("JSXAttribute", "JSXSpreadAttribute")))
+ }
+ }
});
define("JSXSpreadAttribute", {
visitor: ["argument"],
- aliases: ["JSX"]
+ aliases: ["JSX"],
+ fields: {
+ argument: {
+ validate: assertNodeType("Expression")
+ }
+ }
});
define("JSXText", {
aliases: ["JSX"],
builder: ["value"],
fields: {
- value: { validate: assertValueType("string") }
+ value: {
+ validate: assertValueType("string")
+ }
}
});
diff --git a/packages/babel-types/src/definitions/misc.js b/packages/babel-types/src/definitions/misc.js
index 28730499f1..744beacc2d 100644
--- a/packages/babel-types/src/definitions/misc.js
+++ b/packages/babel-types/src/definitions/misc.js
@@ -1,4 +1,4 @@
-import define from "./index";
+import define, { assertNodeType } from "./index";
define("Noop", {
visitor: []
@@ -6,5 +6,10 @@ define("Noop", {
define("ParenthesizedExpression", {
visitor: ["expression"],
- aliases: ["Expression"]
+ aliases: ["Expression"],
+ fields: {
+ expression: {
+ validate: assertNodeType("expression")
+ }
+ }
});
diff --git a/packages/babel-types/src/index.js b/packages/babel-types/src/index.js
index 8e9644134a..31d53df153 100644
--- a/packages/babel-types/src/index.js
+++ b/packages/babel-types/src/index.js
@@ -1,6 +1,7 @@
import toFastProperties from "to-fast-properties";
import compact from "lodash/array/compact";
import assign from "lodash/object/assign";
+import loClone from "lodash/lang/clone";
import each from "lodash/collection/each";
import uniq from "lodash/array/uniq";
@@ -129,21 +130,28 @@ export function isType(nodeType: string, targetType: string): boolean {
each(t.BUILDER_KEYS, function (keys, type) {
function builder() {
+ if (arguments.length > keys.length) {
+ // todo: error
+ }
+
var node = {};
node.type = type;
var i = 0;
- for (var key of (keys: Array)) {
+ for (let key of (keys: Array)) {
var field = t.NODE_FIELDS[type][key];
var arg = arguments[i++];
- if (arg === undefined) arg = field.default;
- if (field.validate) field.validate(arg, key);
+ if (arg === undefined) arg = loClone(field.default);
node[key] = arg;
}
+ for (let key in node) {
+ validate(node, key, node[key]);
+ }
+
return node;
}
@@ -155,14 +163,17 @@ each(t.BUILDER_KEYS, function (keys, type) {
* Description
*/
-export function validate(key, parent, node) {
- var fields = t.NODE_FIELDS[parent.type];
+export function validate(node, key, val) {
+ if (!node) return;
+
+ var fields = t.NODE_FIELDS[node.type];
if (!fields) return;
var field = fields[key];
if (!field || !field.validate) return;
+ if (field.optional && val == null) return;
- field.validate(node, key);
+ field.validate(node, key, val);
}
/**
From b91e8699e15b0d6e2d33fcbe93975cbf30590d1a Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:26:30 +0100
Subject: [PATCH 099/174] whitespace!
---
packages/babel-traverse/src/context.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/packages/babel-traverse/src/context.js b/packages/babel-traverse/src/context.js
index da19dfe646..6fa70d022f 100644
--- a/packages/babel-traverse/src/context.js
+++ b/packages/babel-traverse/src/context.js
@@ -1,5 +1,6 @@
import NodePath from "./path";
import * as t from "babel-types";
+
export default class TraversalContext {
constructor(scope, opts, state, parentPath) {
this.parentPath = parentPath;
@@ -9,6 +10,7 @@ export default class TraversalContext {
}
queue = null;
+
shouldVisit(node) {
var opts = this.opts;
if (opts.enter || opts.exit) return true;
@@ -24,6 +26,7 @@ export default class TraversalContext {
return false;
}
+
create(node, obj, key, listKey) {
var path = NodePath.get({
parentPath: this.parentPath,
@@ -35,6 +38,7 @@ export default class TraversalContext {
path.unshiftContext(this);
return path;
}
+
visitMultiple(container, parent, listKey) {
// nothing to traverse!
if (container.length === 0) return false;
@@ -73,6 +77,7 @@ export default class TraversalContext {
return stop;
}
+
visitSingle(node, key) {
if (this.shouldVisit(node[key])) {
var path = this.create(node, node, key);
@@ -80,6 +85,7 @@ export default class TraversalContext {
path.shiftContext();
}
}
+
visit(node, key) {
var nodes = node[key];
if (!nodes) return;
From 8eeda9f75f6e3237a275b8fdb1aa34e311645a93 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:26:57 +0100
Subject: [PATCH 100/174] add traverse.cheap and upgrade to new traverse API
---
packages/babel-traverse/src/index.js | 39 +++++++++++++++-------------
1 file changed, 21 insertions(+), 18 deletions(-)
diff --git a/packages/babel-traverse/src/index.js b/packages/babel-traverse/src/index.js
index 117c3a1355..6209d197a2 100644
--- a/packages/babel-traverse/src/index.js
+++ b/packages/babel-traverse/src/index.js
@@ -34,47 +34,50 @@ traverse.NodePath = require("./path");
traverse.Scope = require("./scope");
traverse.Hub = require("./hub");
-traverse.node = function (node: Object, opts: Object, scope: Object, state: Object, parentPath: Object, skipKeys?) {
+traverse.cheap = function (node, enter) {
var keys = t.VISITOR_KEYS[node.type];
if (!keys) return;
+ enter(node);
+
+ for (var key of keys) {
+ traverse.cheap(node[key], enter);
+ }
+};
+
+traverse.node = function (node: Object, opts: Object, scope: Object, state: Object, parentPath: Object, skipKeys?) {
+ var keys: Array = t.VISITOR_KEYS[node.type];
+ if (!keys) return;
+
var context = new TraversalContext(scope, opts, state, parentPath);
- for (var key of (keys: Array)) {
+ for (var key of keys) {
if (skipKeys && skipKeys[key]) continue;
if (context.visit(node, key)) return;
}
};
-const CLEAR_KEYS = t.COMMENT_KEYS.concat([
+const CLEAR_KEYS: Array = t.COMMENT_KEYS.concat([
"_scopeInfo", "_paths",
"tokens", "comments",
"start", "end", "loc",
"raw", "rawValue"
]);
-traverse.clearNode = function (node: Object) {
- for (var i = 0; i < CLEAR_KEYS.length; i++) {
- let key = CLEAR_KEYS[i];
+traverse.clearNode = function (node) {
+ for (var key of CLEAR_KEYS) {
if (node[key] != null) node[key] = undefined;
}
};
-var clearVisitor = {
- noScope: true,
- exit: traverse.clearNode
-};
-
-traverse.removeProperties = function (tree: Object): Object {
- traverse(tree, clearVisitor);
- traverse.clearNode(tree);
-
+traverse.removeProperties = function (tree) {
+ traverse.cheap(tree, traverse.clearNode);
return tree;
};
-function hasBlacklistedType(node: Object, parent: Object, scope: Object, state: Object) {
- if (node.type === state.type) {
+function hasBlacklistedType(path, state) {
+ if (path.node.type === state.type) {
state.has = true;
- this.skip();
+ path.skip();
}
}
From 13773e3c02b8135d90a2a27c436b1fdfe9f3e775 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:27:19 +0100
Subject: [PATCH 101/174] change traversal visitor method signature from (node,
parent, scope, state) to (path, state)
---
packages/babel-traverse/src/path/context.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-traverse/src/path/context.js b/packages/babel-traverse/src/path/context.js
index 17606a0def..df2b48bd66 100644
--- a/packages/babel-traverse/src/path/context.js
+++ b/packages/babel-traverse/src/path/context.js
@@ -20,7 +20,7 @@ export function call(key) {
var previousType = this.type;
// call the function with the params (node, parent, scope, state)
- var replacement = fn.call(this, node, this.parent, this.scope, this.state);
+ var replacement = fn.call(this, this, this.state);
if (replacement) {
this.replaceWith(replacement, true);
From 6898cf83d09f0e8fde8dbcc1b5a96301970d5638 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:27:37 +0100
Subject: [PATCH 102/174] don't allow visitor methods to return a new node to
replace
---
packages/babel-traverse/src/path/context.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-traverse/src/path/context.js b/packages/babel-traverse/src/path/context.js
index df2b48bd66..1a01ccb748 100644
--- a/packages/babel-traverse/src/path/context.js
+++ b/packages/babel-traverse/src/path/context.js
@@ -23,7 +23,7 @@ export function call(key) {
var replacement = fn.call(this, this, this.state);
if (replacement) {
- this.replaceWith(replacement, true);
+ throw new Error("Unexpected return value from visitor method");
}
if (this.shouldStop || this.shouldSkip || this.removed) return;
From 3277f3272d169447957c11bc1f11724a614aa788 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:27:44 +0100
Subject: [PATCH 103/174] add babel-template package
---
packages/babel-template/package.json | 16 ++++++
packages/babel-template/src/index.js | 78 ++++++++++++++++++++++++++++
2 files changed, 94 insertions(+)
create mode 100644 packages/babel-template/package.json
create mode 100644 packages/babel-template/src/index.js
diff --git a/packages/babel-template/package.json b/packages/babel-template/package.json
new file mode 100644
index 0000000000..49803acbe8
--- /dev/null
+++ b/packages/babel-template/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "babel-template",
+ "version": "5.8.22",
+ "description": "",
+ "author": "Sebastian McKenzie ",
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "repository": "babel/babel",
+ "main": "lib/index.js",
+ "dependencies": {
+ "babylon": "^5.8.20",
+ "babel-traverse": "^5.8.22",
+ "babel-types": "^5.8.22",
+ "lodash": "^3.10.1"
+ }
+}
diff --git a/packages/babel-template/src/index.js b/packages/babel-template/src/index.js
new file mode 100644
index 0000000000..99f3c83c79
--- /dev/null
+++ b/packages/babel-template/src/index.js
@@ -0,0 +1,78 @@
+import cloneDeep from "lodash/lang/cloneDeep";
+import isEmpty from "lodash/lang/isEmpty";
+import has from "lodash/object/has";
+import traverse from "babel-traverse";
+import * as babylon from "babylon";
+import * as t from "babel-types";
+
+export default function (code) {
+ var stack = new Error().stack.split("\n").slice(1).join("\n");
+
+ var getAst = function () {
+ try {
+ var ast = babylon.parse(code, {
+ allowReturnOutsideFunction: true
+ }).program;
+
+ ast = traverse.removeProperties(ast);
+ } catch (err) {
+ err.stack = `${err.stack}from\n${stack}`;
+ }
+
+ getAst = function () {
+ return ast;
+ };
+
+ return ast;
+ };
+
+ return function (nodes, keepExpression) {
+ return useTemplate(getAst(), nodes, keepExpression);
+ };
+}
+
+function useTemplate(ast, nodes?: Array, keepExpression?: boolean) {
+ if (nodes === true) {
+ keepExpression = true;
+ nodes = null;
+ }
+
+ ast = cloneDeep(ast);
+
+ if (!isEmpty(nodes)) {
+ traverse(ast, templateVisitor, null, nodes);
+ }
+
+ if (ast.body.length > 1) {
+ return ast.body;
+ }
+
+ var node = ast.body[0];
+ if (!keepExpression && t.isExpressionStatement(node)) {
+ return node.expression;
+ } else {
+ return node;
+ }
+}
+
+var templateVisitor = {
+ // 360
+ noScope: true,
+
+ enter(path, nodes) {
+ var { node } = path;
+
+ if (t.isExpressionStatement(node)) {
+ node = node.expression;
+ }
+
+ if (t.isIdentifier(node) && has(nodes, node.name)) {
+ path.skip();
+ path.replaceInline(nodes[node.name]);
+ }
+ },
+
+ exit({ node }) {
+ traverse.clearNode(node);
+ }
+};
From dc0329eb7cda1e933ec730f6ec9c91ce1e99592f Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:27:51 +0100
Subject: [PATCH 104/174] add babel-preset-react package
---
packages/babel-preset-react/index.js | 7 +++++++
packages/babel-preset-react/package.json | 15 +++++++++++++++
2 files changed, 22 insertions(+)
create mode 100644 packages/babel-preset-react/index.js
create mode 100644 packages/babel-preset-react/package.json
diff --git a/packages/babel-preset-react/index.js b/packages/babel-preset-react/index.js
new file mode 100644
index 0000000000..864093b2b6
--- /dev/null
+++ b/packages/babel-preset-react/index.js
@@ -0,0 +1,7 @@
+module.exports = {
+ plugins: [
+ require("babel-plugin-transform-react-jsx"),
+ require("babel-plugin-syntax-flow"),
+ require("babel-plugin-syntax-jsx"),
+ ]
+};
diff --git a/packages/babel-preset-react/package.json b/packages/babel-preset-react/package.json
new file mode 100644
index 0000000000..055ed78977
--- /dev/null
+++ b/packages/babel-preset-react/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "babel-preset-react",
+ "version": "5.8.22",
+ "description": "",
+ "author": "Sebastian McKenzie ",
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "repository": "babel/babel",
+ "main": "index.js",
+ "dependencies": {
+ "babel-plugin-syntax-flow": "*",
+ "babel-plugin-syntax-jsx": "*",
+ "babel-plugin-transform-react-jsx": "*"
+ }
+}
From 6d72b025910f4d3e427150ffe9c3383eabe366cd Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:27:56 +0100
Subject: [PATCH 105/174] add babel-preset-2015 package
---
packages/babel-preset-es2015/index.js | 22 +++++++++++++++++
packages/babel-preset-es2015/package.json | 30 +++++++++++++++++++++++
2 files changed, 52 insertions(+)
create mode 100644 packages/babel-preset-es2015/index.js
create mode 100644 packages/babel-preset-es2015/package.json
diff --git a/packages/babel-preset-es2015/index.js b/packages/babel-preset-es2015/index.js
new file mode 100644
index 0000000000..6288b3ee72
--- /dev/null
+++ b/packages/babel-preset-es2015/index.js
@@ -0,0 +1,22 @@
+module.exports = {
+ plugins: [
+ require("babel-plugin-transform-es2015-template-literals"),
+ require("babel-plugin-transform-es2015-literals"),
+ require("babel-plugin-transform-es2015-function-name"),
+ require("babel-plugin-transform-es2015-arrow-functions"),
+ require("babel-plugin-transform-es2015-block-scoped-functions"),
+ require("babel-plugin-transform-es2015-classes"),
+ require("babel-plugin-transform-es2015-object-super"),
+ require("babel-plugin-transform-es2015-shorthand-properties"),
+ require("babel-plugin-transform-es2015-computed-properties"),
+ require("babel-plugin-transform-es2015-for-of"),
+ require("babel-plugin-transform-es2015-sticky-regex"),
+ require("babel-plugin-transform-es2015-unicode-regex"),
+ require("babel-plugin-transform-es2015-constants"),
+ require("babel-plugin-transform-es2015-spread"),
+ require("babel-plugin-transform-es2015-parameters"),
+ require("babel-plugin-transform-es2015-destructuring"),
+ require("babel-plugin-transform-es2015-block-scoping"),
+ require("babel-plugin-transform-es2015-tail-call")
+ ]
+};
diff --git a/packages/babel-preset-es2015/package.json b/packages/babel-preset-es2015/package.json
new file mode 100644
index 0000000000..cbd48902d6
--- /dev/null
+++ b/packages/babel-preset-es2015/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "babel-preset-es2015",
+ "version": "5.8.22",
+ "description": "",
+ "author": "Sebastian McKenzie ",
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "repository": "babel/babel",
+ "main": "index.js",
+ "dependencies": {
+ "babel-plugin-transform-es2015-template-literals": "*",
+ "babel-plugin-transform-es2015-literals": "*",
+ "babel-plugin-transform-es2015-function-name": "*",
+ "babel-plugin-transform-es2015-arrow-functions": "*",
+ "babel-plugin-transform-es2015-block-scoped-functions": "*",
+ "babel-plugin-transform-es2015-classes": "*",
+ "babel-plugin-transform-es2015-object-super": "*",
+ "babel-plugin-transform-es2015-shorthand-properties": "*",
+ "babel-plugin-transform-es2015-computed-properties": "*",
+ "babel-plugin-transform-es2015-for-of": "*",
+ "babel-plugin-transform-es2015-sticky-regex": "*",
+ "babel-plugin-transform-es2015-unicode-regex": "*",
+ "babel-plugin-transform-es2015-constants": "*",
+ "babel-plugin-transform-es2015-spread": "*",
+ "babel-plugin-transform-es2015-parameters": "*",
+ "babel-plugin-transform-es2015-destructuring": "*",
+ "babel-plugin-transform-es2015-block-scoping": "*",
+ "babel-plugin-transform-es2015-tail-call": "*"
+ }
+}
From 8d5a93d4dae610bc4ecd1fc6d1934bd8c5d5a977 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:28:27 +0100
Subject: [PATCH 106/174] move block-hoist and shadow-functions to internal
plugins
---
.../internal-plugins/block-hoist.js | 40 ++++++++++++++++++
.../shadow-functions.js | 29 +++++++------
.../transformers/internal/block-hoist.js | 41 -------------------
3 files changed, 54 insertions(+), 56 deletions(-)
create mode 100644 packages/babel-core/src/transformation/internal-plugins/block-hoist.js
rename packages/babel-core/src/transformation/{transformers/internal => internal-plugins}/shadow-functions.js (79%)
delete mode 100644 packages/babel-core/src/transformation/transformers/internal/block-hoist.js
diff --git a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
new file mode 100644
index 0000000000..e033bc39f0
--- /dev/null
+++ b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
@@ -0,0 +1,40 @@
+import Plugin from "../plugin";
+import sortBy from "lodash/collection/sortBy";
+
+export default new Plugin({
+ /**
+ * [Please add a description.]
+ *
+ * Priority:
+ *
+ * - 0 We want this to be at the **very** bottom
+ * - 1 Default node position
+ * - 2 Priority over normal nodes
+ * - 3 We want this to be at the **very** top
+ */
+
+ visitor: {
+ Block: {
+ exit({ node }) {
+ var hasChange = false;
+ for (var i = 0; i < node.body.length; i++) {
+ var bodyNode = node.body[i];
+ if (bodyNode && bodyNode._blockHoist != null) {
+ hasChange = true;
+ break;
+ }
+ }
+ if (!hasChange) return;
+
+ node.body = sortBy(node.body, function(bodyNode){
+ var priority = bodyNode && bodyNode._blockHoist;
+ if (priority == null) priority = 1;
+ if (priority === true) priority = 2;
+
+ // Higher priorities should move toward the top.
+ return -1 * priority;
+ });
+ }
+ }
+ }
+});
diff --git a/packages/babel-core/src/transformation/transformers/internal/shadow-functions.js b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
similarity index 79%
rename from packages/babel-core/src/transformation/transformers/internal/shadow-functions.js
rename to packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
index b257211a1b..b386a44202 100644
--- a/packages/babel-core/src/transformation/transformers/internal/shadow-functions.js
+++ b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
@@ -1,8 +1,19 @@
+import Plugin from "../plugin";
import * as t from "babel-types";
-export var metadata = {
- group: "builtin-trailing"
-};
+export default new Plugin({
+ visitor: {
+ ThisExpression(path) {
+ return remap(path, "this", () => t.thisExpression());
+ },
+
+ ReferencedIdentifier(path) {
+ if (path.node.name === "arguments") {
+ return remap(path, "arguments", () => t.identifier("arguments"));
+ }
+ }
+ }
+});
function shouldShadow(path, shadowPath) {
if (path.is("_forceShadow")) {
@@ -53,15 +64,3 @@ function remap(path, key, create) {
return id;
}
-
-export var visitor = {
- ThisExpression() {
- return remap(this, "this", () => t.thisExpression());
- },
-
- ReferencedIdentifier(node) {
- if (node.name === "arguments") {
- return remap(this, "arguments", () => t.identifier("arguments"));
- }
- }
-};
diff --git a/packages/babel-core/src/transformation/transformers/internal/block-hoist.js b/packages/babel-core/src/transformation/transformers/internal/block-hoist.js
deleted file mode 100644
index 567ad4a783..0000000000
--- a/packages/babel-core/src/transformation/transformers/internal/block-hoist.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import sortBy from "lodash/collection/sortBy";
-
-export var metadata = {
- group: "builtin-trailing"
-};
-
-/**
- * [Please add a description.]
- *
- * Priority:
- *
- * - 0 We want this to be at the **very** bottom
- * - 1 Default node position
- * - 2 Priority over normal nodes
- * - 3 We want this to be at the **very** top
- */
-
-export var visitor = {
- Block: {
- exit(node) {
- var hasChange = false;
- for (var i = 0; i < node.body.length; i++) {
- var bodyNode = node.body[i];
- if (bodyNode && bodyNode._blockHoist != null) {
- hasChange = true;
- break;
- }
- }
- if (!hasChange) return;
-
- node.body = sortBy(node.body, function(bodyNode){
- var priority = bodyNode && bodyNode._blockHoist;
- if (priority == null) priority = 1;
- if (priority === true) priority = 2;
-
- // Higher priorities should move toward the top.
- return -1 * priority;
- });
- }
- }
-};
From b865b8862e810a1a2d460d4e2c953b3ca570312b Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:29:07 +0100
Subject: [PATCH 107/174] remove filters, aliases, deprecations and more from
plugin pipeline
---
.../babel-core/src/transformation/index.js | 27 -----
.../babel-core/src/transformation/pipeline.js | 99 -------------------
2 files changed, 126 deletions(-)
diff --git a/packages/babel-core/src/transformation/index.js b/packages/babel-core/src/transformation/index.js
index 383b9205af..da4c0dc0f4 100644
--- a/packages/babel-core/src/transformation/index.js
+++ b/packages/babel-core/src/transformation/index.js
@@ -1,33 +1,6 @@
import Pipeline from "./pipeline";
var pipeline = new Pipeline;
-
-import transformers from "./transformers";
-
-for (var key in transformers) {
- var transformer = transformers[key];
-
- if (typeof transformer === "object") {
- var metadata = transformer.metadata = transformer.metadata || {};
- metadata.group = metadata.group || "builtin-basic";
- }
-}
-
-pipeline.addTransformers(transformers);
-
-import deprecated from "./transformers/deprecated";
-pipeline.addDeprecated(deprecated);
-
-import aliases from "./transformers/aliases";
-pipeline.addAliases(aliases);
-
-import * as filters from "./transformers/filters";
-pipeline.addFilter(filters.internal);
-pipeline.addFilter(filters.blacklist);
-pipeline.addFilter(filters.whitelist);
-pipeline.addFilter(filters.stage);
-pipeline.addFilter(filters.optional);
-
var transform = pipeline.transform.bind(pipeline);
transform.fromAst = pipeline.transformFromAst.bind(pipeline);
transform.lint = pipeline.lint.bind(pipeline);
diff --git a/packages/babel-core/src/transformation/pipeline.js b/packages/babel-core/src/transformation/pipeline.js
index dbfbbc8774..460861ef74 100644
--- a/packages/babel-core/src/transformation/pipeline.js
+++ b/packages/babel-core/src/transformation/pipeline.js
@@ -1,84 +1,13 @@
-import PluginManager from "./file/plugin-manager";
import normalizeAst from "../helpers/normalize-ast";
-import Plugin from "./plugin";
-import assign from "lodash/object/assign";
import File from "./file";
export default class Pipeline {
- transformers = Object.create(null);
- namespaces = Object.create(null);
- deprecated = Object.create(null);
- aliases = Object.create(null);
- filters = [];
-
- addTransformers(transformers) {
- for (var key in transformers) {
- this.addTransformer(key, transformers[key]);
- }
- return this;
- }
-
- addTransformer(key, plugin) {
- if (this.transformers[key]) throw new Error(); // todo: error
-
- var namespace = key.split(".")[0];
- this.namespaces[namespace] = this.namespaces[namespace] || [];
- this.namespaces[namespace].push(key);
- this.namespaces[key] = namespace;
-
- if (typeof plugin === "function") {
- plugin = PluginManager.memoisePluginContainer(plugin);
- plugin.key = key;
- plugin.metadata.optional = true;
-
- if (key === "react.displayName") {
- plugin.metadata.optional = false;
- }
- } else {
- plugin = new Plugin(key, plugin);
- }
-
- this.transformers[key] = plugin;
- }
-
- addAliases(names) {
- assign(this.aliases, names);
- return this;
- }
-
- addDeprecated(names) {
- assign(this.deprecated, names);
- return this;
- }
-
- addFilter(filter: Function) {
- this.filters.push(filter);
- return this;
- }
-
- canRun(plugin, fileOpts) {
- if (plugin.metadata.plugin) {
- return true;
- }
-
- for (var filter of (this.filters: Array)) {
- var result = filter(plugin, fileOpts);
- if (result != null) return result;
- }
-
- return true;
- }
-
lint(code: string, opts?: Object = {}) {
opts.code = false;
opts.mode = "lint";
return this.transform(code, opts);
}
- /**
- * Build dependency graph by recursing `metadata.modules`. WIP.
- */
-
pretransform(code: string, opts?: Object) {
var file = new File(opts, this);
return file.wrap(code, function () {
@@ -107,32 +36,4 @@ export default class Pipeline {
return file.transform();
});
}
-
- _ensureTransformerNames(type: string, rawKeys: Array) {
- var keys = [];
-
- for (var i = 0; i < rawKeys.length; i++) {
- var key = rawKeys[i];
- var deprecatedKey = this.deprecated[key];
- var aliasKey = this.aliases[key];
- if (aliasKey) {
- keys.push(aliasKey);
- } else if (deprecatedKey) {
- // deprecated key, remap it to the new one
- console.error(`[BABEL] The transformer ${key} has been renamed to ${deprecatedKey}`);
- rawKeys.push(deprecatedKey);
- } else if (this.transformers[key]) {
- // valid key
- keys.push(key);
- } else if (this.namespaces[key]) {
- // namespace, append all transformers within this namespace
- keys = keys.concat(this.namespaces[key]);
- } else {
- // invalid key
- throw new ReferenceError(`Unknown transformer ${key} specified in ${type}`);
- }
- }
-
- return keys;
- }
}
From 6c656e30bc45ce1456bc12028242a3dfc135191a Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:29:30 +0100
Subject: [PATCH 108/174] make PluginPass the state each plugin visitor gets
---
.../src/transformation/plugin-pass.js | 34 ++++---------------
1 file changed, 7 insertions(+), 27 deletions(-)
diff --git a/packages/babel-core/src/transformation/plugin-pass.js b/packages/babel-core/src/transformation/plugin-pass.js
index f8b02f26e1..c1b560041c 100644
--- a/packages/babel-core/src/transformation/plugin-pass.js
+++ b/packages/babel-core/src/transformation/plugin-pass.js
@@ -1,36 +1,12 @@
import type Transformer from "./transformer";
import traverse from "babel-traverse";
-import type File from "./file";
-
-/**
- * This class is responsible for traversing over the provided `File`s
- * AST and running it's parent transformers handlers over it.
- */
+import File from "./file";
export default class PluginPass {
- constructor(file: File, plugin: Transformer) {
+ constructor(file: File, plugin: Transformer, options: Object = {}) {
this.plugin = plugin;
this.file = file;
- this.key = plugin.key;
-
- if (this.canTransform() && plugin.metadata.experimental && !file.opts.experimental) {
- file.log.warn(`THE TRANSFORMER ${this.key} HAS BEEN MARKED AS EXPERIMENTAL AND IS WIP. USE AT YOUR OWN RISK. ` +
- "THIS WILL HIGHLY LIKELY BREAK YOUR CODE SO USE WITH **EXTREME** CAUTION. ENABLE THE " +
- "`experimental` OPTION TO IGNORE THIS WARNING.");
- }
- }
-
- canTransform(): boolean {
- if (this.plugin.metadata.mode !== this.file.opts.mode) {
- return false;
- } else {
- return this.canRun();
- }
- }
-
- canRun() {
- return this.file.transformerDependencies[this.key] ||
- this.file.pipeline.canRun(this.plugin, this.file.opts);
+ this.opts = options;
}
transform() {
@@ -39,4 +15,8 @@ export default class PluginPass {
traverse(file.ast, this.plugin.visitor, file.scope, file);
file.log.debug(`Finish transformer ${this.key}`);
}
+
+ addHelper(...args) {
+ return this.file.addHelper(...args);
+ }
}
From 945c2587e144255b285727218df9142b6b2e1272 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:29:51 +0100
Subject: [PATCH 109/174] remove metadata from plugins, simplify intialisation
of a plugin
---
.../babel-core/src/transformation/plugin.js | 68 +++----------------
1 file changed, 8 insertions(+), 60 deletions(-)
diff --git a/packages/babel-core/src/transformation/plugin.js b/packages/babel-core/src/transformation/plugin.js
index f5d37db0bb..c960ffbda1 100644
--- a/packages/babel-core/src/transformation/plugin.js
+++ b/packages/babel-core/src/transformation/plugin.js
@@ -1,71 +1,28 @@
-import PluginPass from "./plugin-pass";
import * as messages from "babel-messages";
import traverse from "babel-traverse";
import assign from "lodash/object/assign";
import clone from "lodash/lang/clone";
-import File from "./file";
-import * as t from "babel-types";
-
-const VALID_PLUGIN_PROPERTIES = [
- "visitor", "metadata",
- "manipulateOptions",
- "post", "pre"
-];
-
-const VALID_METADATA_PROPERTES = [
- "dependencies",
- "optional",
- "stage",
- "group",
- "experimental",
- "secondPass",
- "mode"
-];
export default class Plugin {
- constructor(key: string, plugin: Object) {
- Plugin.validate(key, plugin);
+ constructor(plugin: Object) {
+ plugin = this.raw = assign({}, plugin);
- plugin = assign({}, plugin);
-
- var take = function (key) {
+ function take(key) {
var val = plugin[key];
delete plugin[key];
return val;
- };
+ }
this.manipulateOptions = take("manipulateOptions");
- this.metadata = take("metadata") || {};
- this.dependencies = this.metadata.dependencies || [];
this.post = take("post");
this.pre = take("pre");
- //
-
- if (this.metadata.stage != null) {
- this.metadata.optional = true;
- }
-
- //
-
- this.visitor = this.normalize(clone(take("visitor")) || {});
- this.key = key;
+ this.visitor = this.normalize(clone(take("visitor")) || {});
}
- static validate(name, plugin) {
- for (let key in plugin) {
- if (key[0] === "_") continue;
- if (VALID_PLUGIN_PROPERTIES.indexOf(key) >= 0) continue;
-
- var msgType = "pluginInvalidProperty";
- if (t.TYPES.indexOf(key) >= 0) msgType = "pluginInvalidPropertyVisitor";
- throw new Error(messages.get(msgType, name, key));
- }
-
- for (let key in plugin.metadata) {
- if (VALID_METADATA_PROPERTES.indexOf(key) >= 0) continue;
-
- throw new Error(messages.get("pluginInvalidProperty", name, `metadata.${key}`));
+ validate(loc, i) {
+ for (let key in this.raw) {
+ throw new Error(messages.get("pluginInvalidProperty", loc, i, key));
}
}
@@ -73,13 +30,4 @@ export default class Plugin {
traverse.explode(visitor);
return visitor;
}
-
- buildPass(file: File): PluginPass {
- // validate Transformer instance
- if (!(file instanceof File)) {
- throw new TypeError(messages.get("pluginNotFile", this.key));
- }
-
- return new PluginPass(file, this);
- }
}
From c00bf262a78b04d48415d3b3752533855213c659 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:30:39 +0100
Subject: [PATCH 110/174] update to new visitor method signature
---
...-binary-assignment-operator-transformer.js | 12 +++----
...itional-assignment-operator-transformer.js | 13 +++----
.../transformation/helpers/call-delegate.js | 10 +++---
.../src/transformation/helpers/name-method.js | 36 ++++++++-----------
.../helpers/remap-async-to-generator.js | 8 ++---
.../transformation/helpers/replace-supers.js | 20 +++++------
.../src/transformation/modules/system.js | 24 +++++++------
7 files changed, 59 insertions(+), 64 deletions(-)
diff --git a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
index 015c949fa2..4e60a46e3d 100644
--- a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
@@ -12,15 +12,15 @@ export default function (opts) {
return t.assignmentExpression("=", left, right);
};
- exports.ExpressionStatement = function (node, parent, scope, file) {
+ exports.ExpressionStatement = function (path, file) {
// hit the `AssignmentExpression` one below
- if (this.isCompletionRecord()) return;
+ if (path.isCompletionRecord()) return;
- var expr = node.expression;
+ var expr = path.node.expression;
if (!isAssignment(expr)) return;
var nodes = [];
- var exploded = explode(expr.left, nodes, file, scope, true);
+ var exploded = explode(expr.left, nodes, file, path.scope, true);
nodes.push(t.expressionStatement(
buildAssignment(exploded.ref, opts.build(exploded.uid, expr.right))
@@ -29,7 +29,7 @@ export default function (opts) {
return nodes;
};
- exports.AssignmentExpression = function (node, parent, scope, file) {
+ exports.AssignmentExpression = function ({ node, scope }, file) {
if (!isAssignment(node)) return;
var nodes = [];
@@ -38,7 +38,7 @@ export default function (opts) {
return nodes;
};
- exports.BinaryExpression = function (node) {
+ exports.BinaryExpression = function ({ node }) {
if (node.operator !== opts.operator) return;
return opts.build(node.left, node.right);
};
diff --git a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
index e99a374332..94ae08d7ca 100644
--- a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
@@ -6,16 +6,16 @@ export default function (exports, opts) {
return t.assignmentExpression("=", left, right);
};
- exports.ExpressionStatement = function (node, parent, scope, file) {
+ exports.ExpressionStatement = function (path, file) {
// hit the `AssignmentExpression` one below
- if (this.isCompletionRecord()) return;
+ if (path.isCompletionRecord()) return;
- var expr = node.expression;
+ var expr = path.node.expression;
if (!opts.is(expr, file)) return;
var nodes = [];
- var exploded = explode(expr.left, nodes, file, scope);
+ var exploded = explode(expr.left, nodes, file, path.scope);
nodes.push(t.ifStatement(
opts.build(exploded.uid, file),
@@ -25,11 +25,12 @@ export default function (exports, opts) {
return nodes;
};
- exports.AssignmentExpression = function (node, parent, scope, file) {
+ exports.AssignmentExpression = function (path, file) {
+ var node = path.node;
if (!opts.is(node, file)) return;
var nodes = [];
- var exploded = explode(node.left, nodes, file, scope);
+ var exploded = explode(node.left, nodes, file, path.scope);
nodes.push(t.logicalExpression(
"&&",
diff --git a/packages/babel-core/src/transformation/helpers/call-delegate.js b/packages/babel-core/src/transformation/helpers/call-delegate.js
index 20dde54340..d98a4907a6 100644
--- a/packages/babel-core/src/transformation/helpers/call-delegate.js
+++ b/packages/babel-core/src/transformation/helpers/call-delegate.js
@@ -1,15 +1,15 @@
import * as t from "babel-types";
var visitor = {
- enter(node, parent, scope, state) {
- if (this.isThisExpression() || this.isReferencedIdentifier({ name: "arguments" })) {
+ enter(path, state) {
+ if (path.isThisExpression() || path.isReferencedIdentifier({ name: "arguments" })) {
state.found = true;
- this.stop();
+ path.stop();
}
},
- Function() {
- this.skip();
+ Function(path) {
+ path.skip();
}
};
diff --git a/packages/babel-core/src/transformation/helpers/name-method.js b/packages/babel-core/src/transformation/helpers/name-method.js
index 90cd1d0ec1..9b3fc20ebb 100644
--- a/packages/babel-core/src/transformation/helpers/name-method.js
+++ b/packages/babel-core/src/transformation/helpers/name-method.js
@@ -2,30 +2,22 @@ import getFunctionArity from "./get-function-arity";
import * as util from "../../util";
import * as t from "babel-types";
-function visitIdentifier(context, node, scope, state) {
- // check if this node matches our function id
- if (node.name !== state.name) return;
-
- // check that we don't have a local variable declared as that removes the need
- // for the wrapper
- var localDeclar = scope.getBindingIdentifier(state.name);
- if (localDeclar !== state.outerDeclar) return;
-
- state.selfReference = true;
- context.stop();
-}
-
var visitor = {
- ReferencedIdentifier(node, parent, scope, state) {
- visitIdentifier(this, node, scope, state);
- },
+ "ReferencedIdentifier|BindingIdentifier"(path, state) {
+ // check if this node matches our function id
+ if (path.node.name !== state.name) return;
- BindingIdentifier(node, parent, scope, state) {
- visitIdentifier(this, node, scope, state);
+ // check that we don't have a local variable declared as that removes the need
+ // for the wrapper
+ var localDeclar = path.scope.getBindingIdentifier(state.name);
+ if (localDeclar !== state.outerDeclar) return;
+
+ state.selfReference = true;
+ path.stop();
}
};
-var wrap = function (state, method, id, scope) {
+function wrap(state, method, id, scope) {
if (state.selfReference) {
if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {
// we can just munge the local binding
@@ -54,9 +46,9 @@ var wrap = function (state, method, id, scope) {
method.id = id;
scope.getProgramParent().references[id.name] = true;
-};
+}
-var visit = function (node, name, scope) {
+function visit(node, name, scope) {
var state = {
selfAssignment: false,
selfReference: false,
@@ -100,7 +92,7 @@ var visit = function (node, name, scope) {
}
return state;
-};
+}
export function custom(node, id, scope) {
var state = visit(node, id.name, scope);
diff --git a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
index cc24ee0192..49351fdca4 100644
--- a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
+++ b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
@@ -1,11 +1,11 @@
import * as t from "babel-types";
var awaitVisitor = {
- Function() {
- this.skip();
+ Function(path) {
+ path.skip();
},
- AwaitExpression(node) {
+ AwaitExpression({ node }) {
node.type = "YieldExpression";
if (node.all) {
@@ -17,7 +17,7 @@ var awaitVisitor = {
};
var referenceVisitor = {
- ReferencedIdentifier(node, parent, scope, state) {
+ ReferencedIdentifier({ node, scope }, state) {
var name = state.id.name;
if (node.name === name && scope.bindingIdentifierEquals(name, state.id)) {
return state.ref = state.ref || scope.generateUidIdentifier(name);
diff --git a/packages/babel-core/src/transformation/helpers/replace-supers.js b/packages/babel-core/src/transformation/helpers/replace-supers.js
index 7e0391a5be..5eb11077fc 100644
--- a/packages/babel-core/src/transformation/helpers/replace-supers.js
+++ b/packages/babel-core/src/transformation/helpers/replace-supers.js
@@ -14,19 +14,19 @@ function isMemberExpressionSuper(node) {
}
var visitor = {
- enter(node, parent, scope, state) {
+ enter(path, state) {
var topLevel = state.topLevel;
var self = state.self;
- if (t.isFunction(node) && !t.isArrowFunctionExpression(node)) {
+ if (path.isFunction() && !path.isArrowFunctionExpression()) {
// we need to call traverseLevel again so we're context aware
- self.traverseLevel(this, false);
- return this.skip();
+ self.traverseLevel(path, false);
+ return path.skip();
}
- if (t.isProperty(node, { method: true }) || t.isMethodDefinition(node)) {
+ if (path.isProperty({ method: true }) || path.isMethodDefinition()) {
// break on object methods
- return this.skip();
+ return path.skip();
}
var getThisReference = topLevel ?
@@ -37,8 +37,8 @@ var visitor = {
var callback = self.specHandle;
if (self.isLoose) callback = self.looseHandle;
- var result = callback.call(self, this, getThisReference);
- if (result) this.hasSuper = true;
+ var result = callback.call(self, path, getThisReference);
+ if (result) path.hasSuper = true;
if (result === true) return;
return result;
}
@@ -219,7 +219,7 @@ export default class ReplaceSupers {
var node = path.node;
if (isIllegalBareSuper(node, parent)) {
- throw path.errorWithNode(messages.get("classesIllegalBareSuper"));
+ throw path.buildCodeFrameError(messages.get("classesIllegalBareSuper"));
}
if (t.isCallExpression(node)) {
@@ -235,7 +235,7 @@ export default class ReplaceSupers {
// - https://twitter.com/wycats/status/544553184396836864
if (methodNode.key.name !== "constructor" || !this.inClass) {
var methodName = methodNode.key.name || "METHOD_NAME";
- throw this.file.errorWithNode(node, messages.get("classesIllegalSuperCall", methodName));
+ throw this.file.buildCodeFrameError(node, messages.get("classesIllegalSuperCall", methodName));
}
} else if (isMemberExpressionSuper(callee)) {
// super.test(); -> _get(Object.getPrototypeOf(objectRef.prototype), "test", this).call(this);
diff --git a/packages/babel-core/src/transformation/modules/system.js b/packages/babel-core/src/transformation/modules/system.js
index 1b2e327c2e..a5b051efe3 100644
--- a/packages/babel-core/src/transformation/modules/system.js
+++ b/packages/babel-core/src/transformation/modules/system.js
@@ -6,12 +6,12 @@ import map from "lodash/collection/map";
import * as t from "babel-types";
var hoistVariablesVisitor = {
- Function() {
+ Function(path) {
// nothing inside is accessible
- this.skip();
+ path.skip();
},
- VariableDeclaration(node, parent, scope, state) {
+ VariableDeclaration({ node, parent }, state) {
if (node.kind !== "var" && !t.isProgram(parent)) { // let, const
// can't be accessed
return;
@@ -42,20 +42,22 @@ var hoistVariablesVisitor = {
};
var hoistFunctionsVisitor = {
- Function() {
- this.skip();
+ Function(path) {
+ path.skip();
},
- enter(node, parent, scope, state) {
- if (t.isFunctionDeclaration(node) || state.formatter._canHoist(node)) {
- state.handlerBody.push(node);
- this.dangerouslyRemove();
+ enter(path, state) {
+ if (path.isFunctionDeclaration() || state.formatter._canHoist(path.node)) {
+ state.handlerBody.push(path.node);
+ path.remove();
}
}
};
var runnerSettersVisitor = {
- enter(node, parent, scope, state) {
+ enter(path, state) {
+ var { node } = path;
+
if (node._importSource === state.source) {
if (t.isVariableDeclaration(node)) {
for (var declar of (node.declarations: Array)) {
@@ -68,7 +70,7 @@ var runnerSettersVisitor = {
state.nodes.push(node);
}
- this.dangerouslyRemove();
+ path.remove();
}
}
};
From dff098e77b67954ca0fbb6ed803561ebf09358cf Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:31:51 +0100
Subject: [PATCH 111/174] rename errorWithNode to buildCodeFrameError and when
erroring on dynamic nodes try and estimate a location
---
.../src/transformation/file/index.js | 30 +++++++++++++++----
.../src/transformation/helpers/define-map.js | 2 +-
.../src/transformation/modules/_default.js | 4 +--
3 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js
index acf1c82fb6..d0b2507e19 100644
--- a/packages/babel-core/src/transformation/file/index.js
+++ b/packages/babel-core/src/transformation/file/index.js
@@ -20,6 +20,15 @@ import * as util from "../../util";
import path from "path";
import * as t from "babel-types";
+var errorVisitor = {
+ enter(path, state) {
+ var loc = path.node.loc;
+ if (loc) {
+ state.loc = loc;
+ path.stop();
+ }
+ }
+};
export default class File {
constructor(opts = {}, pipeline) {
this.pipeline = pipeline;
@@ -383,17 +392,26 @@ export default class File {
return uid;
}
- errorWithNode(node, msg, Error = SyntaxError) {
- var err;
+ buildCodeFrameError(node, msg, Error = SyntaxError) {
var loc = node && (node.loc || node._loc);
+
+ var err = new Error(msg);
+
if (loc) {
- err = new Error(`Line ${loc.start.line}: ${msg}`);
err.loc = loc.start;
} else {
- // todo: find errors with nodes inside to at least point to something
- err = new Error("There's been an error on a dynamic node. This is almost certainly an internal error. Please report it.");
+ traverse(node, errorVisitor, err);
+
+ err.message += " (This is an error on an internal node. Probably an internal error";
+
+ if (err.loc) {
+ err.message += ". Location has been estimated.";
+ }
+
+ err.message += ")";
}
- return err;
+
+ return err
}
mergeSourceMap(map: Object) {
diff --git a/packages/babel-core/src/transformation/helpers/define-map.js b/packages/babel-core/src/transformation/helpers/define-map.js
index ab7325b897..7f8ae70c93 100644
--- a/packages/babel-core/src/transformation/helpers/define-map.js
+++ b/packages/babel-core/src/transformation/helpers/define-map.js
@@ -28,7 +28,7 @@ export function push(mutatorMap, node, kind, file) {
}
if (map.value || map.initializer) {
- throw file.errorWithNode(node, "Key conflict with sibling node");
+ throw file.buildCodeFrameError(node, "Key conflict with sibling node");
}
if (node.value) {
diff --git a/packages/babel-core/src/transformation/modules/_default.js b/packages/babel-core/src/transformation/modules/_default.js
index 8968597181..73535a5d0e 100644
--- a/packages/babel-core/src/transformation/modules/_default.js
+++ b/packages/babel-core/src/transformation/modules/_default.js
@@ -37,7 +37,7 @@ export default class DefaultFormatter {
var existingScope = this.sourceScopes[source];
if (existingScope && existingScope !== path.scope) {
- throw path.errorWithNode(messages.get("modulesDuplicateDeclarations"));
+ throw path.buildCodeFrameError(messages.get("modulesDuplicateDeclarations"));
}
this.sourceScopes[source] = path.scope;
@@ -180,7 +180,7 @@ export default class DefaultFormatter {
checkExportIdentifier(node) {
if (t.isIdentifier(node, { name: "__esModule" })) {
- throw this.file.errorWithNode(node, messages.get("modulesIllegalExportName", node.name));
+ throw this.file.buildCodeFrameError(node, messages.get("modulesIllegalExportName", node.name));
}
}
From 4924a9adeae68f7956047db78bca997eb2f06a7e Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:32:04 +0100
Subject: [PATCH 112/174] add store class
---
packages/babel-core/src/store.js | 24 +++++++++++++++++++
.../src/transformation/file/index.js | 4 +++-
2 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 packages/babel-core/src/store.js
diff --git a/packages/babel-core/src/store.js b/packages/babel-core/src/store.js
new file mode 100644
index 0000000000..e276346bb9
--- /dev/null
+++ b/packages/babel-core/src/store.js
@@ -0,0 +1,24 @@
+export default class Store {
+ dynamicData = {};
+ data = {};
+
+ set(key: string, val): any {
+ return this.data[key] = val;
+ }
+
+ setDynamic(key: string, fn: Function) {
+ this.dynamicData[key] = fn;
+ }
+
+ get(key: string): any {
+ var data = this.data[key];
+ if (data) {
+ return data;
+ } else {
+ var dynamic = this.dynamicData[key];
+ if (dynamic) {
+ return this.set(key, dynamic());
+ }
+ }
+ }
+}
diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js
index d0b2507e19..79f38de0e0 100644
--- a/packages/babel-core/src/transformation/file/index.js
+++ b/packages/babel-core/src/transformation/file/index.js
@@ -14,6 +14,7 @@ import includes from "lodash/collection/includes";
import traverse from "babel-traverse";
import resolve from "try-resolve";
import Logger from "./logger";
+import Store from "../../store";
import Plugin from "../plugin";
import parse from "../../helpers/parse";
import * as util from "../../util";
@@ -29,7 +30,8 @@ var errorVisitor = {
}
}
};
-export default class File {
+
+export default class File extends Store {
constructor(opts = {}, pipeline) {
this.pipeline = pipeline;
From 69f67c9ec3a986f010e54ca18c9aa3f930ac784f Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:32:24 +0100
Subject: [PATCH 113/174] merge plugin manager into option manager
---
.../file/options/option-manager.js | 185 ++++++++++++++----
.../src/transformation/file/plugin-manager.js | 120 ------------
2 files changed, 146 insertions(+), 159 deletions(-)
delete mode 100644 packages/babel-core/src/transformation/file/plugin-manager.js
diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js
index f1032a0e8d..67eb61b44b 100644
--- a/packages/babel-core/src/transformation/file/options/option-manager.js
+++ b/packages/babel-core/src/transformation/file/options/option-manager.js
@@ -1,4 +1,8 @@
-import { validateOption, normaliseOptions } from "./index";
+import Plugin from "../../plugin";
+import * as messages from "babel-messages";
+import * as context from "../../../api/node";
+import { normaliseOptions } from "./index";
+import resolve from "../../../helpers/resolve";
import json5 from "json5";
import isAbsolute from "path-is-absolute";
import pathExists from "path-exists";
@@ -32,6 +36,27 @@ export default class OptionManager {
this.log = log;
}
+ static memoisedPlugins = [];
+
+ static memoisePluginContainer(fn, loc, i) {
+ for (var cache of (OptionManager.memoisedPlugins: Array)) {
+ if (cache.container === fn) return cache.plugin;
+ }
+
+ var obj = fn(context);
+
+ if (typeof obj === "object") {
+ var plugin = new Plugin(obj);
+ OptionManager.memoisedPlugins.push({
+ container: fn,
+ plugin: plugin
+ });
+ return plugin;
+ } else {
+ throw new TypeError(messages.get("pluginNotObject", loc, i, typeof obj));
+ }
+ }
+
static createBareOptions() {
var opts = {};
@@ -43,6 +68,41 @@ export default class OptionManager {
return opts;
}
+ static normalisePlugins(loc, dirname, plugins) {
+ return plugins.map(function (val, i) {
+ var plugin, options;
+
+ // destructure plugins
+ if (Array.isArray(val)) {
+ [plugin, options] = val;
+ } else {
+ plugin = val;
+ }
+
+ // allow plugins to be specified as strings
+ if (typeof plugin === "string") {
+ var pluginLoc = resolve(`babel-plugin-${plugin}`, dirname) || resolve(plugin, dirname);
+ if (pluginLoc) {
+ plugin = require(pluginLoc);
+ } else {
+ throw new ReferenceError(messages.get("pluginUnknown", plugin, loc, i));
+ }
+ }
+
+ // allow plugin containers to be specified so they don't have to manually require
+ if (typeof plugin === "function") {
+ plugin = OptionManager.memoisePluginContainer(plugin, loc, i);
+ } else {
+ throw new TypeError(messages.get("pluginNotFunction", loc, i));
+ }
+
+ // validate
+ plugin.validate(loc, i);
+
+ return [plugin, options];
+ });
+ }
+
addConfig(loc, key?, json=json5) {
if (this.resolvedConfigs.indexOf(loc) >= 0) return;
@@ -61,23 +121,78 @@ export default class OptionManager {
this.resolvedConfigs.push(loc);
}
- mergeOptions(opts, alias = "foreign") {
+ /**
+ * This is called when we want to merge the input `opts` into our
+ * base options.
+ *
+ * - `alias` is used to output pretty traces back to the original source.
+ * - `loc` is used to point to the original config.
+ * - `dirname` is used to resolve plugins relative to it.
+ */
+
+ mergeOptions(opts, alias = "foreign", loc, dirname) {
if (!opts) return;
- for (let key in opts) {
- if (key[0] === "_") continue;
+ dirname = dirname || process.cwd();
+ loc = loc || alias;
+ for (let key in opts) {
let option = config[key];
// check for an unknown option
- if (!option) this.log.error(`Unknown option: ${alias}.${key}`, ReferenceError);
+ if (!option && this.log) this.log.error(`Unknown option: ${alias}.${key}`, ReferenceError);
}
// normalise options
normaliseOptions(opts);
+ // resolve plugins
+ if (opts.plugins) {
+ opts.plugins = OptionManager.normalisePlugins(loc, dirname, opts.plugins);
+ }
+
+ // add extends clause
+ if (opts.extends) {
+ this.addConfig(resolve(opts.extends, dirname));
+ delete opts.extends;
+ }
+
+ // resolve presets
+ if (opts.presets) {
+ this.mergePresets(opts.presets, dirname);
+ delete opts.presets;
+ }
+
+ var envOpts;
+ var envKey = process.env.BABEL_ENV || process.env.NODE_ENV || "development";
+ if (opts.env) {
+ envOpts = opts.env[envKey];
+ delete opts.env;
+ }
+
// merge them into this current files options
merge(this.options, opts);
+
+ // merge in env options
+ this.mergeOptions(envOpts, `${alias}.env.${envKey}`);
+ }
+
+ mergePresets(presets: Array, dirname) {
+ for (var val of presets) {
+ if (typeof val === "string") {
+ var presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname);
+ if (presetLoc) {
+ var presetOpts = require(presetLoc);
+ this.mergeOptions(presetOpts, presetLoc, presetLoc, path.dirname(presetLoc));
+ } else {
+ throw new Error("todo");
+ }
+ } else if (typeof val === "object") {
+ this.mergeOptions(val);
+ } else {
+ throw new Error("todo");
+ }
+ }
}
addIgnoreConfig(loc) {
@@ -91,10 +206,6 @@ export default class OptionManager {
this.mergeOptions({ ignore: lines }, loc);
}
- /**
- * Description
- */
-
findConfigs(loc) {
if (!loc) return;
@@ -102,17 +213,33 @@ export default class OptionManager {
loc = path.join(process.cwd(), loc);
}
+ var foundConfig = false;
+ var foundIgnore = false;
+
while (loc !== (loc = path.dirname(loc))) {
- if (this.options.breakConfig) return;
+ if (!foundConfig) {
+ var configLoc = path.join(loc, BABELRC_FILENAME);
+ if (exists(configLoc)) {
+ this.addConfig(configLoc);
+ foundConfig = true;
+ }
- var configLoc = path.join(loc, BABELRC_FILENAME);
- if (exists(configLoc)) this.addConfig(configLoc);
+ var pkgLoc = path.join(loc, PACKAGE_FILENAME);
+ if (exists(pkgLoc)) {
+ this.addConfig(pkgLoc, "babel", JSON);
+ foundConfig = true;
+ }
+ }
- var pkgLoc = path.join(loc, PACKAGE_FILENAME);
- if (exists(pkgLoc)) this.addConfig(pkgLoc, "babel", JSON);
+ if (!foundIgnore) {
+ var ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);
+ if (exists(ignoreLoc)) {
+ this.addIgnoreConfig(ignoreLoc);
+ foundIgnore = true;
+ }
+ }
- var ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);
- if (exists(ignoreLoc)) this.addIgnoreConfig(ignoreLoc);
+ if (foundIgnore && foundConfig) return;
}
}
@@ -126,17 +253,7 @@ export default class OptionManager {
// optional
if (!val && option.optional) continue;
- // deprecated
- if (this.log && val && option.deprecated) {
- this.log.deprecate(`Deprecated option ${key}: ${option.deprecated}`);
- }
-
- // validate
- if (this.pipeline && val) {
- val = validateOption(key, val, this.pipeline);
- }
-
- // aaliases
+ // aliases
if (option.alias) {
opts[option.alias] = opts[option.alias] || val;
} else {
@@ -146,23 +263,13 @@ export default class OptionManager {
}
init(opts) {
- this.mergeOptions(opts, "direct");
-
- // babelrc option
- if (opts.babelrc) {
- for (var loc of (opts.babelrc: Array)) this.addConfig(loc);
- }
-
// resolve all .babelrc files
if (opts.babelrc !== false) {
this.findConfigs(opts.filename);
}
- // merge in env
- var envKey = process.env.BABEL_ENV || process.env.NODE_ENV || "development";
- if (this.options.env) {
- this.mergeOptions(this.options.env[envKey], `direct.env.${envKey}`);
- }
+ // merge in base options
+ this.mergeOptions(opts, "base");
// normalise
this.normaliseOptions(opts);
diff --git a/packages/babel-core/src/transformation/file/plugin-manager.js b/packages/babel-core/src/transformation/file/plugin-manager.js
deleted file mode 100644
index 585e3280d6..0000000000
--- a/packages/babel-core/src/transformation/file/plugin-manager.js
+++ /dev/null
@@ -1,120 +0,0 @@
-import Plugin from "../plugin";
-import * as types from "babel-types";
-import * as messages from "babel-messages";
-import resolve from "try-resolve";
-import traverse from "babel-traverse";
-import parse from "../../helpers/parse";
-
-var context = {
- messages,
- Plugin,
- types,
- parse,
- traverse
-};
-
-export default class PluginManager {
- static memoisedPlugins = [];
-
- static memoisePluginContainer(fn) {
- for (var i = 0; i < PluginManager.memoisedPlugins.length; i++) {
- var plugin = PluginManager.memoisedPlugins[i];
- if (plugin.container === fn) return plugin.transformer;
- }
-
- var transformer = fn(context);
- PluginManager.memoisedPlugins.push({
- container: fn,
- transformer: transformer
- });
- return transformer;
- }
-
- static positions = ["before", "after"];
-
- constructor({ file, transformers, before, after } = { transformers: {}, before: [], after: [] }) {
- this.transformers = transformers;
- this.file = file;
- this.before = before;
- this.after = after;
- }
-
- subnormaliseString(name, position) {
- // this is a plugin in the form of "foobar" or "foobar:after"
- // where the optional colon is the delimiter for plugin position in the transformer stack
-
- var match = name.match(/^(.*?):(after|before)$/);
- if (match) [, name, position] = match;
-
- var loc = resolve.relative(`babel-plugin-${name}`) || resolve.relative(name);
- if (loc) {
- var plugin = require(loc);
- return {
- position: position,
- plugin: plugin.default || plugin
- };
- } else {
- throw new ReferenceError(messages.get("pluginUnknown", name));
- }
- }
-
- validate(name, plugin) {
- // validate transformer key
- var key = plugin.key;
- if (this.transformers[key]) {
- throw new ReferenceError(messages.get("pluginKeyCollision", key));
- }
-
- // validate Transformer instance
- if (!plugin.buildPass || plugin.constructor.name !== "Plugin") {
- throw new TypeError(messages.get("pluginNotTransformer", name));
- }
-
- // register as a plugin
- plugin.metadata.plugin = true;
- }
-
- add(name) {
- var position;
- var plugin;
-
- if (name) {
- if (typeof name === "object" && name.transformer) {
- ({ transformer: plugin, position } = name);
- } else if (typeof name !== "string") {
- // not a string so we'll just assume that it's a direct Transformer instance, if not then
- // the checks later on will complain
- plugin = name;
- }
-
- if (typeof name === "string") {
- ({ plugin, position } = this.subnormaliseString(name, position));
- }
- } else {
- throw new TypeError(messages.get("pluginIllegalKind", typeof name, name));
- }
-
- // default position
- position = position || "before";
-
- // validate position
- if (PluginManager.positions.indexOf(position) < 0) {
- throw new TypeError(messages.get("pluginIllegalPosition", position, name));
- }
-
- // allow plugin containers to be specified so they don't have to manually require
- if (typeof plugin === "function") {
- plugin = PluginManager.memoisePluginContainer(plugin);
- }
-
- //
- this.validate(name, plugin);
-
- // build!
- var pass = this.transformers[plugin.key] = plugin.buildPass(this.file);
- if (pass.canTransform()) {
- var stack = position === "before" ? this.before : this.after;
- stack.push(pass);
- }
- }
-}
From c10af9236e2a5d91f1e18185b2fecc6a7cdb2286 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:32:37 +0100
Subject: [PATCH 114/174] remove transformerList option parser and remove
redundant comments
---
.../transformation/file/options/parsers.js | 36 -------------------
1 file changed, 36 deletions(-)
diff --git a/packages/babel-core/src/transformation/file/options/parsers.js b/packages/babel-core/src/transformation/file/options/parsers.js
index 4738bc9b53..c6c6fd26f7 100644
--- a/packages/babel-core/src/transformation/file/options/parsers.js
+++ b/packages/babel-core/src/transformation/file/options/parsers.js
@@ -1,56 +1,20 @@
import slash from "slash";
import * as util from "../../../util";
-/**
- * Get a transformer list from a value.
- */
-
-export function transformerList(val) {
- return util.arrayify(val);
-}
-
-/**
- * Validate transformer list. Maps "all" to all transformer names.
- */
-
-transformerList.validate = function (key, val, pipeline) {
- if (val.indexOf("all") >= 0 || val.indexOf(true) >= 0) {
- val = Object.keys(pipeline.transformers);
- }
-
- return pipeline._ensureTransformerNames(key, val);
-};
-
-/**
- * Cast a value to a number.
- */
-
export function number(val) {
return +val;
}
-/**
- * Cast a value to a boolean.
- */
-
export var filename = slash;
export function boolean(val) {
return !!val;
}
-/**
- * Cast a boolean-like string to a boolean.
- */
-
export function booleanString(val) {
return util.booleanify(val);
}
-/**
- * Cast a value to an array, splitting strings by ",".
- */
-
export function list(val) {
return util.list(val);
}
From 8a32666052784425d3d71937b52841461cdce3eb Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:32:49 +0100
Subject: [PATCH 115/174] remove dead options
---
.../transformation/file/options/config.json | 127 +-----------------
1 file changed, 6 insertions(+), 121 deletions(-)
diff --git a/packages/babel-core/src/transformation/file/options/config.json b/packages/babel-core/src/transformation/file/options/config.json
index f63e055bd5..d6d6ec5b68 100644
--- a/packages/babel-core/src/transformation/file/options/config.json
+++ b/packages/babel-core/src/transformation/file/options/config.json
@@ -15,11 +15,6 @@
"hidden": true
},
- "extra": {
- "hidden": true,
- "default": {}
- },
-
"env": {
"hidden": true,
"default": {}
@@ -30,33 +25,12 @@
"hidden": true
},
- "moduleId": {
- "description": "specify a custom name for module ids",
- "type": "string"
- },
-
- "getModuleId": {
- "hidden": true
- },
-
"retainLines": {
"type": "boolean",
"default": false,
"description": "retain line numbers - will result in really ugly code"
},
- "nonStandard": {
- "type": "boolean",
- "default": true,
- "description": "enable/disable support for JSX and Flow (on by default)"
- },
-
- "experimental": {
- "type": "boolean",
- "description": "allow use of experimental transformers",
- "default": false
- },
-
"highlightCode": {
"description": "enable/disable ANSI syntax highlighting of code frames (on by default)",
"type": "boolean",
@@ -69,64 +43,12 @@
"hidden": true
},
- "resolveModuleSource": {
- "hidden": true
- },
-
- "stage": {
- "description": "ECMAScript proposal stage version to allow [0-4]",
- "shorthand": "e",
- "type": "number",
- "default": 2
- },
-
- "blacklist": {
- "type": "transformerList",
- "description": "blacklist of transformers to NOT use",
- "shorthand": "b",
+ "presets": {
+ "type": "list",
+ "description": "",
"default": []
},
- "whitelist": {
- "type": "transformerList",
- "optional": true,
- "description": "whitelist of transformers to ONLY use",
- "shorthand": "l"
- },
-
- "optional": {
- "type": "transformerList",
- "description": "list of optional transformers to enable",
- "default": []
- },
-
- "modules": {
- "type": "string",
- "description": "module formatter type to use [common]",
- "default": "common",
- "shorthand": "m"
- },
-
- "moduleIds": {
- "type": "boolean",
- "default": false,
- "shorthand": "M",
- "description": "insert an explicit id for modules"
- },
-
- "loose": {
- "type": "transformerList",
- "description": "list of transformers to enable loose mode ON",
- "shorthand": "L"
- },
-
- "jsxPragma": {
- "type": "string",
- "description": "custom pragma to use with JSX (same functionality as @jsx comments)",
- "default": "React.createElement",
- "shorthand": "P"
- },
-
"plugins": {
"type": "list",
"description": "",
@@ -179,32 +101,6 @@
"description": "do not include superfluous whitespace characters and line terminators [true|false|auto]"
},
- "keepModuleIdExtensions": {
- "type": "boolean",
- "description": "keep extensions when generating module ids",
- "default": false,
- "shorthand": "k"
- },
-
- "auxiliaryCommentBefore": {
- "type": "string",
- "default": "",
- "description": "attach a comment before all helper declarations and auxiliary code"
- },
-
- "auxiliaryCommentAfter": {
- "type": "string",
- "default": "",
- "description": "attach a comment after all helper declarations and auxiliary code"
- },
-
- "externalHelpers": {
- "type": "boolean",
- "default": false,
- "shorthand": "r",
- "description": "uses a reference to `babelHelpers` instead of placing helpers at the top of your code."
- },
-
"sourceMap": {
"alias": "sourceMaps",
"hidden": true
@@ -232,21 +128,10 @@
"description": "the root from which all sources are relative"
},
- "moduleRoot": {
- "type": "filename",
- "description": "optional prefix for the AMD module formatter that will be prepend to the filename on module definitions"
- },
-
- "breakConfig": {
- "type": "boolean",
- "default": false,
- "hidden": true,
- "description": "stop trying to load .babelrc files"
- },
-
"babelrc": {
- "description": "Specify a custom list of babelrc files to use",
- "type": "list"
+ "description": "Whether or not to look up .babelrc and .babelignore files",
+ "type": "boolean",
+ "default": true
},
"sourceType": {
From 5dadb67a1aefd67001b69d02ea7d741ff7ea56b2 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Tue, 15 Sep 2015 06:33:50 +0100
Subject: [PATCH 116/174] remove transformers and module formatters from $
babel --help
---
packages/babel-cli/src/babel/index.js | 39 ++++++---------------------
1 file changed, 8 insertions(+), 31 deletions(-)
diff --git a/packages/babel-cli/src/babel/index.js b/packages/babel-cli/src/babel/index.js
index 93faa1e85e..46fc228c15 100755
--- a/packages/babel-cli/src/babel/index.js
+++ b/packages/babel-cli/src/babel/index.js
@@ -2,17 +2,14 @@
require("babel-core");
-var moduleFormatters = require("babel-core/lib/transformation/modules");
-var pathExists = require("path-exists");
-var commander = require("commander");
-var transform = require("babel-core").transform;
-var kebabCase = require("lodash/string/kebabCase");
-var options = require("babel-core").options;
-var util = require("babel-core").util;
-var uniq = require("lodash/array/uniq");
-var each = require("lodash/collection/each");
-var keys = require("lodash/object/keys");
-var glob = require("glob");
+var pathExists = require("path-exists");
+var commander = require("commander");
+var kebabCase = require("lodash/string/kebabCase");
+var options = require("babel-core").options;
+var util = require("babel-core").util;
+var uniq = require("lodash/array/uniq");
+var each = require("lodash/collection/each");
+var glob = require("glob");
each(options, function (option, key) {
if (option.hidden) return;
@@ -47,26 +44,6 @@ commander.option("-d, --out-dir [out]", "Compile an input directory of modules i
commander.option("-D, --copy-files", "When compiling a directory copy over non-compilable files");
commander.option("-q, --quiet", "Don't log anything");
-commander.on("--help", function () {
- var outKeys = function (title, obj) {
- console.log(" " + title + ":");
- console.log();
-
- each(keys(obj).sort(), function (key) {
- if (key[0] === "_") return;
-
- if (obj[key].metadata && obj[key].metadata.optional) key = "[" + key + "]";
-
- console.log(" - " + key);
- });
-
- console.log();
- };
-
- outKeys("Transformers", transform.pipeline.transformers);
- outKeys("Module formatters", moduleFormatters);
-});
-
var pkg = require("../../package.json");
commander.version(pkg.version + " (babel-core " + require("babel-core").version + ")");
commander.usage("[options] ");
From b1648fb339e3e1a542bd0658a26e6ff02c30dc4f Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Fri, 18 Sep 2015 18:40:46 +0100
Subject: [PATCH 117/174] switch babel-node binary to use v8 flags
---
packages/babel-cli/package.json | 5 +-
packages/babel-cli/src/babel-node.js | 477 +++------------------------
2 files changed, 54 insertions(+), 428 deletions(-)
diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json
index 00ed33de06..be27502a25 100644
--- a/packages/babel-cli/package.json
+++ b/packages/babel-cli/package.json
@@ -18,8 +18,9 @@
"output-file-sync": "^1.1.0",
"path-exists": "^1.0.0",
"path-is-absolute": "^1.0.0",
+ "slash": "^1.0.0",
"source-map": "^0.4.0",
- "slash": "^1.0.0"
+ "v8flags": "^2.0.10"
},
"bin": {
"babel": "./bin/babel.js",
@@ -27,4 +28,4 @@
"babel-external-helpers": "./bin/babel-external-helpers.js",
"babel-plugin": "./bin/babel-plugin.js"
}
-}
\ No newline at end of file
+}
diff --git a/packages/babel-cli/src/babel-node.js b/packages/babel-cli/src/babel-node.js
index 7e9aa639ff..fadf11fcae 100755
--- a/packages/babel-cli/src/babel-node.js
+++ b/packages/babel-cli/src/babel-node.js
@@ -3,7 +3,9 @@
* when found, before invoking the "real" _babel-node(1) executable.
*/
+var getV8Flags = require("v8flags");
var path = require("path");
+
var args = [path.join(__dirname, "_babel-node")];
var babelArgs = process.argv.slice(2);
@@ -16,434 +18,57 @@ if (argSeparator > -1) {
babelArgs = babelArgs.slice(0, argSeparator);
}
-babelArgs.forEach(function(arg){
- var flag = arg.split("=")[0];
+getV8Flags(function (v8Flags) {
+ babelArgs.forEach(function(arg){
+ var flag = arg.split("=")[0];
- switch (flag) {
- case "-d":
- args.unshift("--debug");
- break;
+ switch (flag) {
+ case "-d":
+ args.unshift("--debug");
+ break;
- case "debug":
- case "--debug":
- case "--debug-brk":
- args.unshift(arg);
- break;
-
- case "-gc":
- case "--expose-gc":
- args.unshift("--expose-gc");
- break;
-
- case "--use_strict":
- case "--es_staging":
- case "--harmony":
- case "--harmony_shipping":
- case "--harmony_modules":
- case "--harmony_arrays":
- case "--harmony_array_includes":
- case "--harmony_regexps":
- case "--harmony_arrow_functions":
- case "--harmony_proxies":
- case "--harmony_sloppy":
- case "--harmony_unicode":
- case "--harmony_tostring":
- case "--harmony_numeric_literals":
- case "--harmony_strings":
- case "--harmony_scoping":
- case "--harmony_classes":
- case "--harmony_object_literals":
- case "--harmony_templates":
- case "--harmony_rest_parameters":
- case "--harmony_generators":
- case "--compiled_keyed_generic_loads":
- case "--pretenuring_call_new":
- case "--allocation_site_pretenuring":
- case "--trace_pretenuring":
- case "--trace_pretenuring_statistics":
- case "--track_fields":
- case "--track_double_fields":
- case "--track_heap_object_fields":
- case "--track_computed_fields":
- case "--track_field_types":
- case "--smi_binop":
- case "--vector_ics":
- case "--optimize_for_size":
- case "--unbox_double_arrays":
- case "--string_slices":
- case "--crankshaft":
- case "--hydrogen_filter":
- case "--use_gvn":
- case "--gvn_iterations":
- case "--use_canonicalizing":
- case "--use_inlining":
- case "--use_escape_analysis":
- case "--use_allocation_folding":
- case "--use_local_allocation_folding":
- case "--use_write_barrier_elimination":
- case "--max_inlining_levels":
- case "--max_inlined_source_size":
- case "--max_inlined_nodes":
- case "--max_inlined_nodes_cumulative":
- case "--loop_invariant_code_motion":
- case "--fast_math":
- case "--collect_megamorphic_maps_from_stub_cache":
- case "--hydrogen_stats":
- case "--trace_check_elimination":
- case "--trace_hydrogen":
- case "--trace_hydrogen_filter":
- case "--trace_hydrogen_stubs":
- case "--trace_hydrogen_file":
- case "--trace_phase":
- case "--trace_inlining":
- case "--trace_load_elimination":
- case "--trace_store_elimination":
- case "--trace_alloc":
- case "--trace_all_uses":
- case "--trace_range":
- case "--trace_gvn":
- case "--trace_representation":
- case "--trace_removable_simulates":
- case "--trace_escape_analysis":
- case "--trace_allocation_folding":
- case "--trace_track_allocation_sites":
- case "--trace_migration":
- case "--trace_generalization":
- case "--stress_pointer_maps":
- case "--stress_environments":
- case "--deopt_every_n_times":
- case "--deopt_every_n_garbage_collections":
- case "--print_deopt_stress":
- case "--trap_on_deopt":
- case "--trap_on_stub_deopt":
- case "--deoptimize_uncommon_cases":
- case "--polymorphic_inlining":
- case "--use_osr":
- case "--array_bounds_checks_elimination":
- case "--trace_bce":
- case "--array_bounds_checks_hoisting":
- case "--array_index_dehoisting":
- case "--analyze_environment_liveness":
- case "--load_elimination":
- case "--check_elimination":
- case "--store_elimination":
- case "--dead_code_elimination":
- case "--fold_constants":
- case "--trace_dead_code_elimination":
- case "--unreachable_code_elimination":
- case "--trace_osr":
- case "--stress_runs":
- case "--lookup_sample_by_shared":
- case "--cache_optimized_code":
- case "--flush_optimized_code_cache":
- case "--inline_construct":
- case "--inline_arguments":
- case "--inline_accessors":
- case "--escape_analysis_iterations":
- case "--optimize_for_in":
- case "--concurrent_recompilation":
- case "--job_based_recompilation":
- case "--trace_concurrent_recompilation":
- case "--concurrent_recompilation_queue_length":
- case "--concurrent_recompilation_delay":
- case "--block_concurrent_recompilation":
- case "--concurrent_osr":
- case "--omit_map_checks_for_leaf_maps":
- case "--turbo_filter":
- case "--trace_turbo":
- case "--trace_turbo_graph":
- case "--trace_turbo_cfg_file":
- case "--trace_turbo_types":
- case "--trace_turbo_scheduler":
- case "--trace_turbo_reduction":
- case "--trace_turbo_jt":
- case "--turbo_asm":
- case "--turbo_verify":
- case "--turbo_stats":
- case "--turbo_types":
- case "--turbo_source_positions":
- case "--context_specialization":
- case "--turbo_deoptimization":
- case "--turbo_inlining":
- case "--turbo_inlining_intrinsics":
- case "--trace_turbo_inlining":
- case "--loop_assignment_analysis":
- case "--turbo_profiling":
- case "--turbo_reuse_spill_slots":
- case "--turbo_delay_ssa_decon":
- case "--turbo_move_optimization":
- case "--turbo_jt":
- case "--typed_array_max_size_in_heap":
- case "--frame_count":
- case "--interrupt_budget":
- case "--type_info_threshold":
- case "--generic_ic_threshold":
- case "--self_opt_count":
- case "--trace_opt_verbose":
- case "--debug_code":
- case "--code_comments":
- case "--enable_sse3":
- case "--enable_sse4_1":
- case "--enable_sahf":
- case "--enable_avx":
- case "--enable_fma3":
- case "--enable_vfp3":
- case "--enable_armv7":
- case "--enable_armv8":
- case "--enable_neon":
- case "--enable_sudiv":
- case "--enable_mls":
- case "--enable_movw_movt":
- case "--enable_unaligned_accesses":
- case "--enable_32dregs":
- case "--enable_vldr_imm":
- case "--force_long_branches":
- case "--expose_natives_as":
- case "--expose_debug_as":
- case "--expose_free_buffer":
- case "--expose_gc":
- case "--expose_gc_as":
- case "--expose_externalize_string":
- case "--expose_trigger_failure":
- case "--stack_trace_limit":
- case "--builtins_in_stack_traces":
- case "--disable_native_files":
- case "--inline_new":
- case "--trace_codegen":
- case "--trace":
- case "--mask_constants_with_cookie":
- case "--lazy":
- case "--trace_opt":
- case "--trace_opt_stats":
- case "--opt":
- case "--always_opt":
- case "--always_osr":
- case "--prepare_always_opt":
- case "--trace_deopt":
- case "--trace_stub_failures":
- case "--serialize_toplevel":
- case "--serialize_inner":
- case "--trace_serializer":
- case "--min_preparse_length":
- case "--max_opt_count":
- case "--compilation_cache":
- case "--cache_prototype_transitions":
- case "--cpu_profiler_sampling_interval":
- case "--trace_debug_json":
- case "--trace_js_array_abuse":
- case "--trace_external_array_abuse":
- case "--trace_array_abuse":
- case "--enable_liveedit":
- case "--hard_abort":
- case "--stack_size":
- case "--max_stack_trace_source_length":
- case "--always_inline_smi_code":
- case "--min_semi_space_size":
- case "--target_semi_space_size":
- case "--max_semi_space_size":
- case "--semi_space_growth_factor":
- case "--experimental_new_space_growth_heuristic":
- case "--max_old_space_size":
- case "--initial_old_space_size":
- case "--max_executable_size":
- case "--gc_global":
- case "--gc_interval":
- case "--trace_gc":
- case "--trace_gc_nvp":
- case "--trace_gc_ignore_scavenger":
- case "--trace_idle_notification":
- case "--trace_idle_notification_verbose":
- case "--print_cumulative_gc_stat":
- case "--print_max_heap_committed":
- case "--trace_gc_verbose":
- case "--trace_fragmentation":
- case "--collect_maps":
- case "--weak_embedded_maps_in_optimized_code":
- case "--weak_embedded_objects_in_optimized_code":
- case "--flush_code":
- case "--flush_code_incrementally":
- case "--trace_code_flushing":
- case "--age_code":
- case "--incremental_marking":
- case "--incremental_marking_steps":
- case "--concurrent_sweeping":
- case "--trace_incremental_marking":
- case "--track_gc_object_stats":
- case "--heap_profiler_trace_objects":
- case "--use_idle_notification":
- case "--use_ic":
- case "--trace_ic":
- case "--native_code_counters":
- case "--always_compact":
- case "--never_compact":
- case "--compact_code_space":
- case "--incremental_code_compaction":
- case "--cleanup_code_caches_at_gc":
- case "--use_marking_progress_bar":
- case "--zap_code_space":
- case "--random_seed":
- case "--trace_weak_arrays":
- case "--track_prototype_users":
- case "--use_verbose_printer":
- case "--allow_natives_syntax":
- case "--trace_parse":
- case "--trace_sim":
- case "--debug_sim":
- case "--check_icache":
- case "--stop_sim_at":
- case "--sim_stack_alignment":
- case "--sim_stack_size":
- case "--log_regs_modified":
- case "--log_colour":
- case "--ignore_asm_unimplemented_break":
- case "--trace_sim_messages":
- case "--stack_trace_on_illegal":
- case "--abort_on_uncaught_exception":
- case "--randomize_hashes":
- case "--hash_seed":
- case "--profile_deserialization":
- case "--regexp_optimization":
- case "--testing_bool_flag":
- case "--testing_maybe_bool_flag":
- case "--testing_int_flag":
- case "--testing_float_flag":
- case "--testing_string_flag":
- case "--testing_prng_seed":
- case "--testing_serialization_file":
- case "--startup_blob":
- case "--profile_hydrogen_code_stub_compilation":
- case "--predictable":
- case "--help":
- case "--dump_counters":
- case "--debugger":
- case "--map_counters":
- case "--js_arguments":
- case "--gdbjit":
- case "--gdbjit_full":
- case "--gdbjit_dump":
- case "--gdbjit_dump_filter":
- case "--force_marking_deque_overflows":
- case "--stress_compaction":
- case "--log":
- case "--log_all":
- case "--log_api":
- case "--log_code":
- case "--log_gc":
- case "--log_handles":
- case "--log_snapshot_positions":
- case "--log_suspect":
- case "--prof":
- case "--prof_browser_mode":
- case "--log_regexp":
- case "--logfile":
- case "--logfile_per_isolate":
- case "--ll_prof":
- case "--perf_basic_prof":
- case "--perf_jit_prof":
- case "--gc_fake_mmap":
- case "--log_internal_timer_events":
- case "--log_timer_events":
- case "--log_instruction_stats":
- case "--log_instruction_file":
- case "--log_instruction_period":
- case "--redirect_code_traces":
- case "--redirect_code_traces_to":
- case "--hydrogen_track_positions":
- case "--trace_elements_transitions":
- case "--trace_creation_allocation_sites":
- case "--print_code_stubs":
- case "--test_secondary_stub_cache":
- case "--test_primary_stub_cache":
- case "--print_code":
- case "--print_opt_code":
- case "--print_unopt_code":
- case "--print_code_verbose":
- case "--print_builtin_code":
- case "--sodium":
- case "--print_all_code":
- case "--es5_readonly":
- case "--es52_globals":
- case "--harmony_typeof":
- case "--harmony_collections":
- case "--packed_arrays":
- case "--smi_only_arrays":
- case "--clever_optimizations":
- case "--use_range":
- case "--eliminate_dead_phis":
- case "--optimize_closures":
- case "--loop_weight":
- case "--opt_safe_uint32_operations":
- case "--parallel_recompilation":
- case "--trace_parallel_recompilation":
- case "--parallel_recompilation_queue_length":
- case "--experimental_profiler":
- case "--watch_ic_patching":
- case "--self_optimization":
- case "--direct_self_opt":
- case "--retry_self_opt":
- case "--count_based_interrupts":
- case "--interrupt_at_exit":
- case "--weighted_back_edges":
- case "--debug_code (generate extra code":
- case "--enable_sse2":
- case "--enable_cmov":
- case "--enable_rdtsc":
- case "--enable_vfp2":
- case "--enable_fpu":
- case "--stack_trace_on_abort":
- case "--always_full_compiler":
- case "--debugger_auto_break":
- case "--break_on_abort":
- case "--max_new_space_size":
- case "--trace_external_memory":
- case "--lazy_sweeping":
- case "--trace_exception":
- case "--preallocate_message_memory":
- case "--preemption":
- case "--extra_code":
- case "--remote_debugger":
- case "--debugger_agent":
- case "--debugger_port":
- case "--debug_compile_events":
- case "--debug_script_collected_events":
- case "--log_runtime":
- case "--prof_auto":
- case "--prof_lazy":
- case "--sliding_state_window":
- case "--nolazy":
- args.unshift(arg);
- break;
-
- default:
- if (arg.indexOf("--trace") === 0) {
+ case "debug":
+ case "--debug":
+ case "--debug-brk":
args.unshift(arg);
- } else {
- args.push(arg);
- }
- break;
+ break;
+
+ case "-gc":
+ case "--expose-gc":
+ args.unshift("--expose-gc");
+ break;
+
+ default:
+ if (v8Flags.indexOf(arg) >= 0 || arg.indexOf("--trace") === 0) {
+ args.unshift(arg);
+ } else {
+ args.push(arg);
+ }
+ break;
+ }
+ });
+
+ // append arguments passed after --
+ if (argSeparator > -1) {
+ args = args.concat(userArgs);
+ }
+
+ try {
+ var kexec = require("kexec");
+ kexec(process.argv[0], args);
+ } catch (err) {
+ if (err.code !== "MODULE_NOT_FOUND") throw err;
+
+ var child_process = require("child_process");
+ var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
+ proc.on("exit", function (code, signal) {
+ process.on("exit", function () {
+ if (signal) {
+ process.kill(process.pid, signal);
+ } else {
+ process.exit(code);
+ }
+ });
+ });
}
});
-
-// append arguments passed after --
-if (argSeparator > -1) {
- args = args.concat(userArgs);
-}
-
-try {
- var kexec = require("kexec");
- kexec(process.argv[0], args);
-} catch (err) {
- if (err.code !== "MODULE_NOT_FOUND") throw err;
-
- var child_process = require("child_process");
- var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
- proc.on("exit", function (code, signal) {
- process.on("exit", function () {
- if (signal) {
- process.kill(process.pid, signal);
- } else {
- process.exit(code);
- }
- });
- });
-}
From 901c578e019b66ee1f1a2c7b0597f8f7ae7c33c4 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Fri, 18 Sep 2015 18:40:59 +0100
Subject: [PATCH 118/174] remove unused templates
---
.../array-comprehension-container.js | 5 -----
.../transformation/templates/array-push.js | 1 -
.../templates/class-decorator.js | 1 -
.../class-derived-default-constructor.js | 3 ---
.../templates/default-parameter-assign.js | 1 -
.../templates/default-parameter.js | 1 -
.../transformation/templates/for-of-array.js | 1 -
.../transformation/templates/for-of-loose.js | 14 -------------
.../src/transformation/templates/for-of.js | 21 -------------------
.../templates/let-scoping-return.js | 1 -
.../src/transformation/templates/rest.js | 3 ---
.../templates/tail-call-body.js | 4 ----
12 files changed, 56 deletions(-)
delete mode 100644 packages/babel-core/src/transformation/templates/array-comprehension-container.js
delete mode 100644 packages/babel-core/src/transformation/templates/array-push.js
delete mode 100644 packages/babel-core/src/transformation/templates/class-decorator.js
delete mode 100644 packages/babel-core/src/transformation/templates/class-derived-default-constructor.js
delete mode 100644 packages/babel-core/src/transformation/templates/default-parameter-assign.js
delete mode 100644 packages/babel-core/src/transformation/templates/default-parameter.js
delete mode 100644 packages/babel-core/src/transformation/templates/for-of-array.js
delete mode 100644 packages/babel-core/src/transformation/templates/for-of-loose.js
delete mode 100644 packages/babel-core/src/transformation/templates/for-of.js
delete mode 100644 packages/babel-core/src/transformation/templates/let-scoping-return.js
delete mode 100644 packages/babel-core/src/transformation/templates/rest.js
delete mode 100644 packages/babel-core/src/transformation/templates/tail-call-body.js
diff --git a/packages/babel-core/src/transformation/templates/array-comprehension-container.js b/packages/babel-core/src/transformation/templates/array-comprehension-container.js
deleted file mode 100644
index e32bc59595..0000000000
--- a/packages/babel-core/src/transformation/templates/array-comprehension-container.js
+++ /dev/null
@@ -1,5 +0,0 @@
-(function () {
- var KEY = [];
-
- return KEY;
-})();
diff --git a/packages/babel-core/src/transformation/templates/array-push.js b/packages/babel-core/src/transformation/templates/array-push.js
deleted file mode 100644
index 2fe96db95b..0000000000
--- a/packages/babel-core/src/transformation/templates/array-push.js
+++ /dev/null
@@ -1 +0,0 @@
-KEY.push(STATEMENT);
diff --git a/packages/babel-core/src/transformation/templates/class-decorator.js b/packages/babel-core/src/transformation/templates/class-decorator.js
deleted file mode 100644
index 565c4ac8b6..0000000000
--- a/packages/babel-core/src/transformation/templates/class-decorator.js
+++ /dev/null
@@ -1 +0,0 @@
-CLASS_REF = DECORATOR(CLASS_REF) || CLASS_REF;
diff --git a/packages/babel-core/src/transformation/templates/class-derived-default-constructor.js b/packages/babel-core/src/transformation/templates/class-derived-default-constructor.js
deleted file mode 100644
index 7f6d7e288d..0000000000
--- a/packages/babel-core/src/transformation/templates/class-derived-default-constructor.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function () {
- super(...arguments);
-})
diff --git a/packages/babel-core/src/transformation/templates/default-parameter-assign.js b/packages/babel-core/src/transformation/templates/default-parameter-assign.js
deleted file mode 100644
index 847a500e42..0000000000
--- a/packages/babel-core/src/transformation/templates/default-parameter-assign.js
+++ /dev/null
@@ -1 +0,0 @@
-if (VARIABLE_NAME === undefined) VARIABLE_NAME = DEFAULT_VALUE;
diff --git a/packages/babel-core/src/transformation/templates/default-parameter.js b/packages/babel-core/src/transformation/templates/default-parameter.js
deleted file mode 100644
index 3db258780a..0000000000
--- a/packages/babel-core/src/transformation/templates/default-parameter.js
+++ /dev/null
@@ -1 +0,0 @@
-let VARIABLE_NAME = ARGUMENTS.length <= ARGUMENT_KEY || ARGUMENTS[ARGUMENT_KEY] === undefined ? DEFAULT_VALUE : ARGUMENTS[ARGUMENT_KEY];
diff --git a/packages/babel-core/src/transformation/templates/for-of-array.js b/packages/babel-core/src/transformation/templates/for-of-array.js
deleted file mode 100644
index 7f27900c15..0000000000
--- a/packages/babel-core/src/transformation/templates/for-of-array.js
+++ /dev/null
@@ -1 +0,0 @@
-for (var KEY = 0; KEY < ARR.length; KEY++) BODY;
diff --git a/packages/babel-core/src/transformation/templates/for-of-loose.js b/packages/babel-core/src/transformation/templates/for-of-loose.js
deleted file mode 100644
index 9b463868ce..0000000000
--- a/packages/babel-core/src/transformation/templates/for-of-loose.js
+++ /dev/null
@@ -1,14 +0,0 @@
-for (var LOOP_OBJECT = OBJECT,
- IS_ARRAY = Array.isArray(LOOP_OBJECT),
- INDEX = 0,
- LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {
- var ID;
- if (IS_ARRAY) {
- if (INDEX >= LOOP_OBJECT.length) break;
- ID = LOOP_OBJECT[INDEX++];
- } else {
- INDEX = LOOP_OBJECT.next();
- if (INDEX.done) break;
- ID = INDEX.value;
- }
-}
diff --git a/packages/babel-core/src/transformation/templates/for-of.js b/packages/babel-core/src/transformation/templates/for-of.js
deleted file mode 100644
index 3257fad723..0000000000
--- a/packages/babel-core/src/transformation/templates/for-of.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var ITERATOR_COMPLETION = true;
-var ITERATOR_HAD_ERROR_KEY = false;
-var ITERATOR_ERROR_KEY = undefined;
-try {
- for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {
-
- }
-} catch (err) {
- ITERATOR_HAD_ERROR_KEY = true;
- ITERATOR_ERROR_KEY = err;
-} finally {
- try {
- if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {
- ITERATOR_KEY.return();
- }
- } finally {
- if (ITERATOR_HAD_ERROR_KEY) {
- throw ITERATOR_ERROR_KEY;
- }
- }
-}
diff --git a/packages/babel-core/src/transformation/templates/let-scoping-return.js b/packages/babel-core/src/transformation/templates/let-scoping-return.js
deleted file mode 100644
index c5ec90d02f..0000000000
--- a/packages/babel-core/src/transformation/templates/let-scoping-return.js
+++ /dev/null
@@ -1 +0,0 @@
-if (typeof RETURN === "object") return RETURN.v;
diff --git a/packages/babel-core/src/transformation/templates/rest.js b/packages/babel-core/src/transformation/templates/rest.js
deleted file mode 100644
index 5ba3f315fa..0000000000
--- a/packages/babel-core/src/transformation/templates/rest.js
+++ /dev/null
@@ -1,3 +0,0 @@
-for (var LEN = ARGUMENTS.length, ARRAY: ARRAY_TYPE = Array(ARRAY_LEN), KEY = START; KEY < LEN; KEY++) {
- ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];
-}
diff --git a/packages/babel-core/src/transformation/templates/tail-call-body.js b/packages/babel-core/src/transformation/templates/tail-call-body.js
deleted file mode 100644
index 57c3e5e018..0000000000
--- a/packages/babel-core/src/transformation/templates/tail-call-body.js
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- var AGAIN_ID = true;
- FUNCTION_ID: while (AGAIN_ID) BLOCK
-}
From c695248d896860fc4ccc521b547a8a721e72f127 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Fri, 18 Sep 2015 18:41:19 +0100
Subject: [PATCH 119/174] remove dead deprecated/aliases for transformers
---
.../src/transformation/transformers/aliases.json | 6 ------
.../transformation/transformers/deprecated.json | 16 ----------------
2 files changed, 22 deletions(-)
delete mode 100644 packages/babel-core/src/transformation/transformers/aliases.json
delete mode 100644 packages/babel-core/src/transformation/transformers/deprecated.json
diff --git a/packages/babel-core/src/transformation/transformers/aliases.json b/packages/babel-core/src/transformation/transformers/aliases.json
deleted file mode 100644
index 4424d77ba9..0000000000
--- a/packages/babel-core/src/transformation/transformers/aliases.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "useStrict": "strict",
- "es5.runtime": "runtime",
- "es6.runtime": "runtime",
- "minification.inlineExpressions": "minification.constantFolding"
-}
diff --git a/packages/babel-core/src/transformation/transformers/deprecated.json b/packages/babel-core/src/transformation/transformers/deprecated.json
deleted file mode 100644
index e6220dc9f6..0000000000
--- a/packages/babel-core/src/transformation/transformers/deprecated.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "selfContained": "runtime",
- "unicode-regex": "regex.unicode",
- "spec.typeofSymbol": "es6.spec.symbols",
- "es6.symbols": "es6.spec.symbols",
- "es6.blockScopingTDZ": "es6.blockScoping",
- "es6.spec.blockScoping": "es6.blockScoping",
-
- "utility.inlineExpressions": "minification.constantFolding",
- "utility.deadCodeElimination": "minification.deadCodeElimination",
- "utility.removeConsoleCalls": "minification.removeConsole",
- "utility.removeDebugger": "minification.removeDebugger",
-
- "es6.parameters.rest": "es6.parameters",
- "es6.parameters.default": "es6.parameters"
-}
From 0708edb92720569fea83be63281cd4d3ab217553 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Fri, 18 Sep 2015 18:41:44 +0100
Subject: [PATCH 120/174] it's now safe to use path.remove()
---
packages/babel-traverse/src/path/removal.js | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/packages/babel-traverse/src/path/removal.js b/packages/babel-traverse/src/path/removal.js
index 8b7ca1b5b3..0567b83f12 100644
--- a/packages/babel-traverse/src/path/removal.js
+++ b/packages/babel-traverse/src/path/removal.js
@@ -3,21 +3,17 @@
import * as removalHooks from "./lib/removal-hooks";
/**
- * Deprecated in favor of `dangerouslyRemove` as it's far more scary and more accurately portrays
- * the risk.
+ * This is now safe.
*/
-export function remove() {
- console.trace("Path#remove has been renamed to Path#dangerouslyRemove, removing a node is extremely dangerous so please refrain using it.");
- return this.dangerouslyRemove();
-}
+export var dangerouslyRemove = remove;
/**
* Dangerously remove the current node. This may sometimes result in a tainted
* invalid AST so use with caution.
*/
-export function dangerouslyRemove() {
+export function remove() {
this._assertUnremoved();
this.resync();
From c99a17940144c39707c33bdd19f5577041e87e35 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Fri, 18 Sep 2015 18:45:55 +0100
Subject: [PATCH 121/174] var -> let
---
packages/babel-cli/src/_babel-node.js | 30 ++--
packages/babel-cli/src/babel-node.js | 20 +--
packages/babel-cli/src/babel-plugin/index.js | 22 +--
packages/babel-cli/src/babel/dir.js | 32 ++--
packages/babel-cli/src/babel/file.js | 58 +++---
packages/babel-cli/src/babel/index.js | 32 ++--
packages/babel-cli/src/babel/util.js | 20 +--
packages/babel-core/src/api/browser.js | 22 +--
packages/babel-core/src/api/node.js | 6 +-
packages/babel-core/src/api/register/cache.js | 2 +-
packages/babel-core/src/api/register/node.js | 52 +++---
packages/babel-core/src/helpers/merge.js | 4 +-
packages/babel-core/src/helpers/parse.js | 2 +-
packages/babel-core/src/store.js | 4 +-
.../src/tools/build-external-helpers.js | 22 +--
.../src/transformation/file/index.js | 150 ++++++++--------
.../src/transformation/file/logger.js | 8 +-
.../src/transformation/file/options/index.js | 12 +-
.../file/options/option-manager.js | 56 +++---
.../transformation/file/options/parsers.js | 2 +-
...-binary-assignment-operator-transformer.js | 16 +-
.../helpers/build-comprehension.js | 4 +-
...itional-assignment-operator-transformer.js | 14 +-
.../helpers/build-react-transformer.js | 30 ++--
.../transformation/helpers/call-delegate.js | 12 +-
.../src/transformation/helpers/define-map.js | 26 +--
.../helpers/explode-assignable-expression.js | 22 +--
.../helpers/get-function-arity.js | 4 +-
.../helpers/memoise-decorators.js | 12 +-
.../src/transformation/helpers/name-method.js | 44 ++---
.../src/transformation/helpers/regex.js | 2 +-
.../helpers/remap-async-to-generator.js | 16 +-
.../transformation/helpers/replace-supers.js | 54 +++---
.../babel-core/src/transformation/index.js | 4 +-
.../internal-plugins/block-hoist.js | 8 +-
.../internal-plugins/shadow-functions.js | 14 +-
.../src/transformation/modules/_default.js | 48 ++---
.../src/transformation/modules/_strict.js | 2 +-
.../src/transformation/modules/amd.js | 30 ++--
.../src/transformation/modules/common.js | 20 +--
.../src/transformation/modules/ignore.js | 2 +-
.../transformation/modules/lib/metadata.js | 38 ++--
.../src/transformation/modules/lib/remaps.js | 20 +--
.../src/transformation/modules/system.js | 62 +++----
.../src/transformation/modules/umd.js | 30 ++--
.../babel-core/src/transformation/pipeline.js | 6 +-
.../src/transformation/plugin-pass.js | 2 +-
.../babel-core/src/transformation/plugin.js | 2 +-
.../transformers/es5/properties.mutators.js | 12 +-
.../transformers/es6/block-scoping/index.js | 168 +++++++++---------
.../transformers/es6/block-scoping/tdz.js | 20 +--
.../transformers/es6/classes/index.js | 4 +-
.../transformers/es6/classes/loose.js | 6 +-
.../transformers/es6/classes/vanilla.js | 90 +++++-----
.../transformation/transformers/es6/for-of.js | 62 +++----
.../transformers/es6/modules.js | 16 +-
.../transformers/es6/object-super.js | 12 +-
.../transformers/es6/parameters/default.js | 30 ++--
.../es6/parameters/destructuring.js | 23 +++
.../transformers/es6/parameters/index.js | 4 +-
.../transformers/es6/parameters/rest.js | 46 ++---
.../transformers/es6/regex.sticky.js | 2 +-
.../transformers/es6/regex.unicode.js | 2 +-
.../transformers/es6/spec.arrow-functions.js | 6 +-
.../transformers/es6/spec.modules.js | 6 +-
.../transformers/es6/spec.symbols.js | 12 +-
.../es6/spec.template-literals.js | 6 +-
.../transformers/es6/tail-call.js | 72 ++++----
.../transformers/es7/async-functions.js | 2 +-
.../transformers/es7/class-properties.js | 2 +-
.../transformers/es7/comprehensions.js | 20 +--
.../transformers/es7/decorators.js | 10 +-
.../transformers/es7/do-expressions.js | 6 +-
.../es7/exponentiation-operator.js | 4 +-
.../transformers/es7/export-extensions.js | 14 +-
.../transformers/es7/function-bind.js | 18 +-
.../transformers/es7/object-rest-spread.js | 18 +-
.../es7/trailing-function-commas.js | 2 +-
.../transformation/transformers/filters.js | 6 +-
.../transformers/internal/hoist-directives.js | 8 +-
.../transformers/internal/module-formatter.js | 6 +-
.../transformers/internal/modules.js | 32 ++--
.../transformers/internal/validation.js | 10 +-
.../transformers/optimisation/flow.for-of.js | 4 +-
.../optimisation/modules.system.js | 8 +-
.../optimisation/react.inline-elements.js | 26 +--
.../transformers/other/async-to-generator.js | 4 +-
.../transformers/other/bluebird-coroutines.js | 4 +-
.../transformers/other/react-compat.js | 4 +-
.../transformers/other/react.js | 18 +-
.../transformers/other/regenerator.js | 16 +-
.../transformers/other/strict.js | 8 +-
.../transformers/spec/function-name.js | 12 +-
packages/babel-core/src/util.js | 26 +--
packages/babel-generator/src/buffer.js | 16 +-
.../src/generators/expressions.js | 22 +--
.../babel-generator/src/generators/flow.js | 4 +-
.../babel-generator/src/generators/jsx.js | 4 +-
.../babel-generator/src/generators/methods.js | 6 +-
.../babel-generator/src/generators/modules.js | 12 +-
.../src/generators/statements.js | 28 +--
.../src/generators/template-literals.js | 6 +-
.../babel-generator/src/generators/types.js | 10 +-
packages/babel-generator/src/index.js | 60 +++----
packages/babel-generator/src/node/index.js | 24 +--
.../babel-generator/src/node/parentheses.js | 10 +-
packages/babel-generator/src/node/printer.js | 2 +-
.../babel-generator/src/node/whitespace.js | 10 +-
packages/babel-generator/src/position.js | 4 +-
packages/babel-generator/src/source-map.js | 12 +-
packages/babel-generator/src/whitespace.js | 34 ++--
111 files changed, 1137 insertions(+), 1114 deletions(-)
create mode 100644 packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js
diff --git a/packages/babel-cli/src/_babel-node.js b/packages/babel-cli/src/_babel-node.js
index 3a6f4e309d..8e89bf0e63 100644
--- a/packages/babel-cli/src/_babel-node.js
+++ b/packages/babel-cli/src/_babel-node.js
@@ -9,7 +9,7 @@ import * as babel from "babel-core";
import vm from "vm";
import _ from "lodash";
-var program = new commander.Command("babel-node");
+let program = new commander.Command("babel-node");
program.option("-e, --eval [script]", "Evaluate script");
program.option("-p, --print [code]", "Evaluate script and print result");
@@ -18,7 +18,7 @@ program.option("-x, --extensions [extensions]", "List of extensions to hook into
program.option("-w, --plugins [string]", "TODO", util.list);
program.option("-b, --presets [string]", "TODO", util.list);
-var pkg = require("../package.json");
+let pkg = require("../package.json");
program.version(pkg.version);
program.usage("[options] [ -e script | script.js ] [arguments]");
program.parse(process.argv);
@@ -35,7 +35,7 @@ babel.register({
//
-var replPlugin = new babel.Plugin("repl", {
+let replPlugin = new babel.Plugin("repl", {
visitor: {
ModuleDeclaration() {
throw this.errorWithNode("Modules aren't supported in the REPL");
@@ -51,7 +51,7 @@ var replPlugin = new babel.Plugin("repl", {
//
-var _eval = function (code, filename) {
+let _eval = function (code, filename) {
code = code.trim();
if (!code) return undefined;
@@ -70,13 +70,13 @@ var _eval = function (code, filename) {
};
if (program.eval || program.print) {
- var code = program.eval;
+ let code = program.eval;
if (!code || code === true) code = program.print;
global.__filename = "[eval]";
global.__dirname = process.cwd();
- var module = new Module(global.__filename);
+ let module = new Module(global.__filename);
module.filename = global.__filename;
module.paths = Module._nodeModulePaths(global.__dirname);
@@ -84,18 +84,18 @@ if (program.eval || program.print) {
global.module = module;
global.require = module.require.bind(module);
- var result = _eval(code, global.__filename);
+ let result = _eval(code, global.__filename);
if (program.print) {
- var output = _.isString(result) ? result : inspect(result);
+ let output = _.isString(result) ? result : inspect(result);
process.stdout.write(output + "\n");
}
} else {
if (program.args.length) {
// slice all arguments up to the first filename since they're babel args that we handle
- var args = process.argv.slice(2);
+ let args = process.argv.slice(2);
- var i = 0;
- var ignoreNext = false;
+ let i = 0;
+ let ignoreNext = false;
_.each(args, function (arg, i2) {
if (ignoreNext) {
ignoreNext = false;
@@ -103,7 +103,7 @@ if (program.eval || program.print) {
}
if (arg[0] === "-") {
- var parsedArg = program[arg.slice(2)];
+ let parsedArg = program[arg.slice(2)];
if (parsedArg && parsedArg !== true) {
ignoreNext = true;
}
@@ -115,7 +115,7 @@ if (program.eval || program.print) {
args = args.slice(i);
// make the filename absolute
- var filename = args[0];
+ let filename = args[0];
if (!pathIsAbsolute(filename)) args[0] = path.join(process.cwd(), filename);
// add back on node and concat the sliced args
@@ -139,8 +139,8 @@ function replStart() {
}
function replEval(code, context, filename, callback) {
- var err;
- var result;
+ let err;
+ let result;
try {
if (code[0] === "(" && code[code.length - 1] === ")") {
diff --git a/packages/babel-cli/src/babel-node.js b/packages/babel-cli/src/babel-node.js
index fadf11fcae..603835dc91 100755
--- a/packages/babel-cli/src/babel-node.js
+++ b/packages/babel-cli/src/babel-node.js
@@ -3,16 +3,16 @@
* when found, before invoking the "real" _babel-node(1) executable.
*/
-var getV8Flags = require("v8flags");
-var path = require("path");
+let getV8Flags = require("v8flags");
+let path = require("path");
-var args = [path.join(__dirname, "_babel-node")];
+let args = [path.join(__dirname, "_babel-node")];
-var babelArgs = process.argv.slice(2);
-var userArgs;
+let babelArgs = process.argv.slice(2);
+let userArgs;
// separate node arguments from script arguments
-var argSeparator = babelArgs.indexOf("--");
+let argSeparator = babelArgs.indexOf("--");
if (argSeparator > -1) {
userArgs = babelArgs.slice(argSeparator); // including the --
babelArgs = babelArgs.slice(0, argSeparator);
@@ -20,7 +20,7 @@ if (argSeparator > -1) {
getV8Flags(function (v8Flags) {
babelArgs.forEach(function(arg){
- var flag = arg.split("=")[0];
+ let flag = arg.split("=")[0];
switch (flag) {
case "-d":
@@ -54,13 +54,13 @@ getV8Flags(function (v8Flags) {
}
try {
- var kexec = require("kexec");
+ let kexec = require("kexec");
kexec(process.argv[0], args);
} catch (err) {
if (err.code !== "MODULE_NOT_FOUND") throw err;
- var child_process = require("child_process");
- var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
+ let child_process = require("child_process");
+ let proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
proc.on("exit", function (code, signal) {
process.on("exit", function () {
if (signal) {
diff --git a/packages/babel-cli/src/babel-plugin/index.js b/packages/babel-cli/src/babel-plugin/index.js
index 522d2e7f40..de8d326b02 100755
--- a/packages/babel-cli/src/babel-plugin/index.js
+++ b/packages/babel-cli/src/babel-plugin/index.js
@@ -7,7 +7,7 @@ import fs from "fs";
function spawn(cmd, args, callback) {
console.log(">", cmd, args);
- var spawn = child.spawn(cmd, args, { stdio: "inherit" });
+ let spawn = child.spawn(cmd, args, { stdio: "inherit" });
spawn.on("exit", function (code) {
if (code === 0) {
@@ -21,7 +21,7 @@ function spawn(cmd, args, callback) {
function spawnMultiple(cmds) {
function next() {
- var cmd = cmds.shift();
+ let cmd = cmds.shift();
if (cmd) {
spawn(cmd.command, cmd.args, next);
} else {
@@ -33,7 +33,7 @@ function spawnMultiple(cmds) {
}
function template(name, data = {}) {
- var source = fs.readFileSync(path.join(__dirname, "templates", name), "utf8");
+ let source = fs.readFileSync(path.join(__dirname, "templates", name), "utf8");
source = source.replace(/[A-Z_]+/g, function (key) {
return data[key] === undefined ? key : data[key];
});
@@ -53,23 +53,23 @@ function execMaybe(cmd) {
}
}
-var rl = readline.createInterface({
+let rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
-var BABEL_PLUGIN_PREFIX = "babel-plugin-";
+let BABEL_PLUGIN_PREFIX = "babel-plugin-";
-var cmds = {
+let cmds = {
init: function () {
- var name = path.basename(process.cwd());
+ let name = path.basename(process.cwd());
if (name.indexOf(BABEL_PLUGIN_PREFIX) === 0) {
name = name.slice(BABEL_PLUGIN_PREFIX.length);
}
rl.question("Description (optional): ", function (description) {
- var remote = execMaybe("git config --get remote.origin.url").trim().match(/git@github.com:(.*?).git/);
+ let remote = execMaybe("git config --get remote.origin.url").trim().match(/git@github.com:(.*?).git/);
if (remote) {
build(description, remote[1]);
} else {
@@ -82,7 +82,7 @@ var cmds = {
function build(description, repo) {
rl.close();
- var templateData = {
+ let templateData = {
DESCRIPTION: description,
FULL_NAME: BABEL_PLUGIN_PREFIX + name,
NAME: name
@@ -133,7 +133,7 @@ var cmds = {
},
publish: function () {
- var pkg = require(process.cwd() + "/package.json");
+ let pkg = require(process.cwd() + "/package.json");
console.log("Current version:", pkg.version);
rl.question("New version (enter nothing for patch): ", function (newVersion) {
@@ -153,7 +153,7 @@ var cmds = {
}
};
-var cmd = cmds[process.argv[2]];
+let cmd = cmds[process.argv[2]];
if (cmd) {
cmd();
} else {
diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js
index f5010fa571..7507a78f47 100644
--- a/packages/babel-cli/src/babel/dir.js
+++ b/packages/babel-cli/src/babel/dir.js
@@ -1,27 +1,27 @@
-var outputFileSync = require("output-file-sync");
-var pathExists = require("path-exists");
-var chokidar = require("chokidar");
-var slash = require("slash");
-var path = require("path");
-var util = require("./util");
-var fs = require("fs");
-var _ = require("lodash");
+let outputFileSync = require("output-file-sync");
+let pathExists = require("path-exists");
+let chokidar = require("chokidar");
+let slash = require("slash");
+let path = require("path");
+let util = require("./util");
+let fs = require("fs");
+let _ = require("lodash");
module.exports = function (commander, filenames) {
function write(src, relative) {
// remove extension and then append back on .js
relative = relative.replace(/\.(\w*?)$/, "") + ".js";
- var dest = path.join(commander.outDir, relative);
+ let dest = path.join(commander.outDir, relative);
- var data = util.compile(src, {
+ let data = util.compile(src, {
sourceFileName: slash(path.relative(dest + "/..", src)),
sourceMapTarget: path.basename(relative)
});
if (!commander.copyFiles && data.ignored) return;
if (data.map && commander.sourceMaps && commander.sourceMaps !== "inline") {
- var mapLoc = dest + ".map";
+ let mapLoc = dest + ".map";
data.code = util.addSourceMappingUrl(data.code, mapLoc);
outputFileSync(mapLoc, JSON.stringify(data.map));
}
@@ -44,13 +44,13 @@ module.exports = function (commander, filenames) {
function handle(filename) {
if (!pathExists.sync(filename)) return;
- var stat = fs.statSync(filename);
+ let stat = fs.statSync(filename);
if (stat.isDirectory(filename)) {
- var dirname = filename;
+ let dirname = filename;
_.each(util.readdir(dirname), function (filename) {
- var src = path.join(dirname, filename);
+ let src = path.join(dirname, filename);
handleFile(src, filename);
});
} else {
@@ -62,14 +62,14 @@ module.exports = function (commander, filenames) {
if (commander.watch) {
_.each(filenames, function (dirname) {
- var watcher = chokidar.watch(dirname, {
+ let watcher = chokidar.watch(dirname, {
persistent: true,
ignoreInitial: true
});
_.each(["add", "change"], function (type) {
watcher.on(type, function (filename) {
- var relative = path.relative(dirname, filename) || filename;
+ let relative = path.relative(dirname, filename) || filename;
try {
handleFile(filename, relative);
} catch (err) {
diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js
index 9b2f9db4a5..e7120f5af5 100644
--- a/packages/babel-cli/src/babel/file.js
+++ b/packages/babel-cli/src/babel/file.js
@@ -1,37 +1,37 @@
-var convertSourceMap = require("convert-source-map");
-var pathExists = require("path-exists");
-var sourceMap = require("source-map");
-var chokidar = require("chokidar");
-var slash = require("slash");
-var path = require("path");
-var util = require("./util");
-var fs = require("fs");
-var _ = require("lodash");
+let convertSourceMap = require("convert-source-map");
+let pathExists = require("path-exists");
+let sourceMap = require("source-map");
+let chokidar = require("chokidar");
+let slash = require("slash");
+let path = require("path");
+let util = require("./util");
+let fs = require("fs");
+let _ = require("lodash");
module.exports = function (commander, filenames, opts) {
if (commander.sourceMaps === "inline") {
opts.sourceMaps = true;
}
- var results = [];
+ let results = [];
- var buildResult = function () {
- var map = new sourceMap.SourceMapGenerator({
+ let buildResult = function () {
+ let map = new sourceMap.SourceMapGenerator({
file: path.basename(commander.outFile) || "stdout",
sourceRoot: opts.sourceRoot
});
- var code = "";
- var offset = 0;
+ let code = "";
+ let offset = 0;
_.each(results, function (result) {
- var filename = result.filename;
+ let filename = result.filename;
code += result.code + "\n";
if (result.map) {
- var consumer = new sourceMap.SourceMapConsumer(result.map);
+ let consumer = new sourceMap.SourceMapConsumer(result.map);
- var sourceFilename = filename;
+ let sourceFilename = filename;
if (commander.outFile) {
sourceFilename = path.relative(path.dirname(commander.outFile), sourceFilename);
}
@@ -64,12 +64,12 @@ module.exports = function (commander, filenames, opts) {
};
};
- var output = function () {
- var result = buildResult();
+ let output = function () {
+ let result = buildResult();
if (commander.outFile) {
if (commander.sourceMaps && commander.sourceMaps !== "inline") {
- var mapLoc = commander.outFile + ".map";
+ let mapLoc = commander.outFile + ".map";
result.code = util.addSourceMappingUrl(result.code, mapLoc);
fs.writeFileSync(mapLoc, JSON.stringify(result.map));
}
@@ -80,13 +80,13 @@ module.exports = function (commander, filenames, opts) {
}
};
- var stdin = function () {
- var code = "";
+ let stdin = function () {
+ let code = "";
process.stdin.setEncoding("utf8");
process.stdin.on("readable", function () {
- var chunk = process.stdin.read();
+ let chunk = process.stdin.read();
if (chunk !== null) code += chunk;
});
@@ -96,16 +96,16 @@ module.exports = function (commander, filenames, opts) {
});
};
- var walk = function () {
- var _filenames = [];
+ let walk = function () {
+ let _filenames = [];
results = [];
_.each(filenames, function (filename) {
if (!pathExists.sync(filename)) return;
- var stat = fs.statSync(filename);
+ let stat = fs.statSync(filename);
if (stat.isDirectory()) {
- var dirname = filename;
+ let dirname = filename;
_.each(util.readdirFilter(filename), function (filename) {
_filenames.push(path.join(dirname, filename));
@@ -118,7 +118,7 @@ module.exports = function (commander, filenames, opts) {
_.each(_filenames, function (filename) {
if (util.shouldIgnore(filename)) return;
- var data = util.compile(filename);
+ let data = util.compile(filename);
if (data.ignored) return;
results.push(data);
});
@@ -126,7 +126,7 @@ module.exports = function (commander, filenames, opts) {
output();
};
- var files = function () {
+ let files = function () {
walk();
if (commander.watch) {
diff --git a/packages/babel-cli/src/babel/index.js b/packages/babel-cli/src/babel/index.js
index 46fc228c15..ac5c856164 100755
--- a/packages/babel-cli/src/babel/index.js
+++ b/packages/babel-cli/src/babel/index.js
@@ -2,19 +2,19 @@
require("babel-core");
-var pathExists = require("path-exists");
-var commander = require("commander");
-var kebabCase = require("lodash/string/kebabCase");
-var options = require("babel-core").options;
-var util = require("babel-core").util;
-var uniq = require("lodash/array/uniq");
-var each = require("lodash/collection/each");
-var glob = require("glob");
+let pathExists = require("path-exists");
+let commander = require("commander");
+let kebabCase = require("lodash/string/kebabCase");
+let options = require("babel-core").options;
+let util = require("babel-core").util;
+let uniq = require("lodash/array/uniq");
+let each = require("lodash/collection/each");
+let glob = require("glob");
each(options, function (option, key) {
if (option.hidden) return;
- var arg = kebabCase(key);
+ let arg = kebabCase(key);
if (option.type !== "boolean") {
arg += " [" + (option.type || "string") + "]";
@@ -30,7 +30,7 @@ each(options, function (option, key) {
arg = "-" + option.shorthand + ", " + arg;
}
- var desc = [];
+ let desc = [];
if (option.deprecated) desc.push("[DEPRECATED] " + option.deprecated);
if (option.description) desc.push(option.description);
@@ -44,7 +44,7 @@ commander.option("-d, --out-dir [out]", "Compile an input directory of modules i
commander.option("-D, --copy-files", "When compiling a directory copy over non-compilable files");
commander.option("-q, --quiet", "Don't log anything");
-var pkg = require("../../package.json");
+let pkg = require("../../package.json");
commander.version(pkg.version + " (babel-core " + require("babel-core").version + ")");
commander.usage("[options] ");
commander.parse(process.argv);
@@ -57,10 +57,10 @@ if (commander.extensions) {
//
-var errors = [];
+let errors = [];
-var filenames = commander.args.reduce(function (globbed, input) {
- var files = glob.sync(input);
+let filenames = commander.args.reduce(function (globbed, input) {
+ let files = glob.sync(input);
if (!files.length) files = [input];
return globbed.concat(files);
}, []);
@@ -98,7 +98,7 @@ if (errors.length) {
//
-var opts = exports.opts = {};
+let opts = exports.opts = {};
each(options, function (opt, key) {
if (commander[key] !== undefined) {
@@ -112,7 +112,7 @@ if (opts.only) {
opts.only = util.arrayify(opts.only, util.regexify);
}
-var fn;
+let fn;
if (commander.outDir) {
fn = require("./dir");
diff --git a/packages/babel-cli/src/babel/util.js b/packages/babel-cli/src/babel/util.js
index 52c0801109..e215b38b17 100644
--- a/packages/babel-cli/src/babel/util.js
+++ b/packages/babel-cli/src/babel/util.js
@@ -1,11 +1,11 @@
-var commander = require("commander");
-var readdir = require("fs-readdir-recursive");
-var index = require("./index");
-var babel = require("babel-core");
-var util = require("babel-core").util;
-var path = require("path");
-var fs = require("fs");
-var _ = require("lodash");
+let commander = require("commander");
+let readdir = require("fs-readdir-recursive");
+let index = require("./index");
+let babel = require("babel-core");
+let util = require("babel-core").util;
+let path = require("path");
+let fs = require("fs");
+let _ = require("lodash");
exports.readdirFilter = function (filename) {
return readdir(filename).filter(function (filename) {
@@ -35,7 +35,7 @@ exports.transform = function (filename, code, opts) {
opts.ignore = null;
opts.only = null;
- var result = babel.transform(code, opts);
+ let result = babel.transform(code, opts);
result.filename = filename;
result.actual = code;
return result;
@@ -43,7 +43,7 @@ exports.transform = function (filename, code, opts) {
exports.compile = function (filename, opts) {
try {
- var code = fs.readFileSync(filename, "utf8");
+ let code = fs.readFileSync(filename, "utf8");
return exports.transform(filename, code, opts);
} catch (err) {
if (commander.watch) {
diff --git a/packages/babel-core/src/api/browser.js b/packages/babel-core/src/api/browser.js
index 68f3eaccb7..17d8883762 100644
--- a/packages/babel-core/src/api/browser.js
+++ b/packages/babel-core/src/api/browser.js
@@ -10,16 +10,16 @@ export function run(code, opts = {}) {
export function load(url, callback, opts = {}, hold) {
opts.filename = opts.filename || url;
- var xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest();
+ let xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest();
xhr.open("GET", url, true);
if ("overrideMimeType" in xhr) xhr.overrideMimeType("text/plain");
xhr.onreadystatechange = function () {
if (xhr.readyState !== 4) return;
- var status = xhr.status;
+ let status = xhr.status;
if (status === 0 || status === 200) {
- var param = [xhr.responseText, opts];
+ let param = [xhr.responseText, opts];
if (!hold) run(param);
if (callback) callback(param);
} else {
@@ -31,16 +31,16 @@ export function load(url, callback, opts = {}, hold) {
}
function runScripts() {
- var scripts = [];
- var types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];
- var index = 0;
+ let scripts = [];
+ let types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];
+ let index = 0;
/**
* Transform and execute script. Ensures correct load order.
*/
function exec() {
- var param = scripts[index];
+ let param = scripts[index];
if (param instanceof Array) {
run(param);
index++;
@@ -53,7 +53,7 @@ function runScripts() {
*/
function run(script, i) {
- var opts = {};
+ let opts = {};
if (script.src) {
load(script.src, function (param) {
@@ -68,10 +68,10 @@ function runScripts() {
// Collect scripts with Babel `types`.
- var _scripts = global.document.getElementsByTagName("script");
+ let _scripts = global.document.getElementsByTagName("script");
- for (var i = 0; i < _scripts.length; ++i) {
- var _script = _scripts[i];
+ for (let i = 0; i < _scripts.length; ++i) {
+ let _script = _scripts[i];
if (types.indexOf(_script.type) >= 0) scripts.push(_script);
}
diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/api/node.js
index 6f6f6b1c11..a4630f6257 100644
--- a/packages/babel-core/src/api/node.js
+++ b/packages/babel-core/src/api/node.js
@@ -20,7 +20,7 @@ import * as t from "babel-types";
export { t as types };
export function register(opts?: Object) {
- var callback = require("./register/node-polyfill");
+ let callback = require("./register/node-polyfill");
if (opts != null) callback(opts);
return callback;
}
@@ -36,7 +36,7 @@ export function transformFile(filename: string, opts?: Object, callback: Functio
fs.readFile(filename, function (err, code) {
if (err) return callback(err);
- var result;
+ let result;
try {
result = transform(code, opts);
@@ -63,7 +63,7 @@ export function parse(code, opts = {}) {
};
opts.features = {};
- var ast = babylon.parse(code, opts);
+ let ast = babylon.parse(code, opts);
if (opts.onToken) {
opts.onToken.push(...ast.tokens);
diff --git a/packages/babel-core/src/api/register/cache.js b/packages/babel-core/src/api/register/cache.js
index 73ab94b175..b128ea4e47 100644
--- a/packages/babel-core/src/api/register/cache.js
+++ b/packages/babel-core/src/api/register/cache.js
@@ -4,7 +4,7 @@ import homeOrTmp from "home-or-tmp";
import pathExists from "path-exists";
const FILENAME = process.env.BABEL_CACHE_PATH || path.join(homeOrTmp, ".babel.json");
-var data = {};
+let data = {};
/**
* Write stringified cache to disk.
diff --git a/packages/babel-core/src/api/register/node.js b/packages/babel-core/src/api/register/node.js
index 723fcb391a..f130596a3b 100644
--- a/packages/babel-core/src/api/register/node.js
+++ b/packages/babel-core/src/api/register/node.js
@@ -15,7 +15,7 @@ import path from "path";
sourceMapSupport.install({
handleUncaughtExceptions: false,
retrieveSourceMap(source) {
- var map = maps && maps[source];
+ let map = maps && maps[source];
if (map) {
return {
url: null,
@@ -32,27 +32,27 @@ sourceMapSupport.install({
*/
registerCache.load();
-var cache = registerCache.get();
+let cache = registerCache.get();
/**
* Store options.
*/
-var transformOpts = {};
+let transformOpts = {};
-var ignore;
-var only;
+let ignore;
+let only;
-var oldHandlers = {};
-var maps = {};
+let oldHandlers = {};
+let maps = {};
-var cwd = process.cwd();
+let cwd = process.cwd();
/**
* Get path from `filename` relative to the current working directory.
*/
-var getRelativePath = function (filename){
+let getRelativePath = function (filename){
return path.relative(cwd, filename);
};
@@ -60,7 +60,7 @@ var getRelativePath = function (filename){
* Get last modified time for a `filename`.
*/
-var mtime = function (filename) {
+let mtime = function (filename) {
return +fs.statSync(filename).mtime;
};
@@ -68,22 +68,22 @@ var mtime = function (filename) {
* Compile a `filename` with optional `opts`.
*/
-var compile = function (filename, opts = {}) {
- var result;
+let compile = function (filename, opts = {}) {
+ let result;
opts.filename = filename;
- var optsManager = new OptionManager;
+ let optsManager = new OptionManager;
optsManager.mergeOptions(transformOpts);
opts = optsManager.init(opts);
- var cacheKey = `${JSON.stringify(opts)}:${babel.version}`;
+ let cacheKey = `${JSON.stringify(opts)}:${babel.version}`;
- var env = process.env.BABEL_ENV || process.env.NODE_ENV;
+ let env = process.env.BABEL_ENV || process.env.NODE_ENV;
if (env) cacheKey += `:${env}`;
if (cache) {
- var cached = cache[cacheKey];
+ let cached = cache[cacheKey];
if (cached && cached.mtime === mtime(filename)) {
result = cached;
}
@@ -110,7 +110,7 @@ var compile = function (filename, opts = {}) {
* Test if a `filename` should be ignored by Babel.
*/
-var shouldIgnore = function (filename) {
+let shouldIgnore = function (filename) {
if (!ignore && !only) {
return getRelativePath(filename).split(path.sep).indexOf("node_modules") >= 0;
} else {
@@ -122,17 +122,17 @@ var shouldIgnore = function (filename) {
* Monkey patch istanbul if it is running so that it works properly.
*/
-var istanbulMonkey = {};
+let istanbulMonkey = {};
if (process.env.running_under_istanbul) {
// we need to monkey patch fs.readFileSync so we can hook into
// what istanbul gets, it's extremely dirty but it's the only way
- var _readFileSync = fs.readFileSync;
+ let _readFileSync = fs.readFileSync;
fs.readFileSync = function (filename) {
if (istanbulMonkey[filename]) {
delete istanbulMonkey[filename];
- var code = compile(filename, {
+ let code = compile(filename, {
auxiliaryCommentBefore: "istanbul ignore next"
});
istanbulMonkey[filename] = true;
@@ -147,7 +147,7 @@ if (process.env.running_under_istanbul) {
* Replacement for the loader for istanbul.
*/
-var istanbulLoader = function (m, filename, old) {
+let istanbulLoader = function (m, filename, old) {
istanbulMonkey[filename] = true;
old(m, filename);
};
@@ -156,7 +156,7 @@ var istanbulLoader = function (m, filename, old) {
* Default loader.
*/
-var normalLoader = function (m, filename) {
+let normalLoader = function (m, filename) {
m._compile(compile(filename), filename);
};
@@ -164,10 +164,10 @@ var normalLoader = function (m, filename) {
* Register a loader for an extension.
*/
-var registerExtension = function (ext) {
- var old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"];
+let registerExtension = function (ext) {
+ let old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"];
- var loader = normalLoader;
+ let loader = normalLoader;
if (process.env.running_under_istanbul) loader = istanbulLoader;
require.extensions[ext] = function (m, filename) {
@@ -183,7 +183,7 @@ var registerExtension = function (ext) {
* Register loader for given extensions.
*/
-var hookExtensions = function (_exts) {
+let hookExtensions = function (_exts) {
each(oldHandlers, function (old, ext) {
if (old === undefined) {
delete require.extensions[ext];
diff --git a/packages/babel-core/src/helpers/merge.js b/packages/babel-core/src/helpers/merge.js
index 33f433dbd9..dbbc07d35a 100644
--- a/packages/babel-core/src/helpers/merge.js
+++ b/packages/babel-core/src/helpers/merge.js
@@ -9,8 +9,8 @@ export default function (dest, src) {
return merge(dest, src, function (a, b) {
if (b && Array.isArray(a)) {
- var c = a.slice(0);
- for (var v of b) {
+ let c = a.slice(0);
+ for (let v of b) {
if (a.indexOf(v) < 0) {
c.push(v);
}
diff --git a/packages/babel-core/src/helpers/parse.js b/packages/babel-core/src/helpers/parse.js
index cb6eb42ba9..0e4595b551 100644
--- a/packages/babel-core/src/helpers/parse.js
+++ b/packages/babel-core/src/helpers/parse.js
@@ -5,7 +5,7 @@ import * as babylon from "babylon";
*/
export default function (code, opts = {}) {
- var parseOpts = {
+ let parseOpts = {
allowImportExportEverywhere: opts.looseModules,
allowReturnOutsideFunction: opts.looseModules,
strictMode: opts.strictMode,
diff --git a/packages/babel-core/src/store.js b/packages/babel-core/src/store.js
index e276346bb9..d83cdd71c2 100644
--- a/packages/babel-core/src/store.js
+++ b/packages/babel-core/src/store.js
@@ -11,11 +11,11 @@ export default class Store {
}
get(key: string): any {
- var data = this.data[key];
+ let data = this.data[key];
if (data) {
return data;
} else {
- var dynamic = this.dynamicData[key];
+ let dynamic = this.dynamicData[key];
if (dynamic) {
return this.set(key, dynamic());
}
diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js
index 474da46340..d19971ac2e 100644
--- a/packages/babel-core/src/tools/build-external-helpers.js
+++ b/packages/babel-core/src/tools/build-external-helpers.js
@@ -6,9 +6,9 @@ import each from "lodash/collection/each";
import * as t from "babel-types";
function buildGlobal(namespace, builder) {
- var body = [];
- var container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body));
- var tree = t.program([t.expressionStatement(t.callExpression(container, [util.template("helper-self-global")]))]);
+ let body = [];
+ let container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body));
+ let tree = t.program([t.expressionStatement(t.callExpression(container, [util.template("helper-self-global")]))]);
body.push(t.variableDeclaration("var", [
t.variableDeclarator(
@@ -23,14 +23,14 @@ function buildGlobal(namespace, builder) {
}
function buildUmd(namespace, builder) {
- var body = [];
+ let body = [];
body.push(t.variableDeclaration("var", [
t.variableDeclarator(namespace, t.identifier("global"))
]));
builder(body);
- var container = util.template("umd-commonjs-strict", {
+ let container = util.template("umd-commonjs-strict", {
FACTORY_PARAMETERS: t.identifier("global"),
BROWSER_ARGUMENTS: t.assignmentExpression("=", t.memberExpression(t.identifier("root"), namespace), t.objectExpression({})),
COMMON_ARGUMENTS: t.identifier("exports"),
@@ -42,7 +42,7 @@ function buildUmd(namespace, builder) {
}
function buildVar(namespace, builder) {
- var body = [];
+ let body = [];
body.push(t.variableDeclaration("var", [
t.variableDeclarator(namespace, t.objectExpression({}))
]));
@@ -54,7 +54,7 @@ function buildHelpers(body, namespace, whitelist) {
each(File.helpers, function (name) {
if (whitelist && whitelist.indexOf(name) === -1) return;
- var key = t.identifier(t.toIdentifier(name));
+ let key = t.identifier(t.toIdentifier(name));
body.push(t.expressionStatement(
t.assignmentExpression("=", t.memberExpression(namespace, key), util.template("helper-" + name))
));
@@ -62,15 +62,15 @@ function buildHelpers(body, namespace, whitelist) {
}
export default function (whitelist, outputType = "global") {
- var namespace = t.identifier("babelHelpers");
+ let namespace = t.identifier("babelHelpers");
- var builder = function (body) {
+ let builder = function (body) {
return buildHelpers(body, namespace, whitelist);
};
- var tree;
+ let tree;
- var build = {
+ let build = {
global: buildGlobal,
umd: buildUmd,
var: buildVar
diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js
index 79f38de0e0..e6c69ca1cd 100644
--- a/packages/babel-core/src/transformation/file/index.js
+++ b/packages/babel-core/src/transformation/file/index.js
@@ -21,9 +21,9 @@ import * as util from "../../util";
import path from "path";
import * as t from "babel-types";
-var errorVisitor = {
+let errorVisitor = {
enter(path, state) {
- var loc = path.node.loc;
+ let loc = path.node.loc;
if (loc) {
state.loc = loc;
path.stop();
@@ -155,16 +155,16 @@ export default class File extends Store {
}
buildTransformers() {
- var file = this;
+ let file = this;
- var transformers = this.transformers = {};
+ let transformers = this.transformers = {};
- var secondaryStack = [];
- var stack = [];
+ let secondaryStack = [];
+ let stack = [];
// build internal transformers
- for (var key in this.pipeline.transformers) {
- var transformer = this.pipeline.transformers[key];
+ for (let key in this.pipeline.transformers) {
+ let transformer = this.pipeline.transformers[key];
let pass = transformers[key] = transformer.buildPass(file);
if (pass.canTransform()) {
@@ -181,15 +181,15 @@ export default class File extends Store {
}
// init plugins!
- var beforePlugins = [];
- var afterPlugins = [];
- var pluginManager = new PluginManager({
+ let beforePlugins = [];
+ let afterPlugins = [];
+ let pluginManager = new PluginManager({
file: this,
transformers: this.transformers,
before: beforePlugins,
after: afterPlugins
});
- for (var i = 0; i < file.opts.plugins.length; i++) {
+ for (let i = 0; i < file.opts.plugins.length; i++) {
pluginManager.add(file.opts.plugins[i]);
}
stack = beforePlugins.concat(stack, afterPlugins);
@@ -199,7 +199,7 @@ export default class File extends Store {
// build dependency graph
for (let pass of (stack: Array)) {
- for (var dep of (pass.plugin.dependencies: Array)) {
+ for (let dep of (pass.plugin.dependencies: Array)) {
this.transformerDependencies[dep] = pass.key;
}
}
@@ -209,14 +209,14 @@ export default class File extends Store {
}
collapseStack(_stack) {
- var stack = [];
- var ignore = [];
+ let stack = [];
+ let ignore = [];
for (let pass of (_stack: Array)) {
// been merged
if (ignore.indexOf(pass) >= 0) continue;
- var group = pass.plugin.metadata.group;
+ let group = pass.plugin.metadata.group;
// can't merge
if (!pass.canTransform() || !group) {
@@ -224,7 +224,7 @@ export default class File extends Store {
continue;
}
- var mergeStack = [];
+ let mergeStack = [];
for (let pass of (_stack: Array)) {
if (pass.plugin.metadata.group === group) {
mergeStack.push(pass);
@@ -236,12 +236,12 @@ export default class File extends Store {
shuffle;
//mergeStack = shuffle(mergeStack);
- var visitors = [];
+ let visitors = [];
for (let pass of (mergeStack: Array)) {
visitors.push(pass.plugin.visitor);
}
- var visitor = traverse.visitors.merge(visitors);
- var mergePlugin = new Plugin(group, { visitor });
+ let visitor = traverse.visitors.merge(visitors);
+ let mergePlugin = new Plugin(group, { visitor });
stack.push(mergePlugin.buildPass(this));
}
@@ -257,11 +257,11 @@ export default class File extends Store {
}
get(key: string): any {
- var data = this.data[key];
+ let data = this.data[key];
if (data) {
return data;
} else {
- var dynamic = this.dynamicData[key];
+ let dynamic = this.dynamicData[key];
if (dynamic) {
return this.set(key, dynamic());
}
@@ -269,25 +269,25 @@ export default class File extends Store {
}
resolveModuleSource(source: string): string {
- var resolveModuleSource = this.opts.resolveModuleSource;
+ let resolveModuleSource = this.opts.resolveModuleSource;
if (resolveModuleSource) source = resolveModuleSource(source, this.opts.filename);
return source;
}
addImport(source: string, name?: string, type?: string): Object {
name = name || source;
- var id = this.dynamicImportIds[name];
+ let id = this.dynamicImportIds[name];
if (!id) {
source = this.resolveModuleSource(source);
id = this.dynamicImportIds[name] = this.scope.generateUidIdentifier(name);
- var specifiers = [t.importDefaultSpecifier(id)];
- var declar = t.importDeclaration(specifiers, t.stringLiteral(source));
+ let specifiers = [t.importDefaultSpecifier(id)];
+ let declar = t.importDeclaration(specifiers, t.stringLiteral(source));
declar._blockHoist = 3;
if (type) {
- var modules = this.dynamicImportTypes[type] = this.dynamicImportTypes[type] || [];
+ let modules = this.dynamicImportTypes[type] = this.dynamicImportTypes[type] || [];
modules.push(declar);
}
@@ -303,7 +303,7 @@ export default class File extends Store {
}
attachAuxiliaryComment(node: Object): Object {
- var beforeComment = this.opts.auxiliaryCommentBefore;
+ let beforeComment = this.opts.auxiliaryCommentBefore;
if (beforeComment) {
node.leadingComments = node.leadingComments || [];
node.leadingComments.push({
@@ -312,7 +312,7 @@ export default class File extends Store {
});
}
- var afterComment = this.opts.auxiliaryCommentAfter;
+ let afterComment = this.opts.auxiliaryCommentAfter;
if (afterComment) {
node.trailingComments = node.trailingComments || [];
node.trailingComments.push({
@@ -325,31 +325,31 @@ export default class File extends Store {
}
addHelper(name: string): Object {
- var isSolo = includes(File.soloHelpers, name);
+ let isSolo = includes(File.soloHelpers, name);
if (!isSolo && !includes(File.helpers, name)) {
throw new ReferenceError(`Unknown helper ${name}`);
}
- var declar = this.declarations[name];
+ let declar = this.declarations[name];
if (declar) return declar;
this.usedHelpers[name] = true;
if (!isSolo) {
- var generator = this.get("helperGenerator");
- var runtime = this.get("helpersNamespace");
+ let generator = this.get("helperGenerator");
+ let runtime = this.get("helpersNamespace");
if (generator) {
return generator(name);
} else if (runtime) {
- var id = t.identifier(t.toIdentifier(name));
+ let id = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, id);
}
}
- var ref = util.template("helper-" + name);
+ let ref = util.template("helper-" + name);
- var uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
+ let uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
if (t.isFunctionExpression(ref) && !ref.id) {
ref.body._compact = true;
@@ -373,18 +373,18 @@ export default class File extends Store {
addTemplateObject(helperName: string, strings: Array, raw: Array): Object {
// Generate a unique name based on the string literals so we dedupe
// identical strings used in the program.
- var stringIds = raw.elements.map(function(string) {
+ let stringIds = raw.elements.map(function(string) {
return string.value;
});
- var name = `${helperName}_${raw.elements.length}_${stringIds.join(",")}`;
+ let name = `${helperName}_${raw.elements.length}_${stringIds.join(",")}`;
- var declar = this.declarations[name];
+ let declar = this.declarations[name];
if (declar) return declar;
- var uid = this.declarations[name] = this.scope.generateUidIdentifier("templateObject");
+ let uid = this.declarations[name] = this.scope.generateUidIdentifier("templateObject");
- var helperId = this.addHelper(helperName);
- var init = t.callExpression(helperId, [strings, raw]);
+ let helperId = this.addHelper(helperName);
+ let init = t.callExpression(helperId, [strings, raw]);
init._compact = true;
this.scope.push({
id: uid,
@@ -395,9 +395,9 @@ export default class File extends Store {
}
buildCodeFrameError(node, msg, Error = SyntaxError) {
- var loc = node && (node.loc || node._loc);
+ let loc = node && (node.loc || node._loc);
- var err = new Error(msg);
+ let err = new Error(msg);
if (loc) {
err.loc = loc.start;
@@ -417,19 +417,19 @@ export default class File extends Store {
}
mergeSourceMap(map: Object) {
- var opts = this.opts;
+ let opts = this.opts;
- var inputMap = opts.inputSourceMap;
+ let inputMap = opts.inputSourceMap;
if (inputMap) {
map.sources[0] = inputMap.file;
- var inputMapConsumer = new sourceMap.SourceMapConsumer(inputMap);
- var outputMapConsumer = new sourceMap.SourceMapConsumer(map);
- var outputMapGenerator = sourceMap.SourceMapGenerator.fromSourceMap(outputMapConsumer);
+ let inputMapConsumer = new sourceMap.SourceMapConsumer(inputMap);
+ let outputMapConsumer = new sourceMap.SourceMapConsumer(map);
+ let outputMapGenerator = sourceMap.SourceMapGenerator.fromSourceMap(outputMapConsumer);
outputMapGenerator.applySourceMap(inputMapConsumer);
- var mergedMap = outputMapGenerator.toJSON();
+ let mergedMap = outputMapGenerator.toJSON();
mergedMap.sources = inputMap.sources;
mergedMap.file = inputMap.file;
return mergedMap;
@@ -443,10 +443,10 @@ export default class File extends Store {
this.log.deprecate("Custom module formatters are deprecated and will be removed in the next major. Please use Babel plugins instead.");
}
- var ModuleFormatter = isFunction(type) ? type : moduleFormatters[type];
+ let ModuleFormatter = isFunction(type) ? type : moduleFormatters[type];
if (!ModuleFormatter) {
- var loc = resolve.relative(type);
+ let loc = resolve.relative(type);
if (loc) ModuleFormatter = require(loc);
}
@@ -458,11 +458,11 @@ export default class File extends Store {
}
parse(code: string) {
- var opts = this.opts;
+ let opts = this.opts;
//
- var parseOpts = {
+ let parseOpts = {
highlightCode: opts.highlightCode,
nonStandard: opts.nonStandard,
sourceType: opts.sourceType,
@@ -470,9 +470,9 @@ export default class File extends Store {
plugins: {}
};
- var features = parseOpts.features = {};
- for (var key in this.transformers) {
- var transformer = this.transformers[key];
+ let features = parseOpts.features = {};
+ for (let key in this.transformers) {
+ let transformer = this.transformers[key];
features[key] = transformer.canRun();
}
@@ -480,7 +480,7 @@ export default class File extends Store {
parseOpts.strictMode = features.strict;
this.log.debug("Parse start");
- var ast = parse(code, parseOpts);
+ let ast = parse(code, parseOpts);
this.log.debug("Parse stop");
return ast;
}
@@ -503,7 +503,7 @@ export default class File extends Store {
this.log.debug("End set AST");
this.log.debug("Start module formatter init");
- var modFormatter = this.moduleFormatter = this.getModuleFormatter(this.opts.modules);
+ let modFormatter = this.moduleFormatter = this.getModuleFormatter(this.opts.modules);
if (modFormatter.init && this.transformers["es6.modules"].canTransform()) {
modFormatter.init();
}
@@ -512,7 +512,7 @@ export default class File extends Store {
transform() {
this.call("pre");
- for (var pass of (this.transformerStack: Array)) {
+ for (let pass of (this.transformerStack: Array)) {
pass.transform();
}
this.call("post");
@@ -536,9 +536,9 @@ export default class File extends Store {
err._babel = true;
}
- var message = err.message = `${this.opts.filename}: ${err.message}`;
+ let message = err.message = `${this.opts.filename}: ${err.message}`;
- var loc = err.loc;
+ let loc = err.loc;
if (loc) {
err.codeFrame = codeFrame(code, loc.line, loc.column + 1, this.opts);
message += "\n" + err.codeFrame;
@@ -551,7 +551,7 @@ export default class File extends Store {
}
if (err.stack) {
- var newStack = err.stack.replace(err.message, message);
+ let newStack = err.stack.replace(err.message, message);
try {
err.stack = newStack;
} catch (e) {
@@ -571,27 +571,27 @@ export default class File extends Store {
parseCode() {
this.parseShebang();
- var ast = this.parse(this.code);
+ let ast = this.parse(this.code);
this.addAst(ast);
}
shouldIgnore() {
- var opts = this.opts;
+ let opts = this.opts;
return util.shouldIgnore(opts.filename, opts.ignore, opts.only);
}
call(key: string) {
- for (var pass of (this.uncollapsedTransformerStack: Array)) {
- var fn = pass.plugin[key];
+ for (let pass of (this.uncollapsedTransformerStack: Array)) {
+ let fn = pass.plugin[key];
if (fn) fn.call(pass, this);
}
}
parseInputSourceMap(code: string) {
- var opts = this.opts;
+ let opts = this.opts;
if (opts.inputSourceMap !== false) {
- var inputMap = convertSourceMap.fromSource(code);
+ let inputMap = convertSourceMap.fromSource(code);
if (inputMap) {
opts.inputSourceMap = inputMap.toObject();
code = convertSourceMap.removeComments(code);
@@ -602,7 +602,7 @@ export default class File extends Store {
}
parseShebang() {
- var shebangMatch = shebangRegex.exec(this.code);
+ let shebangMatch = shebangRegex.exec(this.code);
if (shebangMatch) {
this.shebang = shebangMatch[0];
this.code = this.code.replace(shebangRegex, "");
@@ -610,7 +610,7 @@ export default class File extends Store {
}
makeResult({ code, map = null, ast, ignored }) {
- var result = {
+ let result = {
metadata: null,
ignored: !!ignored,
code: null,
@@ -635,15 +635,15 @@ export default class File extends Store {
}
generate() {
- var opts = this.opts;
- var ast = this.ast;
+ let opts = this.opts;
+ let ast = this.ast;
- var result = { ast };
+ let result = { ast };
if (!opts.code) return this.makeResult(result);
this.log.debug("Generation start");
- var _result = generate(ast, opts, this.code);
+ let _result = generate(ast, opts, this.code);
result.code = _result.code;
result.map = _result.map;
diff --git a/packages/babel-core/src/transformation/file/logger.js b/packages/babel-core/src/transformation/file/logger.js
index 35db09efc5..39a17ddf12 100644
--- a/packages/babel-core/src/transformation/file/logger.js
+++ b/packages/babel-core/src/transformation/file/logger.js
@@ -1,10 +1,10 @@
import type File from "./index";
import buildDebug from "debug/node";
-var verboseDebug = buildDebug("babel:verbose");
-var generalDebug = buildDebug("babel");
+let verboseDebug = buildDebug("babel:verbose");
+let generalDebug = buildDebug("babel");
-var seenDeprecatedMessages = [];
+let seenDeprecatedMessages = [];
export default class Logger {
constructor(file: File, filename: string) {
@@ -13,7 +13,7 @@ export default class Logger {
}
_buildMessage(msg: string): string {
- var parts = `[BABEL] ${this.filename}`;
+ let parts = `[BABEL] ${this.filename}`;
if (msg) parts += `: ${msg}`;
return parts;
}
diff --git a/packages/babel-core/src/transformation/file/options/index.js b/packages/babel-core/src/transformation/file/options/index.js
index 513670a972..2aeb85c41c 100644
--- a/packages/babel-core/src/transformation/file/options/index.js
+++ b/packages/babel-core/src/transformation/file/options/index.js
@@ -8,8 +8,8 @@ export { config };
*/
export function validateOption(key, val, pipeline) {
- var opt = config[key];
- var parser = opt && parsers[opt.type];
+ let opt = config[key];
+ let parser = opt && parsers[opt.type];
if (parser && parser.validate) {
return parser.validate(key, val, pipeline);
} else {
@@ -22,14 +22,14 @@ export function validateOption(key, val, pipeline) {
*/
export function normaliseOptions(options = {}) {
- for (var key in options) {
- var val = options[key];
+ for (let key in options) {
+ let val = options[key];
if (val == null) continue;
- var opt = config[key];
+ let opt = config[key];
if (!opt) continue;
- var parser = parsers[opt.type];
+ let parser = parsers[opt.type];
if (parser) val = parser(val);
options[key] = val;
diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js
index 67eb61b44b..fd5cadc234 100644
--- a/packages/babel-core/src/transformation/file/options/option-manager.js
+++ b/packages/babel-core/src/transformation/file/options/option-manager.js
@@ -12,15 +12,15 @@ import config from "./config";
import path from "path";
import fs from "fs";
-var existsCache = {};
-var jsonCache = {};
+let existsCache = {};
+let jsonCache = {};
const BABELIGNORE_FILENAME = ".babelignore";
const BABELRC_FILENAME = ".babelrc";
const PACKAGE_FILENAME = "package.json";
function exists(filename) {
- var cached = existsCache[filename];
+ let cached = existsCache[filename];
if (cached != null) {
return cached;
} else {
@@ -39,14 +39,14 @@ export default class OptionManager {
static memoisedPlugins = [];
static memoisePluginContainer(fn, loc, i) {
- for (var cache of (OptionManager.memoisedPlugins: Array)) {
+ for (let cache of (OptionManager.memoisedPlugins: Array)) {
if (cache.container === fn) return cache.plugin;
}
- var obj = fn(context);
+ let obj = fn(context);
if (typeof obj === "object") {
- var plugin = new Plugin(obj);
+ let plugin = new Plugin(obj);
OptionManager.memoisedPlugins.push({
container: fn,
plugin: plugin
@@ -58,10 +58,10 @@ export default class OptionManager {
}
static createBareOptions() {
- var opts = {};
+ let opts = {};
- for (var key in config) {
- var opt = config[key];
+ for (let key in config) {
+ let opt = config[key];
opts[key] = clone(opt.default);
}
@@ -70,7 +70,7 @@ export default class OptionManager {
static normalisePlugins(loc, dirname, plugins) {
return plugins.map(function (val, i) {
- var plugin, options;
+ let plugin, options;
// destructure plugins
if (Array.isArray(val)) {
@@ -81,7 +81,7 @@ export default class OptionManager {
// allow plugins to be specified as strings
if (typeof plugin === "string") {
- var pluginLoc = resolve(`babel-plugin-${plugin}`, dirname) || resolve(plugin, dirname);
+ let pluginLoc = resolve(`babel-plugin-${plugin}`, dirname) || resolve(plugin, dirname);
if (pluginLoc) {
plugin = require(pluginLoc);
} else {
@@ -106,8 +106,8 @@ export default class OptionManager {
addConfig(loc, key?, json=json5) {
if (this.resolvedConfigs.indexOf(loc) >= 0) return;
- var content = fs.readFileSync(loc, "utf8");
- var opts;
+ let content = fs.readFileSync(loc, "utf8");
+ let opts;
try {
opts = jsonCache[content] = jsonCache[content] || json.parse(content);
@@ -163,8 +163,8 @@ export default class OptionManager {
delete opts.presets;
}
- var envOpts;
- var envKey = process.env.BABEL_ENV || process.env.NODE_ENV || "development";
+ let envOpts;
+ let envKey = process.env.BABEL_ENV || process.env.NODE_ENV || "development";
if (opts.env) {
envOpts = opts.env[envKey];
delete opts.env;
@@ -178,11 +178,11 @@ export default class OptionManager {
}
mergePresets(presets: Array, dirname) {
- for (var val of presets) {
+ for (let val of presets) {
if (typeof val === "string") {
- var presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname);
+ let presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname);
if (presetLoc) {
- var presetOpts = require(presetLoc);
+ let presetOpts = require(presetLoc);
this.mergeOptions(presetOpts, presetLoc, presetLoc, path.dirname(presetLoc));
} else {
throw new Error("todo");
@@ -196,8 +196,8 @@ export default class OptionManager {
}
addIgnoreConfig(loc) {
- var file = fs.readFileSync(loc, "utf8");
- var lines = file.split("\n");
+ let file = fs.readFileSync(loc, "utf8");
+ let lines = file.split("\n");
lines = lines.map(function (line) {
return line.replace(/#(.*?)$/, "").trim();
@@ -213,18 +213,18 @@ export default class OptionManager {
loc = path.join(process.cwd(), loc);
}
- var foundConfig = false;
- var foundIgnore = false;
+ let foundConfig = false;
+ let foundIgnore = false;
while (loc !== (loc = path.dirname(loc))) {
if (!foundConfig) {
- var configLoc = path.join(loc, BABELRC_FILENAME);
+ let configLoc = path.join(loc, BABELRC_FILENAME);
if (exists(configLoc)) {
this.addConfig(configLoc);
foundConfig = true;
}
- var pkgLoc = path.join(loc, PACKAGE_FILENAME);
+ let pkgLoc = path.join(loc, PACKAGE_FILENAME);
if (exists(pkgLoc)) {
this.addConfig(pkgLoc, "babel", JSON);
foundConfig = true;
@@ -232,7 +232,7 @@ export default class OptionManager {
}
if (!foundIgnore) {
- var ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);
+ let ignoreLoc = path.join(loc, BABELIGNORE_FILENAME);
if (exists(ignoreLoc)) {
this.addIgnoreConfig(ignoreLoc);
foundIgnore = true;
@@ -244,11 +244,11 @@ export default class OptionManager {
}
normaliseOptions() {
- var opts = this.options;
+ let opts = this.options;
for (let key in config) {
- var option = config[key];
- var val = opts[key];
+ let option = config[key];
+ let val = opts[key];
// optional
if (!val && option.optional) continue;
diff --git a/packages/babel-core/src/transformation/file/options/parsers.js b/packages/babel-core/src/transformation/file/options/parsers.js
index c6c6fd26f7..60d2752782 100644
--- a/packages/babel-core/src/transformation/file/options/parsers.js
+++ b/packages/babel-core/src/transformation/file/options/parsers.js
@@ -5,7 +5,7 @@ export function number(val) {
return +val;
}
-export var filename = slash;
+export let filename = slash;
export function boolean(val) {
return !!val;
diff --git a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
index 4e60a46e3d..4772176e69 100644
--- a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
@@ -2,13 +2,13 @@ import explode from "./explode-assignable-expression";
import * as t from "babel-types";
export default function (opts) {
- var exports = {};
+ let exports = {};
- var isAssignment = function (node) {
+ let isAssignment = function (node) {
return node.operator === opts.operator + "=";
};
- var buildAssignment = function (left, right) {
+ let buildAssignment = function (left, right) {
return t.assignmentExpression("=", left, right);
};
@@ -16,11 +16,11 @@ export default function (opts) {
// hit the `AssignmentExpression` one below
if (path.isCompletionRecord()) return;
- var expr = path.node.expression;
+ let expr = path.node.expression;
if (!isAssignment(expr)) return;
- var nodes = [];
- var exploded = explode(expr.left, nodes, file, path.scope, true);
+ let nodes = [];
+ let exploded = explode(expr.left, nodes, file, path.scope, true);
nodes.push(t.expressionStatement(
buildAssignment(exploded.ref, opts.build(exploded.uid, expr.right))
@@ -32,8 +32,8 @@ export default function (opts) {
exports.AssignmentExpression = function ({ node, scope }, file) {
if (!isAssignment(node)) return;
- var nodes = [];
- var exploded = explode(node.left, nodes, file, scope);
+ let nodes = [];
+ let exploded = explode(node.left, nodes, file, scope);
nodes.push(buildAssignment(exploded.ref, opts.build(exploded.uid, node.right)));
return nodes;
};
diff --git a/packages/babel-core/src/transformation/helpers/build-comprehension.js b/packages/babel-core/src/transformation/helpers/build-comprehension.js
index 3c491cc15c..2903f5fec4 100644
--- a/packages/babel-core/src/transformation/helpers/build-comprehension.js
+++ b/packages/babel-core/src/transformation/helpers/build-comprehension.js
@@ -1,10 +1,10 @@
import * as t from "babel-types";
export default function build(node, buildBody) {
- var self = node.blocks.shift();
+ let self = node.blocks.shift();
if (!self) return;
- var child = build(node, buildBody);
+ let child = build(node, buildBody);
if (!child) {
// last item
child = buildBody();
diff --git a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
index 94ae08d7ca..70275fa570 100644
--- a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
@@ -2,7 +2,7 @@ import explode from "./explode-assignable-expression";
import * as t from "babel-types";
export default function (exports, opts) {
- var buildAssignment = function (left, right) {
+ let buildAssignment = function (left, right) {
return t.assignmentExpression("=", left, right);
};
@@ -10,12 +10,12 @@ export default function (exports, opts) {
// hit the `AssignmentExpression` one below
if (path.isCompletionRecord()) return;
- var expr = path.node.expression;
+ let expr = path.node.expression;
if (!opts.is(expr, file)) return;
- var nodes = [];
+ let nodes = [];
- var exploded = explode(expr.left, nodes, file, path.scope);
+ let exploded = explode(expr.left, nodes, file, path.scope);
nodes.push(t.ifStatement(
opts.build(exploded.uid, file),
@@ -26,11 +26,11 @@ export default function (exports, opts) {
};
exports.AssignmentExpression = function (path, file) {
- var node = path.node;
+ let node = path.node;
if (!opts.is(node, file)) return;
- var nodes = [];
- var exploded = explode(node.left, nodes, file, path.scope);
+ let nodes = [];
+ let exploded = explode(node.left, nodes, file, path.scope);
nodes.push(t.logicalExpression(
"&&",
diff --git a/packages/babel-core/src/transformation/helpers/build-react-transformer.js b/packages/babel-core/src/transformation/helpers/build-react-transformer.js
index dc77ac2b2a..6a2c904250 100644
--- a/packages/babel-core/src/transformation/helpers/build-react-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-react-transformer.js
@@ -1,4 +1,4 @@
-// Based upon the excellent jsx-transpiler by Ingvar Stepanyan (RReverser)
+// Based upon the excellent jsx-transpiler by Inglet Stepanyan (RReverser)
// https://github.com/RReverser/jsx-transpiler
// jsx
@@ -10,7 +10,7 @@ import { react } from "babel-types";
import * as t from "babel-types";
export default function (opts) {
- var visitor = {};
+ let visitor = {};
visitor.JSXIdentifier = function (node) {
if (node.name === "this" && this.isReferenced()) {
@@ -39,14 +39,14 @@ export default function (opts) {
visitor.JSXAttribute = {
enter(node) {
- var value = node.value;
+ let value = node.value;
if (t.isLiteral(value) && isString(value.value)) {
value.value = value.value.replace(/\n\s+/g, " ");
}
},
exit(node) {
- var value = node.value || t.booleanLiteral(true);
+ let value = node.value || t.booleanLiteral(true);
return t.inherits(t.property("init", node.name, value), node);
}
};
@@ -55,17 +55,17 @@ export default function (opts) {
exit(node, parent, scope, file) {
parent.children = react.buildChildren(parent);
- var tagExpr = node.name;
- var args = [];
+ let tagExpr = node.name;
+ let args = [];
- var tagName;
+ let tagName;
if (t.isIdentifier(tagExpr)) {
tagName = tagExpr.name;
} else if (t.isLiteral(tagExpr)) {
tagName = tagExpr.value;
}
- var state = {
+ let state = {
tagExpr: tagExpr,
tagName: tagName,
args: args
@@ -75,7 +75,7 @@ export default function (opts) {
opts.pre(state, file);
}
- var attribs = node.attributes;
+ let attribs = node.attributes;
if (attribs.length) {
attribs = buildJSXOpeningElementAttributes(attribs, file);
} else {
@@ -99,11 +99,11 @@ export default function (opts) {
* all prior attributes to an array for later processing.
*/
- var buildJSXOpeningElementAttributes = function (attribs, file) {
- var _props = [];
- var objs = [];
+ let buildJSXOpeningElementAttributes = function (attribs, file) {
+ let _props = [];
+ let objs = [];
- var pushProps = function () {
+ let pushProps = function () {
if (!_props.length) return;
objs.push(t.objectExpression(_props));
@@ -111,7 +111,7 @@ export default function (opts) {
};
while (attribs.length) {
- var prop = attribs.shift();
+ let prop = attribs.shift();
if (t.isJSXSpreadAttribute(prop)) {
pushProps();
objs.push(prop.argument);
@@ -143,7 +143,7 @@ export default function (opts) {
visitor.JSXElement = {
exit(node) {
- var callExpr = node.openingElement;
+ let callExpr = node.openingElement;
callExpr.arguments = callExpr.arguments.concat(node.children);
diff --git a/packages/babel-core/src/transformation/helpers/call-delegate.js b/packages/babel-core/src/transformation/helpers/call-delegate.js
index d98a4907a6..6fc6009251 100644
--- a/packages/babel-core/src/transformation/helpers/call-delegate.js
+++ b/packages/babel-core/src/transformation/helpers/call-delegate.js
@@ -1,6 +1,6 @@
import * as t from "babel-types";
-var visitor = {
+let visitor = {
enter(path, state) {
if (path.isThisExpression() || path.isReferencedIdentifier({ name: "arguments" })) {
state.found = true;
@@ -14,19 +14,19 @@ var visitor = {
};
export default function (node, scope) {
- var container = t.functionExpression(null, [], node.body, node.generator, node.async);
+ let container = t.functionExpression(null, [], node.body, node.generator, node.async);
- var callee = container;
- var args = [];
+ let callee = container;
+ let args = [];
- var state = { found: false };
+ let state = { found: false };
scope.traverse(node, visitor, state);
if (state.found) {
callee = t.memberExpression(container, t.identifier("apply"));
args = [t.thisExpression(), t.identifier("arguments")];
}
- var call = t.callExpression(callee, args);
+ let call = t.callExpression(callee, args);
if (node.generator) call = t.yieldExpression(call, true);
return t.returnStatement(call);
diff --git a/packages/babel-core/src/transformation/helpers/define-map.js b/packages/babel-core/src/transformation/helpers/define-map.js
index 7f8ae70c93..4fc596a5d4 100644
--- a/packages/babel-core/src/transformation/helpers/define-map.js
+++ b/packages/babel-core/src/transformation/helpers/define-map.js
@@ -3,11 +3,11 @@ import has from "lodash/object/has";
import * as t from "babel-types";
export function push(mutatorMap, node, kind, file) {
- var alias = t.toKeyAlias(node);
+ let alias = t.toKeyAlias(node);
//
- var map = {};
+ let map = {};
if (has(mutatorMap, alias)) map = mutatorMap[alias];
mutatorMap[alias] = map;
@@ -23,7 +23,7 @@ export function push(mutatorMap, node, kind, file) {
}
if (node.decorators) {
- var decorators = map.decorators = map.decorators || t.arrayExpression([]);
+ let decorators = map.decorators = map.decorators || t.arrayExpression([]);
decorators.elements = decorators.elements.concat(node.decorators.map(dec => dec.expression).reverse());
}
@@ -44,7 +44,7 @@ export function push(mutatorMap, node, kind, file) {
}
export function hasComputed(mutatorMap) {
- for (var key in mutatorMap) {
+ for (let key in mutatorMap) {
if (mutatorMap[key]._computed) {
return true;
}
@@ -53,11 +53,11 @@ export function hasComputed(mutatorMap) {
}
export function toComputedObjectFromClass(obj) {
- var objExpr = t.arrayExpression([]);
+ let objExpr = t.arrayExpression([]);
- for (var i = 0; i < obj.properties.length; i++) {
- var prop = obj.properties[i];
- var val = prop.value;
+ for (let i = 0; i < obj.properties.length; i++) {
+ let prop = obj.properties[i];
+ let val = prop.value;
val.properties.unshift(t.property("init", t.identifier("key"), t.toComputedKey(prop)));
objExpr.elements.push(val);
}
@@ -66,20 +66,20 @@ export function toComputedObjectFromClass(obj) {
}
export function toClassObject(mutatorMap) {
- var objExpr = t.objectExpression([]);
+ let objExpr = t.objectExpression([]);
each(mutatorMap, function (map) {
- var mapNode = t.objectExpression([]);
+ let mapNode = t.objectExpression([]);
- var propNode = t.property("init", map._key, mapNode, map._computed);
+ let propNode = t.property("init", map._key, mapNode, map._computed);
each(map, function (node, key) {
if (key[0] === "_") return;
- var inheritNode = node;
+ let inheritNode = node;
if (t.isMethodDefinition(node) || t.isClassProperty(node)) node = node.value;
- var prop = t.property("init", t.identifier(key), node);
+ let prop = t.property("init", t.identifier(key), node);
t.inheritsComments(prop, inheritNode);
t.removeComments(inheritNode);
diff --git a/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js b/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js
index c89388616c..eddcc5d4c8 100644
--- a/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js
+++ b/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js
@@ -1,7 +1,7 @@
import * as t from "babel-types";
-var getObjRef = function (node, nodes, file, scope) {
- var ref;
+let getObjRef = function (node, nodes, file, scope) {
+ let ref;
if (t.isIdentifier(node)) {
if (scope.hasBinding(node.name)) {
// this variable is declared in scope so we can be 100% sure
@@ -26,19 +26,19 @@ var getObjRef = function (node, nodes, file, scope) {
throw new Error(`We can't explode this node type ${node.type}`);
}
- var temp = scope.generateUidIdentifierBasedOnNode(ref);
+ let temp = scope.generateUidIdentifierBasedOnNode(ref);
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(temp, ref)
]));
return temp;
};
-var getPropRef = function (node, nodes, file, scope) {
- var prop = node.property;
- var key = t.toComputedKey(node, prop);
+let getPropRef = function (node, nodes, file, scope) {
+ let prop = node.property;
+ let key = t.toComputedKey(node, prop);
if (t.isLiteral(key)) return key;
- var temp = scope.generateUidIdentifierBasedOnNode(prop);
+ let temp = scope.generateUidIdentifierBasedOnNode(prop);
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(temp, prop)
]));
@@ -46,21 +46,21 @@ var getPropRef = function (node, nodes, file, scope) {
};
export default function (node, nodes, file, scope, allowedSingleIdent) {
- var obj;
+ let obj;
if (t.isIdentifier(node) && allowedSingleIdent) {
obj = node;
} else {
obj = getObjRef(node, nodes, file, scope);
}
- var ref, uid;
+ let ref, uid;
if (t.isIdentifier(node)) {
ref = node;
uid = obj;
} else {
- var prop = getPropRef(node, nodes, file, scope);
- var computed = node.computed || t.isLiteral(prop);
+ let prop = getPropRef(node, nodes, file, scope);
+ let computed = node.computed || t.isLiteral(prop);
uid = ref = t.memberExpression(obj, prop, computed);
}
diff --git a/packages/babel-core/src/transformation/helpers/get-function-arity.js b/packages/babel-core/src/transformation/helpers/get-function-arity.js
index ce66f57207..756a102d9a 100644
--- a/packages/babel-core/src/transformation/helpers/get-function-arity.js
+++ b/packages/babel-core/src/transformation/helpers/get-function-arity.js
@@ -1,8 +1,8 @@
import * as t from "babel-types";
export default function (node) {
- for (var i = 0; i < node.params.length; i++) {
- var param = node.params[i];
+ for (let i = 0; i < node.params.length; i++) {
+ let param = node.params[i];
if (t.isAssignmentPattern(param) || t.isRestElement(param)) {
return i;
}
diff --git a/packages/babel-core/src/transformation/helpers/memoise-decorators.js b/packages/babel-core/src/transformation/helpers/memoise-decorators.js
index 1764781df9..d05d4c4e33 100644
--- a/packages/babel-core/src/transformation/helpers/memoise-decorators.js
+++ b/packages/babel-core/src/transformation/helpers/memoise-decorators.js
@@ -1,15 +1,15 @@
import * as t from "babel-types";
export default function (decorators, scope) {
- for (var i = 0; i < decorators.length; i++) {
- var decorator = decorators[i];
- var expression = decorator.expression;
+ for (let i = 0; i < decorators.length; i++) {
+ let decorator = decorators[i];
+ let expression = decorator.expression;
if (!t.isMemberExpression(expression)) continue;
- var temp = scope.maybeGenerateMemoised(expression.object);
- var ref;
+ let temp = scope.maybeGenerateMemoised(expression.object);
+ let ref;
- var nodes = [];
+ let nodes = [];
if (temp) {
ref = temp;
diff --git a/packages/babel-core/src/transformation/helpers/name-method.js b/packages/babel-core/src/transformation/helpers/name-method.js
index 9b3fc20ebb..df1a25e88c 100644
--- a/packages/babel-core/src/transformation/helpers/name-method.js
+++ b/packages/babel-core/src/transformation/helpers/name-method.js
@@ -2,14 +2,14 @@ import getFunctionArity from "./get-function-arity";
import * as util from "../../util";
import * as t from "babel-types";
-var visitor = {
+let visitor = {
"ReferencedIdentifier|BindingIdentifier"(path, state) {
// check if this node matches our function id
if (path.node.name !== state.name) return;
// check that we don't have a local variable declared as that removes the need
// for the wrapper
- var localDeclar = path.scope.getBindingIdentifier(state.name);
+ let localDeclar = path.scope.getBindingIdentifier(state.name);
if (localDeclar !== state.outerDeclar) return;
state.selfReference = true;
@@ -24,9 +24,9 @@ function wrap(state, method, id, scope) {
scope.rename(id.name);
} else {
// need to add a wrapper since we can't change the references
- var templateName = "property-method-assignment-wrapper";
+ let templateName = "property-method-assignment-wrapper";
if (method.generator) templateName += "-generator";
- var template = util.template(templateName, {
+ let template = util.template(templateName, {
FUNCTION: method,
FUNCTION_ID: id,
FUNCTION_KEY: scope.generateUidIdentifier(id.name)
@@ -35,8 +35,8 @@ function wrap(state, method, id, scope) {
// shim in dummy params to retain function arity, if you try to read the
// source then you'll get the original since it's proxied so it's all good
- var params = template.callee.body.body[0].params;
- for (var i = 0, len = getFunctionArity(method); i < len; i++) {
+ let params = template.callee.body.body[0].params;
+ for (let i = 0, len = getFunctionArity(method); i < len; i++) {
params.push(scope.generateUidIdentifier("x"));
}
@@ -49,7 +49,7 @@ function wrap(state, method, id, scope) {
}
function visit(node, name, scope) {
- var state = {
+ let state = {
selfAssignment: false,
selfReference: false,
outerDeclar: scope.getBindingIdentifier(name),
@@ -60,13 +60,13 @@ function visit(node, name, scope) {
// check to see if we have a local binding of the id we're setting inside of
// the function, this is important as there are caveats associated
- var binding = scope.getOwnBinding(name);
+ let binding = scope.getOwnBinding(name);
if (binding) {
if (binding.kind === "param") {
// safari will blow up in strict mode with code like:
//
- // var t = function t(t) {};
+ // let t = function t(t) {};
//
// with the error:
//
@@ -80,8 +80,8 @@ function visit(node, name, scope) {
} else {
// otherwise it's defined somewhere in scope like:
//
- // var t = function () {
- // var t = 2;
+ // let t = function () {
+ // let t = 2;
// };
//
// so we can safely just set the id and move along as it shadows the
@@ -95,19 +95,19 @@ function visit(node, name, scope) {
}
export function custom(node, id, scope) {
- var state = visit(node, id.name, scope);
+ let state = visit(node, id.name, scope);
return wrap(state, node, id, scope);
}
export function property(node, file, scope) {
- var key = t.toComputedKey(node, node.key);
+ let key = t.toComputedKey(node, node.key);
if (!t.isLiteral(key)) return; // we can't set a function id with this
- var name = t.toBindingIdentifierName(key.value);
- var id = t.identifier(name);
+ let name = t.toBindingIdentifierName(key.value);
+ let id = t.identifier(name);
- var method = node.value;
- var state = visit(method, name, scope);
+ let method = node.value;
+ let state = visit(method, name, scope);
node.value = wrap(state, method, id, scope) || method;
}
@@ -115,16 +115,16 @@ export function bare(node, parent, scope) {
// has an `id` so we don't need to infer one
if (node.id) return;
- var id;
+ let id;
if (t.isProperty(parent) && parent.kind === "init" && (!parent.computed || t.isLiteral(parent.key))) {
// { foo() {} };
id = parent.key;
} else if (t.isVariableDeclarator(parent)) {
- // var foo = function () {};
+ // let foo = function () {};
id = parent.id;
if (t.isIdentifier(id)) {
- var binding = scope.parent.getBinding(id.name);
+ let binding = scope.parent.getBinding(id.name);
if (binding && binding.constant && scope.getBinding(id.name) === binding) {
// always going to reference this method
node.id = id;
@@ -135,7 +135,7 @@ export function bare(node, parent, scope) {
return;
}
- var name;
+ let name;
if (t.isLiteral(id)) {
name = id.value;
} else if (t.isIdentifier(id)) {
@@ -147,6 +147,6 @@ export function bare(node, parent, scope) {
name = t.toBindingIdentifierName(name);
id = t.identifier(name);
- var state = visit(node, name, scope);
+ let state = visit(node, name, scope);
return wrap(state, node, id, scope);
}
diff --git a/packages/babel-core/src/transformation/helpers/regex.js b/packages/babel-core/src/transformation/helpers/regex.js
index 012775591e..c99a183760 100644
--- a/packages/babel-core/src/transformation/helpers/regex.js
+++ b/packages/babel-core/src/transformation/helpers/regex.js
@@ -6,7 +6,7 @@ export function is(node, flag) {
}
export function pullFlag(node, flag) {
- var flags = node.flags.split("");
+ let flags = node.flags.split("");
if (node.flags.indexOf(flag) < 0) return;
pull(flags, flag);
node.flags = flags.join("");
diff --git a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
index 49351fdca4..561418e44f 100644
--- a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
+++ b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
@@ -1,6 +1,6 @@
import * as t from "babel-types";
-var awaitVisitor = {
+let awaitVisitor = {
Function(path) {
path.skip();
},
@@ -16,9 +16,9 @@ var awaitVisitor = {
}
};
-var referenceVisitor = {
+let referenceVisitor = {
ReferencedIdentifier({ node, scope }, state) {
- var name = state.id.name;
+ let name = state.id.name;
if (node.name === name && scope.bindingIdentifierEquals(name, state.id)) {
return state.ref = state.ref || scope.generateUidIdentifier(name);
}
@@ -26,20 +26,20 @@ var referenceVisitor = {
};
export default function (path, callId) {
- var node = path.node;
+ let node = path.node;
node.async = false;
node.generator = true;
path.traverse(awaitVisitor, state);
- var call = t.callExpression(callId, [node]);
+ let call = t.callExpression(callId, [node]);
- var id = node.id;
+ let id = node.id;
node.id = null;
if (t.isFunctionDeclaration(node)) {
- var declar = t.variableDeclaration("let", [
+ let declar = t.variableDeclaration("let", [
t.variableDeclarator(id, call)
]);
declar._blockHoist = true;
@@ -48,7 +48,7 @@ export default function (path, callId) {
node.type = "FunctionExpression";
if (id) {
- var state = { id };
+ let state = { id };
path.traverse(referenceVisitor, state);
if (state.ref) {
diff --git a/packages/babel-core/src/transformation/helpers/replace-supers.js b/packages/babel-core/src/transformation/helpers/replace-supers.js
index 5eb11077fc..8239e9d481 100644
--- a/packages/babel-core/src/transformation/helpers/replace-supers.js
+++ b/packages/babel-core/src/transformation/helpers/replace-supers.js
@@ -13,10 +13,10 @@ function isMemberExpressionSuper(node) {
return t.isMemberExpression(node) && t.isSuper(node.object);
}
-var visitor = {
+let visitor = {
enter(path, state) {
- var topLevel = state.topLevel;
- var self = state.self;
+ let topLevel = state.topLevel;
+ let self = state.self;
if (path.isFunction() && !path.isArrowFunctionExpression()) {
// we need to call traverseLevel again so we're context aware
@@ -29,15 +29,15 @@ var visitor = {
return path.skip();
}
- var getThisReference = topLevel ?
+ let getThisReference = topLevel ?
// top level so `this` is the instance
t.thisExpression :
// not in the top level so we need to create a reference
self.getThisReference.bind(self);
- var callback = self.specHandle;
+ let callback = self.specHandle;
if (self.isLoose) callback = self.looseHandle;
- var result = callback.call(self, path, getThisReference);
+ let result = callback.call(self, path, getThisReference);
if (result) path.hasSuper = true;
if (result === true) return;
return result;
@@ -119,7 +119,7 @@ export default class ReplaceSupers {
}
traverseLevel(path: NodePath, topLevel: boolean) {
- var state = { self: this, topLevel: topLevel };
+ let state = { self: this, topLevel: topLevel };
path.traverse(visitor, state);
}
@@ -127,7 +127,7 @@ export default class ReplaceSupers {
if (this.topLevelThisReference) {
return this.topLevelThisReference;
} else {
- var ref = this.topLevelThisReference = this.scope.generateUidIdentifier("this");
+ let ref = this.topLevelThisReference = this.scope.generateUidIdentifier("this");
this.methodNode.value.body.body.unshift(t.variableDeclaration("var", [
t.variableDeclarator(this.topLevelThisReference, t.thisExpression())
]));
@@ -136,9 +136,9 @@ export default class ReplaceSupers {
}
getLooseSuperProperty(id: Object, parent: Object) {
- var methodNode = this.methodNode;
- var methodName = methodNode.key;
- var superRef = this.superRef || t.identifier("Function");
+ let methodNode = this.methodNode;
+ let methodName = methodNode.key;
+ let superRef = this.superRef || t.identifier("Function");
if (parent.property === id) {
return;
@@ -175,11 +175,11 @@ export default class ReplaceSupers {
}
looseHandle(path: NodePath, getThisReference: Function) {
- var node = path.node;
+ let node = path.node;
if (path.isSuper()) {
return this.getLooseSuperProperty(node, path.parent);
} else if (path.isCallExpression()) {
- var callee = node.callee;
+ let callee = node.callee;
if (!t.isMemberExpression(callee)) return;
if (!t.isSuper(callee.object)) return;
@@ -195,7 +195,7 @@ export default class ReplaceSupers {
// super.name = "val"; -> _set(Object.getPrototypeOf(objectRef.prototype), "name", this);
return this.setSuperProperty(node.left.property, node.right, node.left.computed, getThisReference());
} else {
- // super.age += 2; -> var _ref = super.age; super.age = _ref + 2;
+ // super.age += 2; -> let _ref = super.age; super.age = _ref + 2;
ref = ref || path.scope.generateUidIdentifier("ref");
return [
t.variableDeclaration("var", [
@@ -209,21 +209,21 @@ export default class ReplaceSupers {
}
specHandle(path: NodePath, getThisReference: Function) {
- var methodNode = this.methodNode;
- var property;
- var computed;
- var args;
- var thisReference;
+ let methodNode = this.methodNode;
+ let property;
+ let computed;
+ let args;
+ let thisReference;
- var parent = path.parent;
- var node = path.node;
+ let parent = path.parent;
+ let node = path.node;
if (isIllegalBareSuper(node, parent)) {
throw path.buildCodeFrameError(messages.get("classesIllegalBareSuper"));
}
if (t.isCallExpression(node)) {
- var callee = node.callee;
+ let callee = node.callee;
if (t.isSuper(callee)) {
// super(); -> _get(Object.getPrototypeOf(objectRef), "MethodName", this).call(this);
property = methodNode.key;
@@ -234,7 +234,7 @@ export default class ReplaceSupers {
// - https://esdiscuss.org/topic/super-call-in-methods
// - https://twitter.com/wycats/status/544553184396836864
if (methodNode.key.name !== "constructor" || !this.inClass) {
- var methodName = methodNode.key.name || "METHOD_NAME";
+ let methodName = methodNode.key.name || "METHOD_NAME";
throw this.file.buildCodeFrameError(node, messages.get("classesIllegalSuperCall", methodName));
}
} else if (isMemberExpressionSuper(callee)) {
@@ -248,13 +248,13 @@ export default class ReplaceSupers {
property = node.property;
computed = node.computed;
} else if (t.isUpdateExpression(node) && isMemberExpressionSuper(node.argument)) {
- var binary = t.binaryExpression(node.operator[0], node.argument, t.numberLiteral(1));
+ let binary = t.binaryExpression(node.operator[0], node.argument, t.numberLiteral(1));
if (node.prefix) {
// ++super.foo; -> super.foo += 1;
return this.specHandleAssignmentExpression(null, path, binary, getThisReference);
} else {
- // super.foo++; -> var _ref = super.foo; super.foo = _ref + 1;
- var ref = path.scope.generateUidIdentifier("ref");
+ // super.foo++; -> let _ref = super.foo; super.foo = _ref + 1;
+ let ref = path.scope.generateUidIdentifier("ref");
return this.specHandleAssignmentExpression(ref, path, binary, getThisReference).concat(t.expressionStatement(ref));
}
} else if (t.isAssignmentExpression(node) && isMemberExpressionSuper(node.left)) {
@@ -264,7 +264,7 @@ export default class ReplaceSupers {
if (!property) return;
thisReference = getThisReference();
- var superProperty = this.getSuperProperty(property, computed, thisReference);
+ let superProperty = this.getSuperProperty(property, computed, thisReference);
if (args) {
if (args.length === 1 && t.isSpreadElement(args[0])) {
// super(...arguments);
diff --git a/packages/babel-core/src/transformation/index.js b/packages/babel-core/src/transformation/index.js
index da4c0dc0f4..3719de4bd0 100644
--- a/packages/babel-core/src/transformation/index.js
+++ b/packages/babel-core/src/transformation/index.js
@@ -1,7 +1,7 @@
import Pipeline from "./pipeline";
-var pipeline = new Pipeline;
-var transform = pipeline.transform.bind(pipeline);
+let pipeline = new Pipeline;
+let transform = pipeline.transform.bind(pipeline);
transform.fromAst = pipeline.transformFromAst.bind(pipeline);
transform.lint = pipeline.lint.bind(pipeline);
transform.pipeline = pipeline;
diff --git a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
index e033bc39f0..014b9e7711 100644
--- a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
+++ b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
@@ -16,9 +16,9 @@ export default new Plugin({
visitor: {
Block: {
exit({ node }) {
- var hasChange = false;
- for (var i = 0; i < node.body.length; i++) {
- var bodyNode = node.body[i];
+ let hasChange = false;
+ for (let i = 0; i < node.body.length; i++) {
+ let bodyNode = node.body[i];
if (bodyNode && bodyNode._blockHoist != null) {
hasChange = true;
break;
@@ -27,7 +27,7 @@ export default new Plugin({
if (!hasChange) return;
node.body = sortBy(node.body, function(bodyNode){
- var priority = bodyNode && bodyNode._blockHoist;
+ let priority = bodyNode && bodyNode._blockHoist;
if (priority == null) priority = 1;
if (priority === true) priority = 2;
diff --git a/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
index b386a44202..397b48b67a 100644
--- a/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
+++ b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
@@ -25,13 +25,13 @@ function shouldShadow(path, shadowPath) {
function remap(path, key, create) {
// ensure that we're shadowed
- var shadowPath = path.inShadow(key);
+ let shadowPath = path.inShadow(key);
if (!shouldShadow(path, shadowPath)) return;
- var shadowFunction = path.node._shadowedFunctionLiteral;
- var currentFunction;
+ let shadowFunction = path.node._shadowedFunctionLiteral;
+ let currentFunction;
- var fnPath = path.findParent(function (path) {
+ let fnPath = path.findParent(function (path) {
if (path.isProgram() || path.isFunction()) {
// catch current function in case this is the shadowed one and we can ignore it
currentFunction = currentFunction || path;
@@ -53,11 +53,11 @@ function remap(path, key, create) {
// no point in realiasing if we're in this function
if (fnPath === currentFunction) return;
- var cached = fnPath.getData(key);
+ let cached = fnPath.getData(key);
if (cached) return cached;
- var init = create();
- var id = path.scope.generateUidIdentifier(key);
+ let init = create();
+ let id = path.scope.generateUidIdentifier(key);
fnPath.setData(key, id);
fnPath.scope.push({ id, init });
diff --git a/packages/babel-core/src/transformation/modules/_default.js b/packages/babel-core/src/transformation/modules/_default.js
index 73535a5d0e..48dd52bbd0 100644
--- a/packages/babel-core/src/transformation/modules/_default.js
+++ b/packages/babel-core/src/transformation/modules/_default.js
@@ -32,10 +32,10 @@ export default class DefaultFormatter {
}
addScope(path) {
- var source = path.node.source && path.node.source.value;
+ let source = path.node.source && path.node.source.value;
if (!source) return;
- var existingScope = this.sourceScopes[source];
+ let existingScope = this.sourceScopes[source];
if (existingScope && existingScope !== path.scope) {
throw path.buildCodeFrameError(messages.get("modulesDuplicateDeclarations"));
}
@@ -44,7 +44,7 @@ export default class DefaultFormatter {
}
isModuleType(node, type) {
- var modules = this.file.dynamicImportTypes[type];
+ let modules = this.file.dynamicImportTypes[type];
return modules && modules.indexOf(node) >= 0;
}
@@ -57,8 +57,8 @@ export default class DefaultFormatter {
}
getMetadata() {
- var has = false;
- for (var node of (this.file.ast.program.body: Array)) {
+ let has = false;
+ for (let node of (this.file.ast.program.body: Array)) {
if (t.isModuleDeclaration(node)) {
has = true;
break;
@@ -76,9 +76,9 @@ export default class DefaultFormatter {
}
remapExportAssignment(node, exported) {
- var assign = node;
+ let assign = node;
- for (var i = 0; i < exported.length; i++) {
+ for (let i = 0; i < exported.length; i++) {
assign = t.assignmentExpression(
"=",
t.memberExpression(t.identifier("exports"), exported[i]),
@@ -90,7 +90,7 @@ export default class DefaultFormatter {
}
_addExport(name, exported) {
- var info = this.localExports[name] = this.localExports[name] || {
+ let info = this.localExports[name] = this.localExports[name] || {
binding: this.scope.getBindingIdentifier(name),
exported: []
};
@@ -100,21 +100,21 @@ export default class DefaultFormatter {
getExport(node, scope) {
if (!t.isIdentifier(node)) return;
- var local = this.localExports[node.name];
+ let local = this.localExports[node.name];
if (local && local.binding === scope.getBindingIdentifier(node.name)) {
return local.exported;
}
}
getModuleName() {
- var opts = this.file.opts;
+ let opts = this.file.opts;
// moduleId is n/a if a `getModuleId()` is provided
if (opts.moduleId != null && !opts.getModuleId) {
return opts.moduleId;
}
- var filenameRelative = opts.filenameRelative;
- var moduleName = "";
+ let filenameRelative = opts.filenameRelative;
+ let moduleName = "";
if (opts.moduleRoot != null) {
moduleName = opts.moduleRoot + "/";
@@ -126,7 +126,7 @@ export default class DefaultFormatter {
if (opts.sourceRoot != null) {
// remove sourceRoot from filename
- var sourceRootRegEx = new RegExp("^" + opts.sourceRoot + "\/?");
+ let sourceRootRegEx = new RegExp("^" + opts.sourceRoot + "\/?");
filenameRelative = filenameRelative.replace(sourceRootRegEx, "");
}
@@ -168,8 +168,8 @@ export default class DefaultFormatter {
}
getExternalReference(node, nodes) {
- var ids = this.ids;
- var id = node.source.value;
+ let ids = this.ids;
+ let id = node.source.value;
if (ids[id]) {
return ids[id];
@@ -185,7 +185,7 @@ export default class DefaultFormatter {
}
exportAllDeclaration(node, nodes) {
- var ref = this.getExternalReference(node, nodes);
+ let ref = this.getExternalReference(node, nodes);
nodes.push(this.buildExportsWildcard(ref, node));
}
@@ -195,7 +195,7 @@ export default class DefaultFormatter {
exportSpecifier(specifier, node, nodes) {
if (node.source) {
- var ref = this.getExternalReference(node, nodes);
+ let ref = this.getExternalReference(node, nodes);
if (specifier.local.name === "default" && !this.noInteropRequireExport) {
// importing a default so we need to normalize it
@@ -244,28 +244,28 @@ export default class DefaultFormatter {
}
exportDeclaration(node, nodes) {
- var declar = node.declaration;
+ let declar = node.declaration;
- var id = declar.id;
+ let id = declar.id;
if (t.isExportDefaultDeclaration(node)) {
id = t.identifier("default");
}
- var assign;
+ let assign;
if (t.isVariableDeclaration(declar)) {
- for (var i = 0; i < declar.declarations.length; i++) {
- var decl = declar.declarations[i];
+ for (let i = 0; i < declar.declarations.length; i++) {
+ let decl = declar.declarations[i];
decl.init = this.buildExportsAssignment(decl.id, decl.init, node).expression;
- var newDeclar = t.variableDeclaration(declar.kind, [decl]);
+ let newDeclar = t.variableDeclaration(declar.kind, [decl]);
if (i === 0) t.inherits(newDeclar, declar);
nodes.push(newDeclar);
}
} else {
- var ref = declar;
+ let ref = declar;
if (t.isFunctionDeclaration(declar) || t.isClassDeclaration(declar)) {
ref = declar.id;
diff --git a/packages/babel-core/src/transformation/modules/_strict.js b/packages/babel-core/src/transformation/modules/_strict.js
index 02c8aba004..2a615dfc4a 100644
--- a/packages/babel-core/src/transformation/modules/_strict.js
+++ b/packages/babel-core/src/transformation/modules/_strict.js
@@ -1,7 +1,7 @@
import * as util from "../../util";
export default function (Parent) {
- var Constructor = function () {
+ let Constructor = function () {
this.noInteropRequireImport = true;
this.noInteropRequireExport = true;
Parent.apply(this, arguments);
diff --git a/packages/babel-core/src/transformation/modules/amd.js b/packages/babel-core/src/transformation/modules/amd.js
index 3a5f5c4341..6f2a1319a4 100644
--- a/packages/babel-core/src/transformation/modules/amd.js
+++ b/packages/babel-core/src/transformation/modules/amd.js
@@ -11,8 +11,8 @@ export default class AMDFormatter extends DefaultFormatter {
}
buildDependencyLiterals() {
- var names = [];
- for (var name in this.ids) {
+ let names = [];
+ for (let name in this.ids) {
names.push(t.stringLiteral(name));
}
return names;
@@ -25,28 +25,28 @@ export default class AMDFormatter extends DefaultFormatter {
transform(program) {
CommonFormatter.prototype.transform.apply(this, arguments);
- var body = program.body;
+ let body = program.body;
// build an array of module names
- var names = [t.stringLiteral("exports")];
+ let names = [t.stringLiteral("exports")];
if (this.passModuleArg) names.push(t.stringLiteral("module"));
names = names.concat(this.buildDependencyLiterals());
names = t.arrayExpression(names);
// build up define container
- var params = values(this.ids);
+ let params = values(this.ids);
if (this.passModuleArg) params.unshift(t.identifier("module"));
params.unshift(t.identifier("exports"));
- var container = t.functionExpression(null, params, t.blockStatement(body));
+ let container = t.functionExpression(null, params, t.blockStatement(body));
- var defineArgs = [names, container];
- var moduleName = this.getModuleName();
+ let defineArgs = [names, container];
+ let moduleName = this.getModuleName();
if (moduleName) defineArgs.unshift(t.stringLiteral(moduleName));
- var call = t.callExpression(t.identifier("define"), defineArgs);
+ let call = t.callExpression(t.identifier("define"), defineArgs);
program.body = [t.expressionStatement(call)];
}
@@ -73,8 +73,8 @@ export default class AMDFormatter extends DefaultFormatter {
}
importSpecifier(specifier, node, nodes, scope) {
- var key = node.source.value;
- var ref = this.getExternalReference(node);
+ let key = node.source.value;
+ let ref = this.getExternalReference(node);
if (t.isImportNamespaceSpecifier(specifier) || t.isImportDefaultSpecifier(specifier)) {
this.defaultIds[key] = specifier.local;
@@ -90,14 +90,14 @@ export default class AMDFormatter extends DefaultFormatter {
// import * as bar from "foo";
} else if (!includes(this.file.dynamicImported, node) && t.isSpecifierDefault(specifier) && !this.noInteropRequireImport) {
// import foo from "foo";
- var uid = scope.generateUidIdentifier(specifier.local.name);
+ let uid = scope.generateUidIdentifier(specifier.local.name);
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(uid, t.callExpression(this.file.addHelper("interop-require-default"), [ref]))
]));
ref = t.memberExpression(uid, t.identifier("default"));
} else {
// import { foo } from "foo";
- var imported = specifier.imported;
+ let imported = specifier.imported;
if (t.isSpecifierDefault(specifier)) imported = t.identifier("default");
ref = t.memberExpression(ref, imported);
}
@@ -124,8 +124,8 @@ export default class AMDFormatter extends DefaultFormatter {
if (this.doDefaultExportInterop(node)) {
this.passModuleArg = true;
- var declar = node.declaration;
- var assign = util.template("exports-default-assign", {
+ let declar = node.declaration;
+ let assign = util.template("exports-default-assign", {
VALUE: this._pushStatement(declar, nodes)
}, true);
diff --git a/packages/babel-core/src/transformation/modules/common.js b/packages/babel-core/src/transformation/modules/common.js
index b6b18acf0c..1f81d20b68 100644
--- a/packages/babel-core/src/transformation/modules/common.js
+++ b/packages/babel-core/src/transformation/modules/common.js
@@ -8,16 +8,16 @@ export default class CommonJSFormatter extends DefaultFormatter {
}
_setup(conditional) {
- var file = this.file;
- var scope = file.scope;
+ let file = this.file;
+ let scope = file.scope;
scope.rename("module");
scope.rename("exports");
if (!this.noInteropRequireImport && conditional) {
- var templateName = "exports-module-declaration";
+ let templateName = "exports-module-declaration";
if (this.file.isLoose("es6.modules")) templateName += "-loose";
- var declar = util.template(templateName, true);
+ let declar = util.template(templateName, true);
declar._blockHoist = 3;
file.path.unshiftContainer("body", [declar]);
}
@@ -38,9 +38,9 @@ export default class CommonJSFormatter extends DefaultFormatter {
}
importSpecifier(specifier, node, nodes, scope) {
- var variableName = specifier.local;
+ let variableName = specifier.local;
- var ref = this.getExternalReference(node, nodes);
+ let ref = this.getExternalReference(node, nodes);
// import foo from "foo";
if (t.isSpecifierDefault(specifier)) {
@@ -51,7 +51,7 @@ export default class CommonJSFormatter extends DefaultFormatter {
} else if (this.noInteropRequireImport) {
this.remaps.add(scope, variableName.name, t.memberExpression(ref, t.identifier("default")));
} else {
- var uid = this.scope.generateUidIdentifierBasedOnNode(node, "import");
+ let uid = this.scope.generateUidIdentifierBasedOnNode(node, "import");
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(uid, t.callExpression(this.file.addHelper("interop-require-default"), [ref]))
@@ -101,8 +101,8 @@ export default class CommonJSFormatter extends DefaultFormatter {
}
_getExternalReference(node, nodes) {
- var call = t.callExpression(t.identifier("require"), [node.source]);
- var uid;
+ let call = t.callExpression(t.identifier("require"), [node.source]);
+ let uid;
if (this.isModuleType(node, "absolute")) {
// absolute module reference
@@ -114,7 +114,7 @@ export default class CommonJSFormatter extends DefaultFormatter {
uid = uid || node.specifiers[0].local;
- var declar = t.variableDeclaration("var", [
+ let declar = t.variableDeclaration("var", [
t.variableDeclarator(uid, call)
]);
nodes.push(declar);
diff --git a/packages/babel-core/src/transformation/modules/ignore.js b/packages/babel-core/src/transformation/modules/ignore.js
index aaef9dfb27..98056791a7 100644
--- a/packages/babel-core/src/transformation/modules/ignore.js
+++ b/packages/babel-core/src/transformation/modules/ignore.js
@@ -3,7 +3,7 @@ import * as t from "babel-types";
export default class IgnoreFormatter extends DefaultFormatter {
exportDeclaration(node, nodes) {
- var declar = t.toStatement(node.declaration, true);
+ let declar = t.toStatement(node.declaration, true);
if (declar) nodes.push(t.inherits(declar, node));
}
diff --git a/packages/babel-core/src/transformation/modules/lib/metadata.js b/packages/babel-core/src/transformation/modules/lib/metadata.js
index e22f9aa0a0..4d248ada07 100644
--- a/packages/babel-core/src/transformation/modules/lib/metadata.js
+++ b/packages/babel-core/src/transformation/modules/lib/metadata.js
@@ -1,7 +1,7 @@
import extend from "lodash/object/extend";
import * as t from "babel-types";
-export var ModuleDeclaration = {
+export let ModuleDeclaration = {
enter(node, parent, scope, formatter) {
if (node.source) {
node.source.value = formatter.file.resolveModuleSource(node.source.value);
@@ -10,23 +10,23 @@ export var ModuleDeclaration = {
}
};
-export var ImportDeclaration = {
+export let ImportDeclaration = {
exit(node, parent, scope, formatter) {
formatter.hasLocalImports = true;
- var specifiers = [];
- var imported = [];
+ let specifiers = [];
+ let imported = [];
formatter.metadata.imports.push({
source: node.source.value,
imported,
specifiers
});
- for (var specifier of (this.get("specifiers"): Array)) {
- var ids = specifier.getBindingIdentifiers();
+ for (let specifier of (this.get("specifiers"): Array)) {
+ let ids = specifier.getBindingIdentifiers();
extend(formatter.localImports, ids);
- var local = specifier.node.local.name;
+ let local = specifier.node.local.name;
if (specifier.isImportDefaultSpecifier()) {
imported.push("default");
@@ -38,7 +38,7 @@ export var ImportDeclaration = {
}
if (specifier.isImportSpecifier()) {
- var importedName = specifier.node.imported.name;
+ let importedName = specifier.node.imported.name;
imported.push(importedName);
specifiers.push({
kind: "named",
@@ -61,17 +61,17 @@ export var ImportDeclaration = {
export function ExportDeclaration(node, parent, scope, formatter) {
formatter.hasLocalExports = true;
- var source = node.source ? node.source.value : null;
- var exports = formatter.metadata.exports;
+ let source = node.source ? node.source.value : null;
+ let exports = formatter.metadata.exports;
// export function foo() {}
- // export var foo = "bar";
- var declar = this.get("declaration");
+ // export let foo = "bar";
+ let declar = this.get("declaration");
if (declar.isStatement()) {
- var bindings = declar.getBindingIdentifiers();
+ let bindings = declar.getBindingIdentifiers();
- for (var name in bindings) {
- var binding = bindings[name];
+ for (let name in bindings) {
+ let binding = bindings[name];
formatter._addExport(name, binding);
exports.exported.push(name);
@@ -84,8 +84,8 @@ export function ExportDeclaration(node, parent, scope, formatter) {
}
if (this.isExportNamedDeclaration() && node.specifiers) {
- for (var specifier of (node.specifiers: Array)) {
- var exported = specifier.exported.name;
+ for (let specifier of (node.specifiers: Array)) {
+ let exported = specifier.exported.name;
exports.exported.push(exported);
// export foo from "bar";
@@ -107,7 +107,7 @@ export function ExportDeclaration(node, parent, scope, formatter) {
});
}
- var local = specifier.local;
+ let local = specifier.local;
if (!local) continue;
formatter._addExport(local.name, specifier.exported);
@@ -144,7 +144,7 @@ export function ExportDeclaration(node, parent, scope, formatter) {
}
if (!t.isExportDefaultDeclaration(node) && !declar.isTypeAlias()) {
- var onlyDefault = node.specifiers && node.specifiers.length === 1 && t.isSpecifierDefault(node.specifiers[0]);
+ let onlyDefault = node.specifiers && node.specifiers.length === 1 && t.isSpecifierDefault(node.specifiers[0]);
if (!onlyDefault) {
formatter.hasNonDefaultExports = true;
}
diff --git a/packages/babel-core/src/transformation/modules/lib/remaps.js b/packages/babel-core/src/transformation/modules/lib/remaps.js
index dcd4737124..9e8ee531a3 100644
--- a/packages/babel-core/src/transformation/modules/lib/remaps.js
+++ b/packages/babel-core/src/transformation/modules/lib/remaps.js
@@ -1,6 +1,6 @@
import * as t from "babel-types";
-var remapVisitor = {
+let remapVisitor = {
enter(node) {
if (node._skipModulesRemap) {
return this.skip();
@@ -8,9 +8,9 @@ var remapVisitor = {
},
ReferencedIdentifier(node, parent, scope, remaps) {
- var { formatter } = remaps;
+ let { formatter } = remaps;
- var remap = remaps.get(scope, node.name);
+ let remap = remaps.get(scope, node.name);
if (!remap || node === remap) return;
if (!scope.hasBinding(node.name) ||
@@ -26,7 +26,7 @@ var remapVisitor = {
AssignmentExpression: {
exit(node, parent, scope, { formatter }) {
if (!node._ignoreModulesRemap) {
- var exported = formatter.getExport(node.left, scope);
+ let exported = formatter.getExport(node.left, scope);
if (exported) {
return formatter.remapExportAssignment(node, exported);
}
@@ -35,26 +35,26 @@ var remapVisitor = {
},
UpdateExpression(node, parent, scope, { formatter }) {
- var exported = formatter.getExport(node.argument, scope);
+ let exported = formatter.getExport(node.argument, scope);
if (!exported) return;
this.skip();
// expand to long file assignment expression
- var assign = t.assignmentExpression(node.operator[0] + "=", node.argument, t.numberLiteral(1));
+ let assign = t.assignmentExpression(node.operator[0] + "=", node.argument, t.numberLiteral(1));
// remap this assignment expression
- var remapped = formatter.remapExportAssignment(assign, exported);
+ let remapped = formatter.remapExportAssignment(assign, exported);
// we don't need to change the result
if (t.isExpressionStatement(parent) || node.prefix) {
return remapped;
}
- var nodes = [];
+ let nodes = [];
nodes.push(remapped);
- var operator;
+ let operator;
if (node.operator === "--") {
operator = "+";
} else { // "++"
@@ -112,7 +112,7 @@ export default class Remaps {
clearAll() {
if (this.all) {
- for (var remap of (this.all: Array)) {
+ for (let remap of (this.all: Array)) {
remap.scope.removeData(this._getKey(remap.name));
}
}
diff --git a/packages/babel-core/src/transformation/modules/system.js b/packages/babel-core/src/transformation/modules/system.js
index a5b051efe3..18817b5600 100644
--- a/packages/babel-core/src/transformation/modules/system.js
+++ b/packages/babel-core/src/transformation/modules/system.js
@@ -5,7 +5,7 @@ import last from "lodash/array/last";
import map from "lodash/collection/map";
import * as t from "babel-types";
-var hoistVariablesVisitor = {
+let hoistVariablesVisitor = {
Function(path) {
// nothing inside is accessible
path.skip();
@@ -20,19 +20,19 @@ var hoistVariablesVisitor = {
// ignore block hoisted nodes as these can be left in
if (state.formatter._canHoist(node)) return;
- var nodes = [];
+ let nodes = [];
- for (var i = 0; i < node.declarations.length; i++) {
- var declar = node.declarations[i];
+ for (let i = 0; i < node.declarations.length; i++) {
+ let declar = node.declarations[i];
state.hoistDeclarators.push(t.variableDeclarator(declar.id));
if (declar.init) {
// no initializer so we can just hoist it as-is
- var assign = t.expressionStatement(t.assignmentExpression("=", declar.id, declar.init));
+ let assign = t.expressionStatement(t.assignmentExpression("=", declar.id, declar.init));
nodes.push(assign);
}
}
- // for (var i in test)
+ // for (let i in test)
if (t.isFor(parent) && parent.left === node) {
return node.declarations[0].id;
}
@@ -41,7 +41,7 @@ var hoistVariablesVisitor = {
}
};
-var hoistFunctionsVisitor = {
+let hoistFunctionsVisitor = {
Function(path) {
path.skip();
},
@@ -54,13 +54,13 @@ var hoistFunctionsVisitor = {
}
};
-var runnerSettersVisitor = {
+let runnerSettersVisitor = {
enter(path, state) {
- var { node } = path;
+ let { node } = path;
if (node._importSource === state.source) {
if (t.isVariableDeclaration(node)) {
- for (var declar of (node.declarations: Array)) {
+ for (let declar of (node.declarations: Array)) {
state.hoistDeclarators.push(t.variableDeclarator(declar.id));
state.nodes.push(t.expressionStatement(
t.assignmentExpression("=", declar.id, declar.init)
@@ -93,16 +93,16 @@ export default class SystemFormatter extends AMDFormatter {
}
buildExportsWildcard(objectIdentifier, node) {
- var leftIdentifier = this.scope.generateUidIdentifier("key");
- var valIdentifier = t.memberExpression(objectIdentifier, leftIdentifier, true);
+ let leftIdentifier = this.scope.generateUidIdentifier("key");
+ let valIdentifier = t.memberExpression(objectIdentifier, leftIdentifier, true);
- var left = t.variableDeclaration("var", [
+ let left = t.variableDeclaration("var", [
t.variableDeclarator(leftIdentifier)
]);
- var right = objectIdentifier;
+ let right = objectIdentifier;
- var block = t.blockStatement([
+ let block = t.blockStatement([
t.ifStatement(
t.binaryExpression("!==", leftIdentifier, t.stringLiteral("default")),
t.expressionStatement(this._buildExportCall(leftIdentifier, valIdentifier))
@@ -113,7 +113,7 @@ export default class SystemFormatter extends AMDFormatter {
}
buildExportsAssignment(id, init, node) {
- var call = this._buildExportCall(t.stringLiteral(id.name), init, true);
+ let call = this._buildExportCall(t.stringLiteral(id.name), init, true);
return this._addImportSource(call, node);
}
@@ -122,9 +122,9 @@ export default class SystemFormatter extends AMDFormatter {
}
remapExportAssignment(node, exported) {
- var assign = node;
+ let assign = node;
- for (var i = 0; i < exported.length; i++) {
+ for (let i = 0; i < exported.length; i++) {
assign = this._buildExportCall(t.stringLiteral(exported[i].name), assign);
}
@@ -132,7 +132,7 @@ export default class SystemFormatter extends AMDFormatter {
}
_buildExportCall(id, init, isStatement) {
- var call = t.callExpression(this.exportIdentifier, [id, init]);
+ let call = t.callExpression(this.exportIdentifier, [id, init]);
if (isStatement) {
return t.expressionStatement(call);
} else {
@@ -143,7 +143,7 @@ export default class SystemFormatter extends AMDFormatter {
importSpecifier(specifier, node, nodes) {
AMDFormatter.prototype.importSpecifier.apply(this, arguments);
- for (var remap of (this.remaps.getAll(): Array)) {
+ for (let remap of (this.remaps.getAll(): Array)) {
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(t.identifier(remap.name), remap.node)
]));
@@ -155,10 +155,10 @@ export default class SystemFormatter extends AMDFormatter {
}
_buildRunnerSetters(block, hoistDeclarators) {
- var scope = this.file.scope;
+ let scope = this.file.scope;
return t.arrayExpression(map(this.ids, function (uid, source) {
- var state = {
+ let state = {
hoistDeclarators: hoistDeclarators,
source: source,
nodes: []
@@ -177,16 +177,16 @@ export default class SystemFormatter extends AMDFormatter {
transform(program) {
DefaultFormatter.prototype.transform.apply(this, arguments);
- var hoistDeclarators = [];
- var moduleName = this.getModuleName();
- var moduleNameLiteral = t.stringLiteral(moduleName);
+ let hoistDeclarators = [];
+ let moduleName = this.getModuleName();
+ let moduleNameLiteral = t.stringLiteral(moduleName);
- var block = t.blockStatement(program.body);
+ let block = t.blockStatement(program.body);
- var setterListNode = this._buildRunnerSetters(block, hoistDeclarators);
+ let setterListNode = this._buildRunnerSetters(block, hoistDeclarators);
this._setters = setterListNode;
- var runner = util.template("system", {
+ let runner = util.template("system", {
MODULE_DEPENDENCIES: t.arrayExpression(this.buildDependencyLiterals()),
EXPORT_IDENTIFIER: this.exportIdentifier,
MODULE_NAME: moduleNameLiteral,
@@ -194,10 +194,10 @@ export default class SystemFormatter extends AMDFormatter {
EXECUTE: t.functionExpression(null, [], block)
}, true);
- var handlerBody = runner.expression.arguments[2].body.body;
+ let handlerBody = runner.expression.arguments[2].body.body;
if (!moduleName) runner.expression.arguments.shift();
- var returnStatement = handlerBody.pop();
+ let returnStatement = handlerBody.pop();
// hoist up all variable declarations
this.file.scope.traverse(block, hoistVariablesVisitor, {
@@ -206,7 +206,7 @@ export default class SystemFormatter extends AMDFormatter {
});
if (hoistDeclarators.length) {
- var hoistDeclar = t.variableDeclaration("var", hoistDeclarators);
+ let hoistDeclar = t.variableDeclaration("var", hoistDeclarators);
hoistDeclar._blockHoist = true;
handlerBody.unshift(hoistDeclar);
}
diff --git a/packages/babel-core/src/transformation/modules/umd.js b/packages/babel-core/src/transformation/modules/umd.js
index a6f83c1911..60244a8fb2 100644
--- a/packages/babel-core/src/transformation/modules/umd.js
+++ b/packages/babel-core/src/transformation/modules/umd.js
@@ -9,38 +9,38 @@ export default class UMDFormatter extends AMDFormatter {
transform(program) {
DefaultFormatter.prototype.transform.apply(this, arguments);
- var body = program.body;
+ let body = program.body;
// build an array of module names
- var names = [];
+ let names = [];
for (let name in this.ids) {
names.push(t.stringLiteral(name));
}
// factory
- var ids = values(this.ids);
- var args = [t.identifier("exports")];
+ let ids = values(this.ids);
+ let args = [t.identifier("exports")];
if (this.passModuleArg) args.push(t.identifier("module"));
args = args.concat(ids);
- var factory = t.functionExpression(null, args, t.blockStatement(body));
+ let factory = t.functionExpression(null, args, t.blockStatement(body));
// amd
- var defineArgs = [t.stringLiteral("exports")];
+ let defineArgs = [t.stringLiteral("exports")];
if (this.passModuleArg) defineArgs.push(t.stringLiteral("module"));
defineArgs = defineArgs.concat(names);
defineArgs = [t.arrayExpression(defineArgs)];
// common
- var testExports = util.template("test-exports");
- var testModule = util.template("test-module");
- var commonTests = this.passModuleArg ? t.logicalExpression("&&", testExports, testModule) : testExports;
+ let testExports = util.template("test-exports");
+ let testModule = util.template("test-module");
+ let commonTests = this.passModuleArg ? t.logicalExpression("&&", testExports, testModule) : testExports;
- var commonArgs = [t.identifier("exports")];
+ let commonArgs = [t.identifier("exports")];
if (this.passModuleArg) commonArgs.push(t.identifier("module"));
commonArgs = commonArgs.concat(names.map(function (name) {
return t.callExpression(t.identifier("require"), [name]);
@@ -48,25 +48,25 @@ export default class UMDFormatter extends AMDFormatter {
// globals
- var browserArgs = [];
+ let browserArgs = [];
if (this.passModuleArg) browserArgs.push(t.identifier("mod"));
for (let name in this.ids) {
- var id = this.defaultIds[name] || t.identifier(t.toIdentifier(path.basename(name, path.extname(name))));
+ let id = this.defaultIds[name] || t.identifier(t.toIdentifier(path.basename(name, path.extname(name))));
browserArgs.push(t.memberExpression(t.identifier("global"), id));
}
//
- var moduleName = this.getModuleName();
+ let moduleName = this.getModuleName();
if (moduleName) defineArgs.unshift(t.stringLiteral(moduleName));
//
- var globalArg = this.file.opts.basename;
+ let globalArg = this.file.opts.basename;
if (moduleName) globalArg = moduleName;
globalArg = t.identifier(t.toIdentifier(globalArg));
- var runner = util.template("umd-runner-body", {
+ let runner = util.template("umd-runner-body", {
AMD_ARGUMENTS: defineArgs,
COMMON_TEST: commonTests,
COMMON_ARGUMENTS: commonArgs,
diff --git a/packages/babel-core/src/transformation/pipeline.js b/packages/babel-core/src/transformation/pipeline.js
index 460861ef74..9b7abaf207 100644
--- a/packages/babel-core/src/transformation/pipeline.js
+++ b/packages/babel-core/src/transformation/pipeline.js
@@ -9,7 +9,7 @@ export default class Pipeline {
}
pretransform(code: string, opts?: Object) {
- var file = new File(opts, this);
+ let file = new File(opts, this);
return file.wrap(code, function () {
file.addCode(code);
file.parseCode(code);
@@ -18,7 +18,7 @@ export default class Pipeline {
}
transform(code: string, opts?: Object) {
- var file = new File(opts, this);
+ let file = new File(opts, this);
return file.wrap(code, function () {
file.addCode(code);
file.parseCode(code);
@@ -29,7 +29,7 @@ export default class Pipeline {
transformFromAst(ast, code, opts) {
ast = normalizeAst(ast);
- var file = new File(opts, this);
+ let file = new File(opts, this);
return file.wrap(code, function () {
file.addCode(code);
file.addAst(ast);
diff --git a/packages/babel-core/src/transformation/plugin-pass.js b/packages/babel-core/src/transformation/plugin-pass.js
index c1b560041c..5ef78e0a69 100644
--- a/packages/babel-core/src/transformation/plugin-pass.js
+++ b/packages/babel-core/src/transformation/plugin-pass.js
@@ -10,7 +10,7 @@ export default class PluginPass {
}
transform() {
- var file = this.file;
+ let file = this.file;
file.log.debug(`Start transformer ${this.key}`);
traverse(file.ast, this.plugin.visitor, file.scope, file);
file.log.debug(`Finish transformer ${this.key}`);
diff --git a/packages/babel-core/src/transformation/plugin.js b/packages/babel-core/src/transformation/plugin.js
index c960ffbda1..1ba7c3b135 100644
--- a/packages/babel-core/src/transformation/plugin.js
+++ b/packages/babel-core/src/transformation/plugin.js
@@ -8,7 +8,7 @@ export default class Plugin {
plugin = this.raw = assign({}, plugin);
function take(key) {
- var val = plugin[key];
+ let val = plugin[key];
delete plugin[key];
return val;
}
diff --git a/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js b/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js
index d326bdf0b8..344e1d081b 100644
--- a/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js
+++ b/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js
@@ -8,7 +8,7 @@ import * as t from "babel-types";
* **In**
*
* ```javascript
- * var foo = {
+ * let foo = {
* get bar() {
* return "bar";
* }
@@ -18,7 +18,7 @@ import * as t from "babel-types";
* **Out**
*
* ```javascript
- * var foo = Object.defineProperties({}, {
+ * let foo = Object.defineProperties({}, {
* bar: {
* get: function () {
* return "bar";
@@ -30,7 +30,7 @@ import * as t from "babel-types";
* ```
*/
-export var visitor = {
+export let visitor = {
/**
* Look for getters and setters on an object.
* Filter them out and wrap the object with an `Object.defineProperties` that
@@ -38,8 +38,8 @@ export var visitor = {
*/
ObjectExpression(node, parent, scope, file) {
- var hasAny = false;
- for (var prop of (node.properties: Array)) {
+ let hasAny = false;
+ for (let prop of (node.properties: Array)) {
if (prop.kind === "get" || prop.kind === "set") {
hasAny = true;
break;
@@ -47,7 +47,7 @@ export var visitor = {
}
if (!hasAny) return;
- var mutatorMap = {};
+ let mutatorMap = {};
node.properties = node.properties.filter(function (prop) {
if (prop.kind === "get" || prop.kind === "set") {
diff --git a/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js b/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js
index 435406b0b9..71691c584f 100644
--- a/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js
+++ b/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js
@@ -15,8 +15,8 @@ function isLet(node, parent) {
// https://github.com/babel/babel/issues/255
if (isLetInitable(node, parent)) {
- for (var i = 0; i < node.declarations.length; i++) {
- var declar = node.declarations[i];
+ for (let i = 0; i < node.declarations.length; i++) {
+ let declar = node.declarations[i];
declar.init = declar.init || scope.buildUndefinedNode();
}
}
@@ -35,26 +35,26 @@ function isVar(node, parent, scope) {
}
function standardizeLets(declars) {
- for (var declar of (declars: Array)) {
+ for (let declar of (declars: Array)) {
delete declar._let;
}
}
-export var metadata = {
+export let metadata = {
group: "builtin-advanced"
};
-export var visitor = {
+export let visitor = {
VariableDeclaration(node, parent, scope, file) {
if (!isLet(node, parent, scope)) return;
if (isLetInitable(node) && node._tdzThis) {
- var nodes = [node];
+ let nodes = [node];
- for (var i = 0; i < node.declarations.length; i++) {
- var decl = node.declarations[i];
+ for (let i = 0; i < node.declarations.length; i++) {
+ let decl = node.declarations[i];
if (decl.init) {
- var assign = t.assignmentExpression("=", decl.id, decl.init);
+ let assign = t.assignmentExpression("=", decl.id, decl.init);
assign._ignoreBlockScopingTDZ = true;
nodes.push(t.expressionStatement(assign));
}
@@ -74,29 +74,29 @@ export var visitor = {
},
Loop(node, parent, scope, file) {
- var init = node.left || node.init;
+ let init = node.left || node.init;
if (isLet(init, node, scope)) {
t.ensureBlock(node);
node.body._letDeclarators = [init];
}
- var blockScoping = new BlockScoping(this, this.get("body"), parent, scope, file);
+ let blockScoping = new BlockScoping(this, this.get("body"), parent, scope, file);
return blockScoping.run();
},
"BlockStatement|Program"(block, parent, scope, file) {
if (!t.isLoop(parent)) {
- var blockScoping = new BlockScoping(null, this, parent, scope, file);
+ let blockScoping = new BlockScoping(null, this, parent, scope, file);
blockScoping.run();
}
}
};
function replace(node, parent, scope, remaps) {
- var remap = remaps[node.name];
+ let remap = remaps[node.name];
if (!remap) return;
- var ownBinding = scope.getBindingIdentifier(node.name);
+ let ownBinding = scope.getBindingIdentifier(node.name);
if (ownBinding === remap.binding) {
node.name = remap.uid;
} else {
@@ -106,12 +106,12 @@ function replace(node, parent, scope, remaps) {
}
}
-var replaceVisitor = {
+let replaceVisitor = {
ReferencedIdentifier: replace,
AssignmentExpression(node, parent, scope, remaps) {
- var ids = this.getBindingIdentifiers();
- for (var name in ids) {
+ let ids = this.getBindingIdentifiers();
+ for (let name in ids) {
replace(ids[name], node, scope, remaps);
}
},
@@ -123,8 +123,8 @@ function traverseReplace(node, parent, scope, remaps) {
}
if (t.isAssignmentExpression(node)) {
- var ids = t.getBindingIdentifiers(node);
- for (var name in ids) {
+ let ids = t.getBindingIdentifiers(node);
+ for (let name in ids) {
replace(ids[name], parent, scope, remaps);
}
}
@@ -132,34 +132,34 @@ function traverseReplace(node, parent, scope, remaps) {
scope.traverse(node, replaceVisitor, remaps);
}
-var letReferenceBlockVisitor = traverse.visitors.merge([{
+let letReferenceBlockVisitor = traverse.visitors.merge([{
Function(node, parent, scope, state) {
this.traverse(letReferenceFunctionVisitor, state);
return this.skip();
}
}, tdzVisitor]);
-var letReferenceFunctionVisitor = traverse.visitors.merge([{
+let letReferenceFunctionVisitor = traverse.visitors.merge([{
ReferencedIdentifier(node, parent, scope, state) {
- var ref = state.letReferences[node.name];
+ let ref = state.letReferences[node.name];
// not a part of our scope
if (!ref) return;
// this scope has a variable with the same name so it couldn't belong
// to our let scope
- var localBinding = scope.getBindingIdentifier(node.name);
+ let localBinding = scope.getBindingIdentifier(node.name);
if (localBinding && localBinding !== ref) return;
state.closurify = true;
}
}, tdzVisitor]);
-var hoistVarDeclarationsVisitor = {
+let hoistVarDeclarationsVisitor = {
enter(node, parent, scope, self) {
if (this.isForStatement()) {
if (isVar(node.init, node, scope)) {
- var nodes = self.pushDeclar(node.init);
+ let nodes = self.pushDeclar(node.init);
if (nodes.length === 1) {
node.init = nodes[0];
} else {
@@ -179,17 +179,17 @@ var hoistVarDeclarationsVisitor = {
}
};
-var loopLabelVisitor = {
+let loopLabelVisitor = {
LabeledStatement(node, parent, scope, state) {
state.innerLabels.push(node.label.name);
}
};
-var continuationVisitor = {
+let continuationVisitor = {
enter(node, parent, scope, state) {
if (this.isAssignmentExpression() || this.isUpdateExpression()) {
- var bindings = this.getBindingIdentifiers();
- for (var name in bindings) {
+ let bindings = this.getBindingIdentifiers();
+ for (let name in bindings) {
if (state.outsideReferences[name] !== scope.getBindingIdentifier(name)) continue;
state.reassignments[name] = true;
}
@@ -205,9 +205,9 @@ function loopNodeTo(node) {
}
}
-var loopVisitor = {
+let loopVisitor = {
Loop(node, parent, scope, state) {
- var oldIgnoreLabeless = state.ignoreLabeless;
+ let oldIgnoreLabeless = state.ignoreLabeless;
state.ignoreLabeless = true;
this.traverse(loopVisitor, state);
state.ignoreLabeless = oldIgnoreLabeless;
@@ -219,7 +219,7 @@ var loopVisitor = {
},
SwitchCase(node, parent, scope, state) {
- var oldInSwitchCase = state.inSwitchCase;
+ let oldInSwitchCase = state.inSwitchCase;
state.inSwitchCase = true;
this.traverse(loopVisitor, state);
state.inSwitchCase = oldInSwitchCase;
@@ -227,8 +227,8 @@ var loopVisitor = {
},
"BreakStatement|ContinueStatement|ReturnStatement"(node, parent, scope, state) {
- var replace;
- var loopText = loopNodeTo(node);
+ let replace;
+ let loopText = loopNodeTo(node);
if (loopText) {
if (node.label) {
@@ -297,11 +297,11 @@ class BlockScoping {
*/
run() {
- var block = this.block;
+ let block = this.block;
if (block._letDone) return;
block._letDone = true;
- var needsClosure = this.getLetReferences();
+ let needsClosure = this.getLetReferences();
// this is a block within a `Function/Program` so we can safely leave it be
if (t.isFunction(this.parent) || t.isProgram(this.block)) return;
@@ -321,24 +321,24 @@ class BlockScoping {
}
remap() {
- var hasRemaps = false;
- var letRefs = this.letReferences;
- var scope = this.scope;
+ let hasRemaps = false;
+ let letRefs = this.letReferences;
+ let scope = this.scope;
// alright, so since we aren't wrapping this block in a closure
// we have to check if any of our let variables collide with
// those in upper scopes and then if they do, generate a uid
// for them and replace all references with it
- var remaps = Object.create(null);
+ let remaps = Object.create(null);
- for (var key in letRefs) {
+ for (let key in letRefs) {
// just an Identifier node we collected in `getLetReferences`
// this is the defining identifier of a declaration
- var ref = letRefs[key];
+ let ref = letRefs[key];
// todo: could skip this if the colliding binding is in another function
if (scope.parentHasBinding(key) || scope.hasGlobal(key)) {
- var uid = scope.generateUidIdentifier(ref.name).name;
+ let uid = scope.generateUidIdentifier(ref.name).name;
ref.name = uid;
hasRemaps = true;
@@ -353,7 +353,7 @@ class BlockScoping {
//
- var loop = this.loop;
+ let loop = this.loop;
if (loop) {
traverseReplace(loop.right, loop, scope, remaps);
traverseReplace(loop.test, loop, scope, remaps);
@@ -364,14 +364,14 @@ class BlockScoping {
}
wrapClosure() {
- var block = this.block;
+ let block = this.block;
- var outsideRefs = this.outsideLetReferences;
+ let outsideRefs = this.outsideLetReferences;
// remap loop heads with colliding variables
if (this.loop) {
- for (var name in outsideRefs) {
- var id = outsideRefs[name];
+ for (let name in outsideRefs) {
+ let id = outsideRefs[name];
if (this.scope.hasGlobal(id.name) || this.scope.parentHasBinding(id.name)) {
delete outsideRefs[id.name];
@@ -389,15 +389,15 @@ class BlockScoping {
// `break`s, `continue`s, `return`s etc
this.has = this.checkLoop();
- // hoist var references to retain scope
+ // hoist let references to retain scope
this.hoistVarDeclarations();
// turn outsideLetReferences into an array
- var params = values(outsideRefs);
- var args = values(outsideRefs);
+ let params = values(outsideRefs);
+ let args = values(outsideRefs);
// build the closure that we're going to wrap the block with
- var fn = t.functionExpression(null, params, t.blockStatement(block.body));
+ let fn = t.functionExpression(null, params, t.blockStatement(block.body));
fn.shadow = true;
// continuation
@@ -406,7 +406,7 @@ class BlockScoping {
// replace the current block body with the one we're going to build
block.body = this.body;
- var ref = fn;
+ let ref = fn;
if (this.loop) {
ref = this.scope.generateUidIdentifier("loop");
@@ -416,18 +416,18 @@ class BlockScoping {
}
// build a call and a unique id that we can assign the return value to
- var call = t.callExpression(ref, args);
- var ret = this.scope.generateUidIdentifier("ret");
+ let call = t.callExpression(ref, args);
+ let ret = this.scope.generateUidIdentifier("ret");
// handle generators
- var hasYield = traverse.hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES);
+ let hasYield = traverse.hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES);
if (hasYield) {
fn.generator = true;
call = t.yieldExpression(call, true);
}
// handlers async functions
- var hasAsync = traverse.hasType(fn.body, this.scope, "AwaitExpression", t.FUNCTION_TYPES);
+ let hasAsync = traverse.hasType(fn.body, this.scope, "AwaitExpression", t.FUNCTION_TYPES);
if (hasAsync) {
fn.async = true;
call = t.awaitExpression(call);
@@ -441,7 +441,7 @@ class BlockScoping {
*/
buildClosure(ret: { type: "Identifier" }, call: { type: "CallExpression" }) {
- var has = this.has;
+ let has = this.has;
if (has.hasReturn || has.hasBreakContinue) {
this.buildHas(ret, call);
} else {
@@ -458,18 +458,18 @@ class BlockScoping {
*/
addContinuations(fn) {
- var state = {
+ let state = {
reassignments: {},
outsideReferences: this.outsideLetReferences
};
this.scope.traverse(fn, continuationVisitor, state);
- for (var i = 0; i < fn.params.length; i++) {
- var param = fn.params[i];
+ for (let i = 0; i < fn.params.length; i++) {
+ let param = fn.params[i];
if (!state.reassignments[param.name]) continue;
- var newParam = this.scope.generateUidIdentifier(param.name);
+ let newParam = this.scope.generateUidIdentifier(param.name);
fn.params[i] = newParam;
this.scope.rename(param.name, newParam.name, fn);
@@ -480,9 +480,9 @@ class BlockScoping {
}
getLetReferences() {
- var block = this.block;
+ let block = this.block;
- var declarators = block._letDeclarators || [];
+ let declarators = block._letDeclarators || [];
//
for (let i = 0; i < declarators.length; i++) {
@@ -503,7 +503,7 @@ class BlockScoping {
//
for (let i = 0; i < declarators.length; i++) {
let declar = declarators[i];
- var keys = t.getBindingIdentifiers(declar);
+ let keys = t.getBindingIdentifiers(declar);
extend(this.letReferences, keys);
this.hasLetReferences = true;
}
@@ -511,10 +511,10 @@ class BlockScoping {
// no let references so we can just quit
if (!this.hasLetReferences) return;
- // set let references to plain var references
+ // set let references to plain let references
standardizeLets(declarators);
- var state = {
+ let state = {
letReferences: this.letReferences,
closurify: false,
file: this.file
@@ -535,7 +535,7 @@ class BlockScoping {
*/
checkLoop(): Object {
- var state = {
+ let state = {
hasBreakContinue: false,
ignoreLabeless: false,
inSwitchCase: false,
@@ -552,7 +552,7 @@ class BlockScoping {
}
/**
- * Hoist all var declarations in this block to before it so they retain scope
+ * Hoist all let declarations in this block to before it so they retain scope
* once we wrap everything in a closure.
*/
@@ -566,21 +566,21 @@ class BlockScoping {
*/
pushDeclar(node: { type: "VariableDeclaration" }): Array {
- var declars = [];
- var names = t.getBindingIdentifiers(node);
- for (var name in names) {
+ let declars = [];
+ let names = t.getBindingIdentifiers(node);
+ for (let name in names) {
declars.push(t.variableDeclarator(names[name]));
}
this.body.push(t.variableDeclaration(node.kind, declars));
- var replace = [];
+ let replace = [];
- for (var i = 0; i < node.declarations.length; i++) {
- var declar = node.declarations[i];
+ for (let i = 0; i < node.declarations.length; i++) {
+ let declar = node.declarations[i];
if (!declar.init) continue;
- var expr = t.assignmentExpression("=", declar.id, declar.init);
+ let expr = t.assignmentExpression("=", declar.id, declar.init);
replace.push(t.inherits(expr, declar));
}
@@ -588,15 +588,15 @@ class BlockScoping {
}
buildHas(ret: { type: "Identifier" }, call: { type: "CallExpression" }) {
- var body = this.body;
+ let body = this.body;
body.push(t.variableDeclaration("var", [
t.variableDeclarator(ret, call)
]));
- var retCheck;
- var has = this.has;
- var cases = [];
+ let retCheck;
+ let has = this.has;
+ let cases = [];
if (has.hasReturn) {
// typeof ret === "object"
@@ -606,7 +606,7 @@ class BlockScoping {
}
if (has.hasBreakContinue) {
- for (var key in has.map) {
+ for (let key in has.map) {
cases.push(t.switchCase(t.stringLiteral(key), [has.map[key]]));
}
@@ -615,15 +615,15 @@ class BlockScoping {
}
if (cases.length === 1) {
- var single = cases[0];
+ let single = cases[0];
body.push(this.file.attachAuxiliaryComment(t.ifStatement(
t.binaryExpression("===", ret, single.test),
single.consequent[0]
)));
} else {
// https://github.com/babel/babel/issues/998
- for (var i = 0; i < cases.length; i++) {
- var caseConsequent = cases[i].consequent[0];
+ for (let i = 0; i < cases.length; i++) {
+ let caseConsequent = cases[i].consequent[0];
if (t.isBreakStatement(caseConsequent) && !caseConsequent.label) {
caseConsequent.label = this.loopLabel = this.loopLabel || this.file.scope.generateUidIdentifier("loop");
}
diff --git a/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js b/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js
index cdd254fc62..718976b6f1 100644
--- a/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js
+++ b/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js
@@ -1,7 +1,7 @@
import * as t from "babel-types";
function getTDZStatus(refPath, bindingPath) {
- var executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);
+ let executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);
if (executionStatus === "before") {
return "inside";
@@ -20,25 +20,25 @@ function buildTDZAssert(node, file) {
}
function isReference(node, scope, state) {
- var declared = state.letReferences[node.name];
+ let declared = state.letReferences[node.name];
if (!declared) return false;
// declared node is different in this scope
return scope.getBindingIdentifier(node.name) === declared;
}
-export var visitor = {
+export let visitor = {
ReferencedIdentifier(node, parent, scope, state) {
if (t.isFor(parent, { left: node })) return;
if (!isReference(node, scope, state)) return;
- var bindingPath = scope.getBinding(node.name).path;
+ let bindingPath = scope.getBinding(node.name).path;
- var status = getTDZStatus(this, bindingPath);
+ let status = getTDZStatus(this, bindingPath);
if (status === "inside") return;
if (status === "maybe") {
- var assert = buildTDZAssert(node, state.file);
+ let assert = buildTDZAssert(node, state.file);
// add tdzThis to parent variable declarator so it's exploded
bindingPath.parent._tdzThis = true;
@@ -65,11 +65,11 @@ export var visitor = {
exit(node, parent, scope, state) {
if (node._ignoreBlockScopingTDZ) return;
- var nodes = [];
- var ids = this.getBindingIdentifiers();
+ let nodes = [];
+ let ids = this.getBindingIdentifiers();
- for (var name in ids) {
- var id = ids[name];
+ for (let name in ids) {
+ let id = ids[name];
if (isReference(id, scope, state)) {
nodes.push(buildTDZAssert(id, state.file));
diff --git a/packages/babel-core/src/transformation/transformers/es6/classes/index.js b/packages/babel-core/src/transformation/transformers/es6/classes/index.js
index 9f35895124..16b80720f9 100644
--- a/packages/babel-core/src/transformation/transformers/es6/classes/index.js
+++ b/packages/babel-core/src/transformation/transformers/es6/classes/index.js
@@ -3,7 +3,7 @@ import VanillaTransformer from "./vanilla";
import * as t from "babel-types";
import { bare } from "../../../helpers/name-method";
-export var visitor = {
+export let visitor = {
ClassDeclaration(node) {
return t.variableDeclaration("var", [
t.variableDeclarator(node.id, t.toExpression(node))
@@ -11,7 +11,7 @@ export var visitor = {
},
ClassExpression(node, parent, scope, file) {
- var inferred = bare(node, parent, scope);
+ let inferred = bare(node, parent, scope);
if (inferred) return inferred;
if (file.isLoose("es6.classes")) {
diff --git a/packages/babel-core/src/transformation/transformers/es6/classes/loose.js b/packages/babel-core/src/transformation/transformers/es6/classes/loose.js
index 10f7b2e622..4af2320e6c 100644
--- a/packages/babel-core/src/transformation/transformers/es6/classes/loose.js
+++ b/packages/babel-core/src/transformation/transformers/es6/classes/loose.js
@@ -11,11 +11,11 @@ export default class LooseClassTransformer extends VanillaTransformer {
if (!node.decorators) {
// use assignments instead of define properties for loose classes
- var classRef = this.classRef;
+ let classRef = this.classRef;
if (!node.static) classRef = t.memberExpression(classRef, t.identifier("prototype"));
- var methodName = t.memberExpression(classRef, node.key, node.computed || t.isLiteral(node.key));
+ let methodName = t.memberExpression(classRef, node.key, node.computed || t.isLiteral(node.key));
- var expr = t.expressionStatement(t.assignmentExpression("=", methodName, node.value));
+ let expr = t.expressionStatement(t.assignmentExpression("=", methodName, node.value));
t.inheritsComments(expr, node);
this.body.push(expr);
return true;
diff --git a/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js b/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js
index 6e0f4ab1b3..af8ca86023 100644
--- a/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js
+++ b/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js
@@ -10,7 +10,7 @@ import * as t from "babel-types";
const PROPERTY_COLLISION_METHOD_NAME = "__initializeProperties";
-var collectPropertyReferencesVisitor = {
+let collectPropertyReferencesVisitor = {
Identifier: {
enter(node, parent, scope, state) {
if (this.parentPath.isClassProperty({ key: node })) {
@@ -24,7 +24,7 @@ var collectPropertyReferencesVisitor = {
}
};
-var verifyConstructorVisitor = {
+let verifyConstructorVisitor = {
MethodDefinition() {
this.skip();
},
@@ -54,7 +54,7 @@ var verifyConstructorVisitor = {
if (state.isDerived && !state.hasBareSuper) {
if (this.inShadow()) {
// https://github.com/babel/babel/issues/1920
- var thisAlias = state.constructorPath.getData("this");
+ let thisAlias = state.constructorPath.getData("this");
if (!thisAlias) {
thisAlias = state.constructorPath.setData(
@@ -111,19 +111,19 @@ export default class ClassTransformer {
}
run() {
- var superName = this.superName;
- var file = this.file;
- var body = this.body;
+ let superName = this.superName;
+ let file = this.file;
+ let body = this.body;
//
- var constructorBody = this.constructorBody = t.blockStatement([]);
+ let constructorBody = this.constructorBody = t.blockStatement([]);
this.constructor = this.buildConstructor();
//
- var closureParams = [];
- var closureArgs = [];
+ let closureParams = [];
+ let closureArgs = [];
//
if (this.isDerived) {
@@ -136,7 +136,7 @@ export default class ClassTransformer {
}
//
- var decorators = this.node.decorators;
+ let decorators = this.node.decorators;
if (decorators) {
// this is so super calls and the decorators have access to the raw function
this.directRef = this.scope.generateUidIdentifier(this.classRef);
@@ -166,19 +166,19 @@ export default class ClassTransformer {
//
body.push(t.returnStatement(this.classRef));
- var container = t.functionExpression(null, closureParams, t.blockStatement(body));
+ let container = t.functionExpression(null, closureParams, t.blockStatement(body));
container.shadow = true;
return t.callExpression(container, closureArgs);
}
buildConstructor() {
- var func = t.functionDeclaration(this.classRef, [], this.constructorBody);
+ let func = t.functionDeclaration(this.classRef, [], this.constructorBody);
t.inherits(func, this.node);
return func;
}
pushToMap(node, enumerable, kind = "value") {
- var mutatorMap;
+ let mutatorMap;
if (node.static) {
this.hasStaticDescriptors = true;
mutatorMap = this.staticMutatorMap;
@@ -187,7 +187,7 @@ export default class ClassTransformer {
mutatorMap = this.instanceMutatorMap;
}
- var map = defineMap.push(mutatorMap, node, kind, this.file);
+ let map = defineMap.push(mutatorMap, node, kind, this.file);
if (enumerable) {
map.enumerable = t.booleanLiteral(true);
@@ -204,15 +204,15 @@ export default class ClassTransformer {
*/
constructorMeMaybe() {
- var hasConstructor = false;
- var paths = this.path.get("body.body");
- for (var path of (paths: Array)) {
+ let hasConstructor = false;
+ let paths = this.path.get("body.body");
+ for (let path of (paths: Array)) {
hasConstructor = path.equals("kind", "constructor");
if (hasConstructor) break;
}
if (hasConstructor) return;
- var constructor;
+ let constructor;
if (this.isDerived) {
constructor = util.template("class-derived-default-constructor");
} else {
@@ -232,7 +232,7 @@ export default class ClassTransformer {
this.placePropertyInitializers();
if (this.userConstructor) {
- var constructorBody = this.constructorBody;
+ let constructorBody = this.constructorBody;
constructorBody.body = constructorBody.body.concat(this.userConstructor.body.body);
t.inherits(this.constructor, this.userConstructor);
t.inherits(constructorBody, this.userConstructor.body);
@@ -242,20 +242,20 @@ export default class ClassTransformer {
}
pushBody() {
- var classBodyPaths = this.path.get("body.body");
+ let classBodyPaths = this.path.get("body.body");
- for (var path of (classBodyPaths: Array)) {
- var node = path.node;
+ for (let path of (classBodyPaths: Array)) {
+ let node = path.node;
if (node.decorators) {
memoiseDecorators(node.decorators, this.scope);
}
if (t.isMethodDefinition(node)) {
- var isConstructor = node.kind === "constructor";
+ let isConstructor = node.kind === "constructor";
if (isConstructor) this.verifyConstructor(path);
- var replaceSupers = new ReplaceSupers({
+ let replaceSupers = new ReplaceSupers({
methodPath: path,
methodNode: node,
objectRef: this.directRef,
@@ -290,11 +290,11 @@ export default class ClassTransformer {
pushDescriptors() {
this.pushInherits();
- var body = this.body;
+ let body = this.body;
- var instanceProps;
- var staticProps;
- var classHelper = "create-class";
+ let instanceProps;
+ let staticProps;
+ let classHelper = "create-class";
if (this.hasDecorators) classHelper = "create-decorated-class";
if (this.hasInstanceDescriptors) {
@@ -309,10 +309,10 @@ export default class ClassTransformer {
if (instanceProps) instanceProps = defineMap.toComputedObjectFromClass(instanceProps);
if (staticProps) staticProps = defineMap.toComputedObjectFromClass(staticProps);
- var nullNode = t.nullLiteral();
+ let nullNode = t.nullLiteral();
// (Constructor, instanceDescriptors, staticDescriptors, instanceInitializers, staticInitializers)
- var args = [this.classRef, nullNode, nullNode, nullNode, nullNode];
+ let args = [this.classRef, nullNode, nullNode, nullNode, nullNode];
if (instanceProps) args[1] = instanceProps;
if (staticProps) args[2] = staticProps;
@@ -327,7 +327,7 @@ export default class ClassTransformer {
body.unshift(this.buildObjectAssignment(this.staticInitializersId));
}
- var lastNonNullIndex = 0;
+ let lastNonNullIndex = 0;
for (let i = 0; i < args.length; i++) {
if (args[i] !== nullNode) lastNonNullIndex = i;
}
@@ -349,11 +349,11 @@ export default class ClassTransformer {
}
placePropertyInitializers() {
- var body = this.instancePropBody;
+ let body = this.instancePropBody;
if (!body.length) return;
if (this.hasPropertyCollision()) {
- var call = t.expressionStatement(t.callExpression(
+ let call = t.expressionStatement(t.callExpression(
t.memberExpression(t.thisExpression(), t.identifier(PROPERTY_COLLISION_METHOD_NAME)),
[]
));
@@ -379,7 +379,7 @@ export default class ClassTransformer {
hasPropertyCollision(): boolean {
if (this.userConstructorPath) {
- for (var name in this.instancePropRefs) {
+ for (let name in this.instancePropRefs) {
if (this.userConstructorPath.scope.hasOwnBinding(name)) {
return true;
}
@@ -390,7 +390,7 @@ export default class ClassTransformer {
}
verifyConstructor(path: NodePath) {
- var state = {
+ let state = {
constructorPath: path.get("value"),
hasBareSuper: false,
bareSuper: null,
@@ -400,7 +400,7 @@ export default class ClassTransformer {
state.constructorPath.traverse(verifyConstructorVisitor, state);
- var thisAlias = state.constructorPath.getData("this");
+ let thisAlias = state.constructorPath.getData("this");
if (thisAlias && state.bareSuper) {
state.bareSuper.insertAfter(t.variableDeclaration("var", [
t.variableDeclarator(thisAlias, t.thisExpression())
@@ -442,7 +442,7 @@ export default class ClassTransformer {
});
if (node.decorators) {
- var body = [];
+ let body = [];
if (node.value) {
body.push(t.returnStatement(node.value));
node.value = t.functionExpression(null, [], t.blockStatement(body));
@@ -451,8 +451,8 @@ export default class ClassTransformer {
}
this.pushToMap(node, true, "initializer");
- var initializers;
- var target;
+ let initializers;
+ let target;
if (node.static) {
initializers = this.staticInitializersId = this.staticInitializersId || this.scope.generateUidIdentifier("staticInitializers");
body = this.staticPropBody;
@@ -492,13 +492,13 @@ export default class ClassTransformer {
pushConstructor(method: { type: "MethodDefinition" }, path: NodePath) {
// https://github.com/babel/babel/issues/1077
- var fnPath = path.get("value");
+ let fnPath = path.get("value");
if (fnPath.scope.hasOwnBinding(this.classRef.name)) {
fnPath.scope.rename(this.classRef.name);
}
- var construct = this.constructor;
- var fn = method.value;
+ let construct = this.constructor;
+ let fn = method.value;
this.userConstructorPath = fnPath;
this.userConstructor = fn;
@@ -550,7 +550,7 @@ export default class ClassTransformer {
*/
pushDecorators() {
- var decorators = this.node.decorators;
+ let decorators = this.node.decorators;
if (!decorators) return;
this.body.push(t.variableDeclaration("var", [
@@ -560,8 +560,8 @@ export default class ClassTransformer {
// reverse the decorators so we execute them in the right order
decorators = decorators.reverse();
- for (var decorator of (decorators: Array)) {
- var decoratorNode = util.template("class-decorator", {
+ for (let decorator of (decorators: Array)) {
+ let decoratorNode = util.template("class-decorator", {
DECORATOR: decorator.expression,
CLASS_REF: this.classRef
}, true);
diff --git a/packages/babel-core/src/transformation/transformers/es6/for-of.js b/packages/babel-core/src/transformation/transformers/es6/for-of.js
index fea662b0ce..de224dc727 100644
--- a/packages/babel-core/src/transformation/transformers/es6/for-of.js
+++ b/packages/babel-core/src/transformation/transformers/es6/for-of.js
@@ -2,19 +2,19 @@ import * as messages from "babel-messages";
import * as util from "../../../util";
import * as t from "babel-types";
-export var visitor = {
+export let visitor = {
ForOfStatement(node, parent, scope, file) {
if (this.get("right").isArrayExpression()) {
return _ForOfStatementArray.call(this, node, scope, file);
}
- var callback = spec;
+ let callback = spec;
if (file.isLoose("es6.forOf")) callback = loose;
- var build = callback(node, parent, scope, file);
- var declar = build.declar;
- var loop = build.loop;
- var block = loop.body;
+ let build = callback(node, parent, scope, file);
+ let declar = build.declar;
+ let loop = build.loop;
+ let block = loop.body;
// ensure that it's a block so we can take all its statements
this.ensureBlock();
@@ -40,20 +40,20 @@ export var visitor = {
};
export function _ForOfStatementArray(node, scope) {
- var nodes = [];
- var right = node.right;
+ let nodes = [];
+ let right = node.right;
if (!t.isIdentifier(right) || !scope.hasBinding(right.name)) {
- var uid = scope.generateUidIdentifier("arr");
+ let uid = scope.generateUidIdentifier("arr");
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(uid, right)
]));
right = uid;
}
- var iterationKey = scope.generateUidIdentifier("i");
+ let iterationKey = scope.generateUidIdentifier("i");
- var loop = util.template("for-of-array", {
+ let loop = util.template("for-of-array", {
BODY: node.body,
KEY: iterationKey,
ARR: right
@@ -62,9 +62,9 @@ export function _ForOfStatementArray(node, scope) {
t.inherits(loop, node);
t.ensureBlock(loop);
- var iterationValue = t.memberExpression(right, iterationKey, true);
+ let iterationValue = t.memberExpression(right, iterationKey, true);
- var left = node.left;
+ let left = node.left;
if (t.isVariableDeclaration(left)) {
left.declarations[0].init = iterationValue;
loop.body.body.unshift(left);
@@ -81,15 +81,15 @@ export function _ForOfStatementArray(node, scope) {
return nodes;
}
-var loose = function (node, parent, scope, file) {
- var left = node.left;
- var declar, id;
+let loose = function (node, parent, scope, file) {
+ let left = node.left;
+ let declar, id;
if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {
// for (i of test), for ({ i } of test)
id = left;
} else if (t.isVariableDeclaration(left)) {
- // for (var i of test)
+ // for (let i of test)
id = scope.generateUidIdentifier("ref");
declar = t.variableDeclaration(left.kind, [
t.variableDeclarator(left.declarations[0].id, id)
@@ -98,10 +98,10 @@ var loose = function (node, parent, scope, file) {
throw file.errorWithNode(left, messages.get("unknownForHead", left.type));
}
- var iteratorKey = scope.generateUidIdentifier("iterator");
- var isArrayKey = scope.generateUidIdentifier("isArray");
+ let iteratorKey = scope.generateUidIdentifier("iterator");
+ let isArrayKey = scope.generateUidIdentifier("isArray");
- var loop = util.template("for-of-loose", {
+ let loop = util.template("for-of-loose", {
LOOP_OBJECT: iteratorKey,
IS_ARRAY: isArrayKey,
OBJECT: node.right,
@@ -124,18 +124,18 @@ var loose = function (node, parent, scope, file) {
};
};
-var spec = function (node, parent, scope, file) {
- var left = node.left;
- var declar;
+let spec = function (node, parent, scope, file) {
+ let left = node.left;
+ let declar;
- var stepKey = scope.generateUidIdentifier("step");
- var stepValue = t.memberExpression(stepKey, t.identifier("value"));
+ let stepKey = scope.generateUidIdentifier("step");
+ let stepValue = t.memberExpression(stepKey, t.identifier("value"));
if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {
// for (i of test), for ({ i } of test)
declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue));
} else if (t.isVariableDeclaration(left)) {
- // for (var i of test)
+ // for (let i of test)
declar = t.variableDeclaration(left.kind, [
t.variableDeclarator(left.declarations[0].id, stepValue)
]);
@@ -145,9 +145,9 @@ var spec = function (node, parent, scope, file) {
//
- var iteratorKey = scope.generateUidIdentifier("iterator");
+ let iteratorKey = scope.generateUidIdentifier("iterator");
- var template = util.template("for-of", {
+ let template = util.template("for-of", {
ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"),
ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
@@ -157,10 +157,10 @@ var spec = function (node, parent, scope, file) {
BODY: null
});
- var isLabeledParent = t.isLabeledStatement(parent);
+ let isLabeledParent = t.isLabeledStatement(parent);
- var tryBody = template[3].block.body;
- var loop = tryBody[0];
+ let tryBody = template[3].block.body;
+ let loop = tryBody[0];
if (isLabeledParent) {
tryBody[0] = t.labeledStatement(parent.label, loop);
diff --git a/packages/babel-core/src/transformation/transformers/es6/modules.js b/packages/babel-core/src/transformation/transformers/es6/modules.js
index 16c5ea5b2c..afde8d1f6a 100644
--- a/packages/babel-core/src/transformation/transformers/es6/modules.js
+++ b/packages/babel-core/src/transformation/transformers/es6/modules.js
@@ -8,19 +8,19 @@ function keepBlockHoist(node, nodes) {
}
}
-export var metadata = {
+export let metadata = {
group: "builtin-modules"
};
-export var visitor = {
+export let visitor = {
ImportDeclaration(node, parent, scope, file) {
// flow type
if (node.importKind === "type" || node.importKind === "typeof") return;
- var nodes = [];
+ let nodes = [];
if (node.specifiers.length) {
- for (var specifier of (node.specifiers: Array)) {
+ for (let specifier of (node.specifiers: Array)) {
file.moduleFormatter.importSpecifier(specifier, node, nodes, scope);
}
} else {
@@ -36,14 +36,14 @@ export var visitor = {
},
ExportAllDeclaration(node, parent, scope, file) {
- var nodes = [];
+ let nodes = [];
file.moduleFormatter.exportAllDeclaration(node, nodes, scope);
keepBlockHoist(node, nodes);
return nodes;
},
ExportDefaultDeclaration(node, parent, scope, file) {
- var nodes = [];
+ let nodes = [];
file.moduleFormatter.exportDeclaration(node, nodes, scope);
keepBlockHoist(node, nodes);
return nodes;
@@ -53,13 +53,13 @@ export var visitor = {
// flow type
if (this.get("declaration").isTypeAlias()) return;
- var nodes = [];
+ let nodes = [];
if (node.declaration) {
// make sure variable exports have an initializer
// this is done here to avoid duplicating it in the module formatters
if (t.isVariableDeclaration(node.declaration)) {
- var declar = node.declaration.declarations[0];
+ let declar = node.declaration.declarations[0];
declar.init = declar.init || scope.buildUndefinedNode();
}
diff --git a/packages/babel-core/src/transformation/transformers/es6/object-super.js b/packages/babel-core/src/transformation/transformers/es6/object-super.js
index f3afd17552..b4e6a9006c 100644
--- a/packages/babel-core/src/transformation/transformers/es6/object-super.js
+++ b/packages/babel-core/src/transformation/transformers/es6/object-super.js
@@ -5,7 +5,7 @@ function Property(path, node, scope, getObjectRef, file) {
if (!node.method && node.kind === "init") return;
if (!t.isFunction(node.value)) return;
- var replaceSupers = new ReplaceSupers({
+ let replaceSupers = new ReplaceSupers({
getObjectRef: getObjectRef,
methodNode: node,
methodPath: path,
@@ -17,13 +17,13 @@ function Property(path, node, scope, getObjectRef, file) {
replaceSupers.replace();
}
-export var visitor = {
+export let visitor = {
ObjectExpression(node, parent, scope, file) {
- var objectRef;
- var getObjectRef = () => objectRef = objectRef || scope.generateUidIdentifier("obj");
+ let objectRef;
+ let getObjectRef = () => objectRef = objectRef || scope.generateUidIdentifier("obj");
- var propPaths = this.get("properties");
- for (var i = 0; i < node.properties.length; i++) {
+ let propPaths = this.get("properties");
+ for (let i = 0; i < node.properties.length; i++) {
Property(propPaths[i], node.properties[i], scope, getObjectRef, file);
}
diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/default.js b/packages/babel-core/src/transformation/transformers/es6/parameters/default.js
index cb8fabebae..4a49aee048 100644
--- a/packages/babel-core/src/transformation/transformers/es6/parameters/default.js
+++ b/packages/babel-core/src/transformation/transformers/es6/parameters/default.js
@@ -3,14 +3,14 @@ import getFunctionArity from "../../../helpers/get-function-arity";
import * as util from "../../../../util";
import * as t from "babel-types";
-var hasDefaults = function (node) {
- for (var i = 0; i < node.params.length; i++) {
+let hasDefaults = function (node) {
+ for (let i = 0; i < node.params.length; i++) {
if (!t.isIdentifier(node.params[i])) return true;
}
return false;
};
-var iifeVisitor = {
+let iifeVisitor = {
ReferencedIdentifier(node, parent, scope, state) {
if (node.name !== "eval") {
if (!state.scope.hasOwnBinding(node.name)) return;
@@ -22,27 +22,27 @@ var iifeVisitor = {
}
};
-export var visitor = {
+export let visitor = {
Function(node, parent, scope, file) {
if (!hasDefaults(node)) return;
// ensure it's a block, useful for arrow functions
this.ensureBlock();
- var state = {
+ let state = {
iife: false,
scope: scope
};
- var body = [];
+ let body = [];
//
- var argsIdentifier = t.identifier("arguments");
+ let argsIdentifier = t.identifier("arguments");
argsIdentifier._shadowedFunctionLiteral = this;
// push a default parameter definition
function pushDefNode(left, right, i) {
- var defNode;
+ let defNode;
if (exceedsLastNonDefault(i) || t.isPattern(left) || file.transformers["es6.spec.blockScoping"].canTransform()) {
defNode = util.template("default-parameter", {
VARIABLE_NAME: left,
@@ -66,12 +66,12 @@ export var visitor = {
}
//
- var lastNonDefaultParam = getFunctionArity(node);
+ let lastNonDefaultParam = getFunctionArity(node);
//
- var params = this.get("params");
- for (var i = 0; i < params.length; i++) {
- var param = params[i];
+ let params = this.get("params");
+ for (let i = 0; i < params.length; i++) {
+ let param = params[i];
if (!param.isAssignmentPattern()) {
if (!param.isIdentifier()) {
@@ -85,11 +85,11 @@ export var visitor = {
continue;
}
- var left = param.get("left");
- var right = param.get("right");
+ let left = param.get("left");
+ let right = param.get("right");
if (exceedsLastNonDefault(i) || left.isPattern()) {
- var placeholder = scope.generateUidIdentifier("x");
+ let placeholder = scope.generateUidIdentifier("x");
placeholder._isDefaultPlaceholder = true;
node.params[i] = placeholder;
} else {
diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js b/packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js
new file mode 100644
index 0000000000..da8b0de40f
--- /dev/null
+++ b/packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js
@@ -0,0 +1,23 @@
+import * as t from "babel-types";
+
+export let visitor = {
+ Function(path) {
+ let params: Array = path.get("params");
+ let body = path.get("body");
+
+ for (let i = 0; i < params.length; i++) {
+ let param = params[i];
+ if (param.isArrayPattern() || param.isObjectPattern()) {
+ let uid = path.scope.generateUidIdentifierBasedOnNode(param.node);
+
+ let declar = t.variableDeclaration("let", [
+ t.variableDeclarator(param.node, uid)
+ ]);
+ declar._blockHoist = params.length - i;
+ body.unshiftContainer("body", declar);
+
+ param.replaceWith(uid);
+ }
+ }
+ }
+};
diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/index.js b/packages/babel-core/src/transformation/transformers/es6/parameters/index.js
index e1061a0b68..6e154173aa 100644
--- a/packages/babel-core/src/transformation/transformers/es6/parameters/index.js
+++ b/packages/babel-core/src/transformation/transformers/es6/parameters/index.js
@@ -3,8 +3,8 @@ import { visitors } from "babel-traverse";
import * as def from "./default";
import * as rest from "./rest";
-export var metadata = {
+export let metadata = {
group: "builtin-advanced"
};
-export var visitor = visitors.merge([rest.visitor, def.visitor]);
+export let visitor = visitors.merge([rest.visitor, def.visitor]);
diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js b/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js
index 8142737a54..6eb37b76d2 100644
--- a/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js
+++ b/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js
@@ -1,7 +1,7 @@
import * as util from "../../../../util";
import * as t from "babel-types";
-var memberExpressionOptimisationVisitor = {
+let memberExpressionOptimisationVisitor = {
Scope(node, parent, scope, state) {
// check if this scope has a local binding that will shadow the rest parameter
if (!scope.bindingIdentifierEquals(state.name, state.outerBinding)) {
@@ -17,7 +17,7 @@ var memberExpressionOptimisationVisitor = {
Function(node, parent, scope, state) {
// skip over functions as whatever `arguments` we reference inside will refer
// to the wrong function
- var oldNoOptimise = state.noOptimise;
+ let oldNoOptimise = state.noOptimise;
state.noOptimise = true;
this.traverse(memberExpressionOptimisationVisitor, state);
state.noOptimise = oldNoOptimise;
@@ -39,7 +39,7 @@ var memberExpressionOptimisationVisitor = {
if (this.parentPath.isMemberExpression({ computed: true, object: node })) {
// if we know that this member expression is referencing a number then we can safely
// optimise it
- var prop = this.parentPath.get("property");
+ let prop = this.parentPath.get("property");
if (prop.isBaseType("number")) {
state.candidates.push(this);
return;
@@ -48,7 +48,7 @@ var memberExpressionOptimisationVisitor = {
// optimise single spread args in calls
if (this.parentPath.isSpreadElement() && state.offset === 0) {
- var call = this.parentPath.parentPath;
+ let call = this.parentPath.parentPath;
if (call.isCallExpression() && call.node.arguments.length === 1) {
state.candidates.push(this);
return;
@@ -75,8 +75,8 @@ var memberExpressionOptimisationVisitor = {
function optimiseMemberExpression(parent, offset) {
if (offset === 0) return;
- var newExpr;
- var prop = parent.property;
+ let newExpr;
+ let prop = parent.property;
if (t.isLiteral(prop)) {
prop.value += offset;
@@ -91,32 +91,32 @@ function hasRest(node) {
return t.isRestElement(node.params[node.params.length - 1]);
}
-export var visitor = {
+export let visitor = {
Function(node, parent, scope) {
if (!hasRest(node)) return;
- var restParam = node.params.pop();
- var rest = restParam.argument;
+ let restParam = node.params.pop();
+ let rest = restParam.argument;
- var argsId = t.identifier("arguments");
+ let argsId = t.identifier("arguments");
// otherwise `arguments` will be remapped in arrow functions
argsId._shadowedFunctionLiteral = this;
// support patterns
if (t.isPattern(rest)) {
- var pattern = rest;
+ let pattern = rest;
rest = scope.generateUidIdentifier("ref");
- var declar = t.variableDeclaration("let", pattern.elements.map(function (elem, index) {
- var accessExpr = t.memberExpression(rest, t.numberLiteral(index), true);
+ let declar = t.variableDeclaration("let", pattern.elements.map(function (elem, index) {
+ let accessExpr = t.memberExpression(rest, t.numberLiteral(index), true);
return t.variableDeclarator(elem, accessExpr);
}));
node.body.body.unshift(declar);
}
// check and optimise for extremely common cases
- var state = {
+ let state = {
references: [],
offset: node.params.length,
@@ -138,7 +138,7 @@ export var visitor = {
if (!state.deopted && !state.references.length) {
// we only have shorthands and there are no other references
if (state.candidates.length) {
- for (var candidate of (state.candidates: Array)) {
+ for (let candidate of (state.candidates: Array)) {
candidate.replaceWith(argsId);
if (candidate.parentPath.isMemberExpression()) {
optimiseMemberExpression(candidate.parent, state.offset);
@@ -155,12 +155,12 @@ export var visitor = {
//
- var start = t.numberLiteral(node.params.length);
- var key = scope.generateUidIdentifier("key");
- var len = scope.generateUidIdentifier("len");
+ let start = t.numberLiteral(node.params.length);
+ let key = scope.generateUidIdentifier("key");
+ let len = scope.generateUidIdentifier("len");
- var arrKey = key;
- var arrLen = len;
+ let arrKey = key;
+ let arrLen = len;
if (node.params.length) {
// this method has additional params, so we need to subtract
// the index of the current argument position from the
@@ -180,7 +180,7 @@ export var visitor = {
);
}
- var loop = util.template("rest", {
+ let loop = util.template("rest", {
ARRAY_TYPE: restParam.typeAnnotation,
ARGUMENTS: argsId,
ARRAY_KEY: arrKey,
@@ -198,10 +198,10 @@ export var visitor = {
// perform allocation at the lowest common ancestor of all references
loop._blockHoist = 1;
- var target = this.getEarliestCommonAncestorFrom(state.references).getStatementParent();
+ let target = this.getEarliestCommonAncestorFrom(state.references).getStatementParent();
// don't perform the allocation inside a loop
- var highestLoop;
+ let highestLoop;
target.findParent(function (path) {
if (path.isLoop()) {
highestLoop = path;
diff --git a/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js b/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js
index 26efd93f0d..bffc2e6dff 100644
--- a/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js
+++ b/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js
@@ -1,7 +1,7 @@
import * as regex from "../../helpers/regex";
import * as t from "babel-types";
-export var visitor = {
+export let visitor = {
RegexLiteral(node) {
if (!regex.is(node, "y")) return;
return t.newExpression(t.identifier("RegExp"), [
diff --git a/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js b/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js
index 8bb2763c0c..cb7266940f 100644
--- a/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js
+++ b/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js
@@ -1,7 +1,7 @@
import rewritePattern from "regexpu/rewrite-pattern";
import * as regex from "../../helpers/regex";
-export var visitor = {
+export let visitor = {
RegexLiteral(node) {
if (!regex.is(node, "u")) return;
node.regex.pattern = rewritePattern(node.pattern, node.flags);
diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js b/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js
index e8a70a1b6e..48acf05eca 100644
--- a/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js
+++ b/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js
@@ -1,16 +1,16 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
group: "builtin-pre",
optional: true
};
-export var visitor = {
+export let visitor = {
ArrowFunctionExpression(node, parent, scope, file) {
if (node.shadow) return;
node.shadow = { this: false };
- var boundThis = t.thisExpression();
+ let boundThis = t.thisExpression();
boundThis._forceShadow = this;
// make sure that arrow function won't be instantiated
diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.modules.js b/packages/babel-core/src/transformation/transformers/es6/spec.modules.js
index 9e3f22640f..a51e2ea9ea 100644
--- a/packages/babel-core/src/transformation/transformers/es6/spec.modules.js
+++ b/packages/babel-core/src/transformation/transformers/es6/spec.modules.js
@@ -1,13 +1,13 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
group: "builtin-pre",
optional: true
};
-export var visitor = {
+export let visitor = {
Program() {
- var id = this.scope.generateUidIdentifier("null");
+ let id = this.scope.generateUidIdentifier("null");
this.unshiftContainer("body", [
t.variableDeclaration("var", [
t.variableDeclarator(id, t.nullLiteral())
diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js b/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js
index 0886017864..73826474b8 100644
--- a/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js
+++ b/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js
@@ -1,24 +1,24 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
optional: true
};
-export var visitor = {
+export let visitor = {
UnaryExpression(node, parent, scope, file) {
if (node._ignoreSpecSymbols) return;
if (this.parentPath.isBinaryExpression() && t.EQUALITY_BINARY_OPERATORS.indexOf(parent.operator) >= 0) {
// optimise `typeof foo === "string"` since we can determine that they'll never need to handle symbols
- var opposite = this.getOpposite();
+ let opposite = this.getOpposite();
if (opposite.isLiteral() && opposite.node.value !== "symbol" && opposite.node.value !== "object") return;
}
if (node.operator === "typeof") {
- var call = t.callExpression(file.addHelper("typeof"), [node.argument]);
+ let call = t.callExpression(file.addHelper("typeof"), [node.argument]);
if (this.get("argument").isIdentifier()) {
- var undefLiteral = t.stringLiteral("undefined");
- var unary = t.unaryExpression("typeof", node.argument);
+ let undefLiteral = t.stringLiteral("undefined");
+ let unary = t.unaryExpression("typeof", node.argument);
unary._ignoreSpecSymbols = true;
return t.conditionalExpression(
t.binaryExpression("===", unary, undefLiteral),
diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js b/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js
index 7498b1820e..798718552b 100644
--- a/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js
+++ b/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js
@@ -1,15 +1,15 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
optional: true,
group: "builtin-pre"
};
-export var visitor = {
+export let visitor = {
TemplateLiteral(node, parent) {
if (t.isTaggedTemplateExpression(parent)) return;
- for (var i = 0; i < node.expressions.length; i++) {
+ for (let i = 0; i < node.expressions.length; i++) {
node.expressions[i] = t.callExpression(t.identifier("String"), [node.expressions[i]]);
}
}
diff --git a/packages/babel-core/src/transformation/transformers/es6/tail-call.js b/packages/babel-core/src/transformation/transformers/es6/tail-call.js
index efe7e7eeb7..8400873e22 100644
--- a/packages/babel-core/src/transformation/transformers/es6/tail-call.js
+++ b/packages/babel-core/src/transformation/transformers/es6/tail-call.js
@@ -5,14 +5,14 @@ import * as util from "../../../util";
import map from "lodash/collection/map";
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
group: "builtin-trailing"
};
-export var visitor = {
+export let visitor = {
Function(node, parent, scope, file) {
if (node.generator || node.async) return;
- var tailCall = new TailCallTransformer(this, scope, file);
+ let tailCall = new TailCallTransformer(this, scope, file);
tailCall.run();
}
};
@@ -21,7 +21,7 @@ function returnBlock(expr) {
return t.blockStatement([t.returnStatement(expr)]);
}
-var visitor = {
+let visitor = {
enter(node, parent) {
if (t.isTryStatement(parent)) {
if (node === parent.block) {
@@ -101,14 +101,14 @@ class TailCallTransformer {
}
getParams() {
- var params = this.params;
+ let params = this.params;
if (!params) {
params = this.node.params;
this.paramDecls = [];
- for (var i = 0; i < params.length; i++) {
- var param = params[i];
+ for (let i = 0; i < params.length; i++) {
+ let param = params[i];
if (!param._isDefaultPlaceholder) {
this.paramDecls.push(t.variableDeclarator(
param,
@@ -124,16 +124,16 @@ class TailCallTransformer {
hasDeopt() {
// check if the ownerId has been reassigned, if it has then it's not safe to
// perform optimisations
- var ownerIdInfo = this.scope.getBinding(this.ownerId.name);
+ let ownerIdInfo = this.scope.getBinding(this.ownerId.name);
return ownerIdInfo && !ownerIdInfo.constant;
}
run() {
- var node = this.node;
+ let node = this.node;
// only tail recursion can be optimized as for now, so we can skip anonymous
// functions entirely
- var ownerId = this.ownerId;
+ let ownerId = this.ownerId;
if (!ownerId) return;
// traverse the function and look for tail recursion
@@ -150,10 +150,10 @@ class TailCallTransformer {
//
- var body = this.path.ensureBlock().body;
+ let body = this.path.ensureBlock().body;
- for (var i = 0; i < body.length; i++) {
- var bodyNode = body[i];
+ for (let i = 0; i < body.length; i++) {
+ let bodyNode = body[i];
if (!t.isFunctionDeclaration(bodyNode)) continue;
bodyNode = body[i] = t.variableDeclaration("var", [
@@ -163,22 +163,22 @@ class TailCallTransformer {
}
if (this.vars.length > 0) {
- var declarations = flatten(map(this.vars, function (decl) {
+ let declarations = flatten(map(this.vars, function (decl) {
return decl.declarations;
}));
- var assignment = reduceRight(declarations, function (expr, decl) {
+ let assignment = reduceRight(declarations, function (expr, decl) {
return t.assignmentExpression("=", decl.id, expr);
}, this.scope.buildUndefinedNode());
- var statement = t.expressionStatement(assignment);
+ let statement = t.expressionStatement(assignment);
statement._blockHoist = Infinity;
body.unshift(statement);
}
- var paramDecls = this.paramDecls;
+ let paramDecls = this.paramDecls;
if (paramDecls.length > 0) {
- var paramDecl = t.variableDeclaration("var", paramDecls);
+ let paramDecl = t.variableDeclaration("var", paramDecls);
paramDecl._blockHoist = Infinity;
body.unshift(paramDecl);
}
@@ -193,10 +193,10 @@ class TailCallTransformer {
BLOCK: node.body
});
- var topVars = [];
+ let topVars = [];
if (this.needsThis) {
- for (var path of (this.thisPaths: Array)) {
+ for (let path of (this.thisPaths: Array)) {
path.replaceWith(this.getThisId());
}
@@ -208,7 +208,7 @@ class TailCallTransformer {
path.replaceWith(this.argumentsId);
}
- var decl = t.variableDeclarator(this.argumentsId);
+ let decl = t.variableDeclarator(this.argumentsId);
if (this.argumentsId) {
decl.init = t.identifier("arguments");
decl.init._shadowedFunctionLiteral = this.path;
@@ -216,7 +216,7 @@ class TailCallTransformer {
topVars.push(decl);
}
- var leftId = this.leftId;
+ let leftId = this.leftId;
if (leftId) {
topVars.push(t.variableDeclarator(leftId));
}
@@ -229,13 +229,13 @@ class TailCallTransformer {
subTransform(node) {
if (!node) return;
- var handler = this[`subTransform${node.type}`];
+ let handler = this[`subTransform${node.type}`];
if (handler) return handler.call(this, node);
}
subTransformConditionalExpression(node) {
- var callConsequent = this.subTransform(node.consequent);
- var callAlternate = this.subTransform(node.alternate);
+ let callConsequent = this.subTransform(node.consequent);
+ let callAlternate = this.subTransform(node.alternate);
if (!callConsequent && !callAlternate) {
return;
}
@@ -255,12 +255,12 @@ class TailCallTransformer {
subTransformLogicalExpression(node) {
// only call in right-value of can be optimized
- var callRight = this.subTransform(node.right);
+ let callRight = this.subTransform(node.right);
if (!callRight) return;
// cache left value as it might have side-effects
- var leftId = this.getLeftId();
- var testExpr = t.assignmentExpression(
+ let leftId = this.getLeftId();
+ let testExpr = t.assignmentExpression(
"=",
leftId,
node.left
@@ -274,10 +274,10 @@ class TailCallTransformer {
}
subTransformSequenceExpression(node) {
- var seq = node.expressions;
+ let seq = node.expressions;
// only last element can be optimized
- var lastCall = this.subTransform(seq[seq.length - 1]);
+ let lastCall = this.subTransform(seq[seq.length - 1]);
if (!lastCall) {
return;
}
@@ -292,8 +292,8 @@ class TailCallTransformer {
}
subTransformCallExpression(node) {
- var callee = node.callee;
- var thisBinding, args;
+ let callee = node.callee;
+ let thisBinding, args;
if (t.isMemberExpression(callee, { computed: false }) && t.isIdentifier(callee.property)) {
switch (callee.property.name) {
@@ -323,7 +323,7 @@ class TailCallTransformer {
if (this.hasDeopt()) return;
- var body = [];
+ let body = [];
if (this.needsThis && !t.isThisExpression(thisBinding)) {
body.push(t.expressionStatement(t.assignmentExpression(
@@ -337,8 +337,8 @@ class TailCallTransformer {
args = t.arrayExpression(node.arguments);
}
- var argumentsId = this.getArgumentsId();
- var params = this.getParams();
+ let argumentsId = this.getArgumentsId();
+ let params = this.getParams();
if (this.needsArguments) {
body.push(t.expressionStatement(t.assignmentExpression(
@@ -349,7 +349,7 @@ class TailCallTransformer {
}
if (t.isArrayExpression(args)) {
- var elems = args.elements;
+ let elems = args.elements;
// pad out the args so all the function args are reset - https://github.com/babel/babel/issues/1938
while (elems.length < params.length) {
diff --git a/packages/babel-core/src/transformation/transformers/es7/async-functions.js b/packages/babel-core/src/transformation/transformers/es7/async-functions.js
index 83435eaaaa..18eb858c21 100644
--- a/packages/babel-core/src/transformation/transformers/es7/async-functions.js
+++ b/packages/babel-core/src/transformation/transformers/es7/async-functions.js
@@ -1,3 +1,3 @@
-export var metadata = {
+export let metadata = {
stage: 2
};
diff --git a/packages/babel-core/src/transformation/transformers/es7/class-properties.js b/packages/babel-core/src/transformation/transformers/es7/class-properties.js
index ca95104fab..6d65970ef0 100644
--- a/packages/babel-core/src/transformation/transformers/es7/class-properties.js
+++ b/packages/babel-core/src/transformation/transformers/es7/class-properties.js
@@ -1,4 +1,4 @@
-export var metadata = {
+export let metadata = {
stage: 0,
dependencies: ["es6.classes"]
};
diff --git a/packages/babel-core/src/transformation/transformers/es7/comprehensions.js b/packages/babel-core/src/transformation/transformers/es7/comprehensions.js
index 0936429cef..b9dd2a9e8e 100644
--- a/packages/babel-core/src/transformation/transformers/es7/comprehensions.js
+++ b/packages/babel-core/src/transformation/transformers/es7/comprehensions.js
@@ -3,21 +3,21 @@ import traverse from "babel-traverse";
import * as util from "../../../util";
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
stage: 0
};
-export var visitor = {
+export let visitor = {
ComprehensionExpression(node, parent, scope) {
- var callback = array;
+ let callback = array;
if (node.generator) callback = generator;
return callback(node, parent, scope);
}
};
function generator(node) {
- var body = [];
- var container = t.functionExpression(null, [], t.blockStatement(body), true);
+ let body = [];
+ let container = t.functionExpression(null, [], t.blockStatement(body), true);
container.shadow = true;
body.push(buildComprehension(node, function () {
@@ -28,22 +28,22 @@ function generator(node) {
}
function array(node, parent, scope) {
- var uid = scope.generateUidIdentifierBasedOnNode(parent);
+ let uid = scope.generateUidIdentifierBasedOnNode(parent);
- var container = util.template("array-comprehension-container", {
+ let container = util.template("array-comprehension-container", {
KEY: uid
});
container.callee.shadow = true;
- var block = container.callee.body;
- var body = block.body;
+ let block = container.callee.body;
+ let body = block.body;
if (traverse.hasType(node, scope, "YieldExpression", t.FUNCTION_TYPES)) {
container.callee.generator = true;
container = t.yieldExpression(container, true);
}
- var returnStatement = body.pop();
+ let returnStatement = body.pop();
body.push(buildComprehension(node, function () {
return util.template("array-push", {
diff --git a/packages/babel-core/src/transformation/transformers/es7/decorators.js b/packages/babel-core/src/transformation/transformers/es7/decorators.js
index b0fd12c146..e81465ee44 100644
--- a/packages/babel-core/src/transformation/transformers/es7/decorators.js
+++ b/packages/babel-core/src/transformation/transformers/es7/decorators.js
@@ -2,15 +2,15 @@ import memoiseDecorators from "../../helpers/memoise-decorators";
import * as defineMap from "../../helpers/define-map";
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
dependencies: ["es6.classes"],
optional: true,
stage: 1
};
-export var visitor = {
+export let visitor = {
ObjectExpression(node, parent, scope, file) {
- var hasDecorators = false;
+ let hasDecorators = false;
for (let i = 0; i < node.properties.length; i++) {
let prop = node.properties[i];
if (prop.decorators) {
@@ -20,7 +20,7 @@ export var visitor = {
}
if (!hasDecorators) return;
- var mutatorMap = {};
+ let mutatorMap = {};
for (let i = 0; i < node.properties.length; i++) {
let prop = node.properties[i];
@@ -37,7 +37,7 @@ export var visitor = {
defineMap.push(mutatorMap, prop, "initializer", file);
}
- var obj = defineMap.toClassObject(mutatorMap);
+ let obj = defineMap.toClassObject(mutatorMap);
obj = defineMap.toComputedObjectFromClass(obj);
return t.callExpression(file.addHelper("create-decorated-object"), [obj]);
}
diff --git a/packages/babel-core/src/transformation/transformers/es7/do-expressions.js b/packages/babel-core/src/transformation/transformers/es7/do-expressions.js
index 3e3be4b82b..e7f01f1102 100644
--- a/packages/babel-core/src/transformation/transformers/es7/do-expressions.js
+++ b/packages/babel-core/src/transformation/transformers/es7/do-expressions.js
@@ -1,13 +1,13 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
optional: true,
stage: 0
};
-export var visitor = {
+export let visitor = {
DoExpression(node) {
- var body = node.body.body;
+ let body = node.body.body;
if (body.length) {
return body;
} else {
diff --git a/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js b/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js
index 6539ed6860..90e4b214c5 100644
--- a/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js
+++ b/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js
@@ -3,11 +3,11 @@
import build from "../../helpers/build-binary-assignment-operator-transformer";
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
stage: 2
};
-export var visitor = build({
+export let visitor = build({
operator: "**",
build(left, right) {
diff --git a/packages/babel-core/src/transformation/transformers/es7/export-extensions.js b/packages/babel-core/src/transformation/transformers/es7/export-extensions.js
index 2e622c2d56..4cf5d4caa4 100644
--- a/packages/babel-core/src/transformation/transformers/es7/export-extensions.js
+++ b/packages/babel-core/src/transformation/transformers/es7/export-extensions.js
@@ -2,18 +2,18 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
stage: 1
};
function build(node, nodes, scope) {
- var first = node.specifiers[0];
+ let first = node.specifiers[0];
if (!t.isExportNamespaceSpecifier(first) && !t.isExportDefaultSpecifier(first)) return;
- var specifier = node.specifiers.shift();
- var uid = scope.generateUidIdentifier(specifier.exported.name);
+ let specifier = node.specifiers.shift();
+ let uid = scope.generateUidIdentifier(specifier.exported.name);
- var newSpecifier;
+ let newSpecifier;
if (t.isExportNamespaceSpecifier(specifier)) {
newSpecifier = t.importNamespaceSpecifier(uid);
} else {
@@ -26,9 +26,9 @@ function build(node, nodes, scope) {
build(node, nodes, scope);
}
-export var visitor = {
+export let visitor = {
ExportNamedDeclaration(node, parent, scope) {
- var nodes = [];
+ let nodes = [];
build(node, nodes, scope);
if (!nodes.length) return;
diff --git a/packages/babel-core/src/transformation/transformers/es7/function-bind.js b/packages/babel-core/src/transformation/transformers/es7/function-bind.js
index 30f9ddf621..74bf548bff 100644
--- a/packages/babel-core/src/transformation/transformers/es7/function-bind.js
+++ b/packages/babel-core/src/transformation/transformers/es7/function-bind.js
@@ -2,13 +2,13 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
optional: true,
stage: 0
};
function getTempId(scope) {
- var id = scope.path.getData("functionBind");
+ let id = scope.path.getData("functionBind");
if (id) return id;
id = scope.generateDeclaredUidIdentifier("context");
@@ -16,15 +16,15 @@ function getTempId(scope) {
}
function getStaticContext(bind, scope) {
- var object = bind.object || bind.callee.object;
+ let object = bind.object || bind.callee.object;
return scope.isStatic(object) && object;
}
function inferBindContext(bind, scope) {
- var staticContext = getStaticContext(bind, scope);
+ let staticContext = getStaticContext(bind, scope);
if (staticContext) return staticContext;
- var tempId = getTempId(scope);
+ let tempId = getTempId(scope);
if (bind.object) {
bind.callee = t.sequenceExpression([
t.assignmentExpression("=", tempId, bind.object),
@@ -36,18 +36,18 @@ function inferBindContext(bind, scope) {
return tempId;
}
-export var visitor = {
+export let visitor = {
CallExpression(node, parent, scope) {
- var bind = node.callee;
+ let bind = node.callee;
if (!t.isBindExpression(bind)) return;
- var context = inferBindContext(bind, scope);
+ let context = inferBindContext(bind, scope);
node.callee = t.memberExpression(bind.callee, t.identifier("call"));
node.arguments.unshift(context);
},
BindExpression(node, parent, scope) {
- var context = inferBindContext(node, scope);
+ let context = inferBindContext(node, scope);
return t.callExpression(t.memberExpression(node.callee, t.identifier("bind")), [context]);
}
};
diff --git a/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js b/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js
index 932adb0118..ea7b9c6a31 100644
--- a/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js
+++ b/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js
@@ -2,13 +2,13 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
stage: 2,
dependencies: ["es6.destructuring"]
};
-var hasSpread = function (node) {
- for (var i = 0; i < node.properties.length; i++) {
+let hasSpread = function (node) {
+ for (let i = 0; i < node.properties.length; i++) {
if (t.isSpreadProperty(node.properties[i])) {
return true;
}
@@ -16,21 +16,21 @@ var hasSpread = function (node) {
return false;
};
-export var visitor = {
+export let visitor = {
ObjectExpression(node, parent, scope, file) {
if (!hasSpread(node)) return;
- var args = [];
- var props = [];
+ let args = [];
+ let props = [];
- var push = function () {
+ let push = function () {
if (!props.length) return;
args.push(t.objectExpression(props));
props = [];
};
- for (var i = 0; i < node.properties.length; i++) {
- var prop = node.properties[i];
+ for (let i = 0; i < node.properties.length; i++) {
+ let prop = node.properties[i];
if (t.isSpreadProperty(prop)) {
push();
args.push(prop.argument);
diff --git a/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js b/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js
index 5059fdd666..e75a1bd865 100644
--- a/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js
+++ b/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js
@@ -1,3 +1,3 @@
-export var metadata = {
+export let metadata = {
stage: 1
};
diff --git a/packages/babel-core/src/transformation/transformers/filters.js b/packages/babel-core/src/transformation/transformers/filters.js
index dff6631b9b..c34e5ea70e 100644
--- a/packages/babel-core/src/transformation/transformers/filters.js
+++ b/packages/babel-core/src/transformation/transformers/filters.js
@@ -5,17 +5,17 @@ export function internal(transformer) {
}
export function blacklist(transformer, opts) {
- var blacklist = opts.blacklist;
+ let blacklist = opts.blacklist;
if (blacklist.length && includes(blacklist, transformer.key)) return false;
}
export function whitelist(transformer, opts) {
- var whitelist = opts.whitelist;
+ let whitelist = opts.whitelist;
if (whitelist) return includes(whitelist, transformer.key);
}
export function stage(transformer, opts) {
- var stage = transformer.metadata.stage;
+ let stage = transformer.metadata.stage;
if (stage != null && stage >= opts.stage) return true;
}
diff --git a/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js b/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js
index 74c9601515..dc38fc570a 100644
--- a/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js
+++ b/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js
@@ -1,14 +1,14 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
group: "builtin-pre"
};
-export var visitor = {
+export let visitor = {
Block: {
exit(node) {
- for (var i = 0; i < node.body.length; i++) {
- var bodyNode = node.body[i];
+ for (let i = 0; i < node.body.length; i++) {
+ let bodyNode = node.body[i];
if (t.isExpressionStatement(bodyNode) && t.isLiteral(bodyNode.expression)) {
bodyNode._blockHoist = Infinity;
} else {
diff --git a/packages/babel-core/src/transformation/transformers/internal/module-formatter.js b/packages/babel-core/src/transformation/transformers/internal/module-formatter.js
index d767376582..a617385915 100644
--- a/packages/babel-core/src/transformation/transformers/internal/module-formatter.js
+++ b/packages/babel-core/src/transformation/transformers/internal/module-formatter.js
@@ -1,12 +1,12 @@
-export var metadata = {
+export let metadata = {
group: "builtin-modules"
};
-export var visitor = {
+export let visitor = {
Program: {
exit(program, parent, scope, file) {
// ensure that these are at the top, just like normal imports
- for (var node of (file.dynamicImports: Array)) {
+ for (let node of (file.dynamicImports: Array)) {
node._blockHoist = 3;
}
diff --git a/packages/babel-core/src/transformation/transformers/internal/modules.js b/packages/babel-core/src/transformation/transformers/internal/modules.js
index 340cc42893..ff3867981e 100644
--- a/packages/babel-core/src/transformation/transformers/internal/modules.js
+++ b/packages/babel-core/src/transformation/transformers/internal/modules.js
@@ -7,7 +7,7 @@
import * as t from "babel-types";
function getDeclar(node) {
- var declar = node.declaration;
+ let declar = node.declaration;
t.inheritsComments(declar, node);
t.removeComments(node);
declar._ignoreUserWhitespace = true;
@@ -19,18 +19,18 @@ function buildExportSpecifier(id) {
}
function cloneIdentifier({ name, loc }) {
- var id = t.identifier(name);
+ let id = t.identifier(name);
id._loc = loc;
return id;
}
-export var metadata = {
+export let metadata = {
group: "builtin-pre"
};
-export var visitor = {
+export let visitor = {
ExportDefaultDeclaration(node, parent, scope) {
- var declar = node.declaration;
+ let declar = node.declaration;
if (t.isClassDeclaration(declar)) {
// export default class Foo {};
@@ -39,7 +39,7 @@ export var visitor = {
return nodes;
} else if (t.isClassExpression(declar)) {
// export default class {};
- var temp = scope.generateUidIdentifier("default");
+ let temp = scope.generateUidIdentifier("default");
node.declaration = t.variableDeclaration("var", [
t.variableDeclarator(temp, declar)
]);
@@ -58,7 +58,7 @@ export var visitor = {
},
ExportNamedDeclaration(node) {
- var declar = node.declaration;
+ let declar = node.declaration;
if (t.isClassDeclaration(declar)) {
// export class Foo {}
@@ -69,14 +69,14 @@ export var visitor = {
return nodes;
} else if (t.isFunctionDeclaration(declar)) {
// export function Foo() {}
- var newExport = t.exportNamedDeclaration(null, [buildExportSpecifier(declar.id)]);
+ let newExport = t.exportNamedDeclaration(null, [buildExportSpecifier(declar.id)]);
newExport._blockHoist = 2;
return [getDeclar(node), newExport];
} else if (t.isVariableDeclaration(declar)) {
- // export var foo = "bar";
- var specifiers = [];
- var bindings = this.get("declaration").getBindingIdentifiers();
- for (var key in bindings) {
+ // export let foo = "bar";
+ let specifiers = [];
+ let bindings = this.get("declaration").getBindingIdentifiers();
+ for (let key in bindings) {
specifiers.push(buildExportSpecifier(bindings[key]));
}
return [declar, t.exportNamedDeclaration(null, specifiers)];
@@ -85,11 +85,11 @@ export var visitor = {
Program: {
enter(node) {
- var imports = [];
- var rest = [];
+ let imports = [];
+ let rest = [];
- for (var i = 0; i < node.body.length; i++) {
- var bodyNode = node.body[i];
+ for (let i = 0; i < node.body.length; i++) {
+ let bodyNode = node.body[i];
if (t.isImportDeclaration(bodyNode)) {
imports.push(bodyNode);
} else {
diff --git a/packages/babel-core/src/transformation/transformers/internal/validation.js b/packages/babel-core/src/transformation/transformers/internal/validation.js
index 7704923a70..8b27442419 100644
--- a/packages/babel-core/src/transformation/transformers/internal/validation.js
+++ b/packages/babel-core/src/transformation/transformers/internal/validation.js
@@ -1,22 +1,22 @@
import * as messages from "babel-messages";
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
group: "builtin-pre"
};
-export var visitor = {
+export let visitor = {
ForXStatement(node, parent, scope, file) {
- var left = node.left;
+ let left = node.left;
if (t.isVariableDeclaration(left)) {
- var declar = left.declarations[0];
+ let declar = left.declarations[0];
if (declar.init) throw file.errorWithNode(declar, messages.get("noAssignmentsInForHead"));
}
},
Property(node, parent, scope, file) {
if (node.kind === "set") {
- var first = node.value.params[0];
+ let first = node.value.params[0];
if (t.isRestElement(first)) {
throw file.errorWithNode(first, messages.get("settersNoRest"));
}
diff --git a/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js b/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js
index b5eeba6c62..b6b78bc25f 100644
--- a/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js
+++ b/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js
@@ -1,10 +1,10 @@
import { _ForOfStatementArray } from "../es6/for-of";
-export var metadata = {
+export let metadata = {
optional: true
};
-export var visitor = {
+export let visitor = {
ForOfStatement(node, parent, scope, file) {
if (this.get("right").isGenericType("Array")) {
return _ForOfStatementArray.call(this, node, scope, file);
diff --git a/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js b/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js
index cf60703d1e..88260235ce 100644
--- a/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js
+++ b/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js
@@ -1,11 +1,11 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
optional: true,
group: "builtin-trailing"
};
-export var visitor = {
+export let visitor = {
Program(node, parent, scope, file){
if (file.moduleFormatter._setters){
scope.traverse(file.moduleFormatter._setters, optimizeSettersVisitor, {
@@ -24,7 +24,7 @@ export var visitor = {
* TODO: Ideally this would be optimized during construction of the setters, but the current
* architecture of the module formatters make that difficult.
*/
-var optimizeSettersVisitor = {
+let optimizeSettersVisitor = {
FunctionExpression: {
enter: (node, parent, scope, state) => {
state.hasExports = false;
@@ -44,7 +44,7 @@ var optimizeSettersVisitor = {
if (!t.isIdentifier(node.callee, {name: state.exportFunctionIdentifier.name})) return;
state.hasExports = true;
- var memberNode = t.memberExpression(t.cloneDeep(state.exportObjectIdentifier), node.arguments[0], true);
+ let memberNode = t.memberExpression(t.cloneDeep(state.exportObjectIdentifier), node.arguments[0], true);
return t.assignmentExpression("=", memberNode, node.arguments[1]);
}
};
diff --git a/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js b/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js
index 6013f4772c..9769516a9f 100644
--- a/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js
+++ b/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js
@@ -1,13 +1,13 @@
import { react } from "babel-types";
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
optional: true
};
function hasRefOrSpread(attrs) {
- for (var i = 0; i < attrs.length; i++) {
- var attr = attrs[i];
+ for (let i = 0; i < attrs.length; i++) {
+ let attr = attrs[i];
if (t.isJSXSpreadAttribute(attr)) return true;
if (isJSXAttributeOfName(attr, "ref")) return true;
}
@@ -17,18 +17,18 @@ function hasRefOrSpread(attrs) {
function isJSXAttributeOfName(attr, name) {
return t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name, { name: name });
}
-export var visitor = {
+export let visitor = {
JSXElement(node, parent, scope, file) {
// filter
- var open = node.openingElement;
+ let open = node.openingElement;
if (hasRefOrSpread(open.attributes)) return;
// init
- var isComponent = true;
- var props = t.objectExpression([]);
- var obj = t.objectExpression([]);
- var key = t.nullLiteral();
- var type = open.name;
+ let isComponent = true;
+ let props = t.objectExpression([]);
+ let obj = t.objectExpression([]);
+ let key = t.nullLiteral();
+ let type = open.name;
if (t.isJSXIdentifier(type) && react.isCompatTag(type.name)) {
type = t.stringLiteral(type.name);
@@ -48,14 +48,14 @@ export var visitor = {
pushElemProp("ref", t.nullLiteral());
if (node.children.length) {
- var children = react.buildChildren(node);
+ let children = react.buildChildren(node);
children = children.length === 1 ? children[0] : t.arrayExpression(children);
pushProp(props.properties, t.identifier("children"), children);
}
// props
- for (var i = 0; i < open.attributes.length; i++) {
- var attr = open.attributes[i];
+ for (let i = 0; i < open.attributes.length; i++) {
+ let attr = open.attributes[i];
if (isJSXAttributeOfName(attr, "key")) {
key = attr.value;
} else {
diff --git a/packages/babel-core/src/transformation/transformers/other/async-to-generator.js b/packages/babel-core/src/transformation/transformers/other/async-to-generator.js
index 844bfd0691..a1ca6f2666 100644
--- a/packages/babel-core/src/transformation/transformers/other/async-to-generator.js
+++ b/packages/babel-core/src/transformation/transformers/other/async-to-generator.js
@@ -2,12 +2,12 @@ import remapAsyncToGenerator from "../../helpers/remap-async-to-generator";
export { manipulateOptions } from "./bluebird-coroutines";
-export var metadata = {
+export let metadata = {
optional: true,
dependencies: ["es7.asyncFunctions", "es6.classes"]
};
-export var visitor = {
+export let visitor = {
Function(node, parent, scope, file) {
if (!node.async || node.generator) return;
diff --git a/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js b/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js
index 52cdc1b1e7..1caf3e82cd 100644
--- a/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js
+++ b/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js
@@ -5,12 +5,12 @@ export function manipulateOptions(opts) {
opts.blacklist.push("regenerator");
}
-export var metadata = {
+export let metadata = {
optional: true,
dependencies: ["es7.asyncFunctions", "es6.classes"]
};
-export var visitor = {
+export let visitor = {
Function(node, parent, scope, file) {
if (!node.async || node.generator) return;
diff --git a/packages/babel-core/src/transformation/transformers/other/react-compat.js b/packages/babel-core/src/transformation/transformers/other/react-compat.js
index ed065009eb..0e3be1822b 100644
--- a/packages/babel-core/src/transformation/transformers/other/react-compat.js
+++ b/packages/babel-core/src/transformation/transformers/other/react-compat.js
@@ -5,12 +5,12 @@ export function manipulateOptions(opts) {
opts.blacklist.push("react");
}
-export var metadata = {
+export let metadata = {
optional: true,
group: "builtin-advanced"
};
-export var visitor = require("../../helpers/build-react-transformer")({
+export let visitor = require("../../helpers/build-react-transformer")({
pre(state) {
state.callee = state.tagExpr;
},
diff --git a/packages/babel-core/src/transformation/transformers/other/react.js b/packages/babel-core/src/transformation/transformers/other/react.js
index 1345f842f2..7a8267bef6 100644
--- a/packages/babel-core/src/transformation/transformers/other/react.js
+++ b/packages/babel-core/src/transformation/transformers/other/react.js
@@ -1,16 +1,16 @@
import { react } from "babel-types";
import * as t from "babel-types";
-var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/;
+let JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/;
-export var metadata = {
+export let metadata = {
group: "builtin-advanced"
};
-export var visitor = require("../../helpers/build-react-transformer")({
+export let visitor = require("../../helpers/build-react-transformer")({
pre(state) {
- var tagName = state.tagName;
- var args = state.args;
+ let tagName = state.tagName;
+ let args = state.args;
if (react.isCompatTag(tagName)) {
args.push(t.stringLiteral(tagName));
} else {
@@ -24,11 +24,11 @@ export var visitor = require("../../helpers/build-react-transformer")({
});
visitor.Program = function (node, parent, scope, file) {
- var id = file.opts.jsxPragma;
+ let id = file.opts.jsxPragma;
- for (var i = 0; i < file.ast.comments.length; i++) {
- var comment = file.ast.comments[i];
- var matches = JSX_ANNOTATION_REGEX.exec(comment.value);
+ for (let i = 0; i < file.ast.comments.length; i++) {
+ let comment = file.ast.comments[i];
+ let matches = JSX_ANNOTATION_REGEX.exec(comment.value);
if (matches) {
id = matches[1];
if (id === "React.DOM") {
diff --git a/packages/babel-core/src/transformation/transformers/other/regenerator.js b/packages/babel-core/src/transformation/transformers/other/regenerator.js
index 91f91dffb8..4d051b5f00 100644
--- a/packages/babel-core/src/transformation/transformers/other/regenerator.js
+++ b/packages/babel-core/src/transformation/transformers/other/regenerator.js
@@ -7,11 +7,11 @@ import * as t from "babel-types";
// the version that Regenerator depends on. See for example #1958.
const NodePath = regenerator.types.NodePath;
-export var metadata = {
+export let metadata = {
group: "builtin-advanced"
};
-export var visitor = {
+export let visitor = {
Function: {
exit(node) {
if (node.async || node.generator) {
@@ -33,17 +33,17 @@ export var visitor = {
// complicated by having to include intermediate objects like blockStatement.body
// arrays, in addition to Node objects.
function convertNodePath(path) {
- var programNode;
- var keysAlongPath = [];
+ let programNode;
+ let keysAlongPath = [];
while (path) {
- var pp = path.parentPath;
- var parentNode = pp && pp.node;
+ let pp = path.parentPath;
+ let parentNode = pp && pp.node;
if (parentNode) {
keysAlongPath.push(path.key);
if (parentNode !== path.container) {
- var found = Object.keys(parentNode).some(listKey => {
+ let found = Object.keys(parentNode).some(listKey => {
if (parentNode[listKey] === path.container) {
keysAlongPath.push(listKey);
return true;
@@ -68,7 +68,7 @@ function convertNodePath(path) {
throw new Error("Failed to find root Program node");
}
- var nodePath = new NodePath(programNode);
+ let nodePath = new NodePath(programNode);
while (keysAlongPath.length > 0) {
nodePath = nodePath.get(keysAlongPath.pop());
diff --git a/packages/babel-core/src/transformation/transformers/other/strict.js b/packages/babel-core/src/transformation/transformers/other/strict.js
index 06832f7061..0902c92fcb 100644
--- a/packages/babel-core/src/transformation/transformers/other/strict.js
+++ b/packages/babel-core/src/transformation/transformers/other/strict.js
@@ -1,6 +1,6 @@
import * as t from "babel-types";
-export var metadata = {
+export let metadata = {
group: "builtin-pre"
};
@@ -16,12 +16,12 @@ function isUseStrict(node) {
}
}
-export var visitor = {
+export let visitor = {
Program: {
enter(program) {
- var first = program.body[0];
+ let first = program.body[0];
- var directive;
+ let directive;
if (t.isExpressionStatement(first) && isUseStrict(first.expression)) {
directive = first;
} else {
diff --git a/packages/babel-core/src/transformation/transformers/spec/function-name.js b/packages/babel-core/src/transformation/transformers/spec/function-name.js
index 5b6784c0b2..a4044ce7d2 100644
--- a/packages/babel-core/src/transformation/transformers/spec/function-name.js
+++ b/packages/babel-core/src/transformation/transformers/spec/function-name.js
@@ -1,12 +1,12 @@
import { bare } from "../../helpers/name-method";
-export var metadata = {
+export let metadata = {
group: "builtin-basic"
};
// visit Property functions first - https://github.com/babel/babel/issues/1860
-export var visitor = {
+export let visitor = {
"ArrowFunctionExpression|FunctionExpression": {
exit() {
if (!this.parentPath.isProperty()) {
@@ -16,11 +16,11 @@ export var visitor = {
},
ObjectExpression() {
- var props = this.get("properties");
- for (var prop of (props: Array)) {
- var value = prop.get("value");
+ let props = this.get("properties");
+ for (let prop of (props: Array)) {
+ let value = prop.get("value");
if (value.isFunction()) {
- var newNode = bare(value.node, prop.node, value.scope);
+ let newNode = bare(value.node, prop.node, value.scope);
if (newNode) value.replaceWith(newNode);
}
}
diff --git a/packages/babel-core/src/util.js b/packages/babel-core/src/util.js
index 878af6f20c..cc7fe4f303 100644
--- a/packages/babel-core/src/util.js
+++ b/packages/babel-core/src/util.js
@@ -24,8 +24,8 @@ export { inherits, inspect } from "util";
*/
export function canCompile(filename: string, altExts?: Array) {
- var exts = altExts || canCompile.EXTENSIONS;
- var ext = path.extname(filename);
+ let exts = altExts || canCompile.EXTENSIONS;
+ let ext = path.extname(filename);
return contains(exts, ext);
}
@@ -68,7 +68,7 @@ export function regexify(val: any): RegExp {
if (startsWith(val, "./") || startsWith(val, "*/")) val = val.slice(2);
if (startsWith(val, "**/")) val = val.slice(3);
- var regex = minimatch.makeRe(val, { nocase: true });
+ let regex = minimatch.makeRe(val, { nocase: true });
return new RegExp(regex.source.slice(1, -1), "i");
}
@@ -142,7 +142,7 @@ function _shouldIgnore(pattern, filename) {
* A visitor for Babel templates, replaces placeholder references.
*/
-var templateVisitor = {
+let templateVisitor = {
/**
* 360 NoScope PWNd
*/
@@ -169,7 +169,7 @@ var templateVisitor = {
*/
export function template(name: string, nodes?: Array, keepExpression?: boolean): Object {
- var ast = exports.templates[name];
+ let ast = exports.templates[name];
if (!ast) throw new ReferenceError(`unknown template ${name}`);
if (nodes === true) {
@@ -185,7 +185,7 @@ export function template(name: string, nodes?: Array, keepExpression?: b
if (ast.body.length > 1) return ast.body;
- var node = ast.body[0];
+ let node = ast.body[0];
if (!keepExpression && t.isExpressionStatement(node)) {
return node.expression;
@@ -200,7 +200,7 @@ export function template(name: string, nodes?: Array, keepExpression?: b
export function parseTemplate(loc: string, code: string): Object {
try {
- var ast = parse(code, { filename: loc, looseModules: true }).program;
+ let ast = parse(code, { filename: loc, looseModules: true }).program;
ast = traverse.removeProperties(ast);
return ast;
} catch (err) {
@@ -214,19 +214,19 @@ export function parseTemplate(loc: string, code: string): Object {
*/
function loadTemplates(): Object {
- var templates = {};
+ let templates = {};
- var templatesLoc = path.join(__dirname, "transformation/templates");
+ let templatesLoc = path.join(__dirname, "transformation/templates");
if (!pathExists.sync(templatesLoc)) {
throw new ReferenceError(messages.get("missingTemplatesDirectory"));
}
- for (var name of (fs.readdirSync(templatesLoc): Array)) {
+ for (let name of (fs.readdirSync(templatesLoc): Array)) {
if (name[0] === ".") continue;
- var key = path.basename(name, path.extname(name));
- var loc = path.join(templatesLoc, name);
- var code = fs.readFileSync(loc, "utf8");
+ let key = path.basename(name, path.extname(name));
+ let loc = path.join(templatesLoc, name);
+ let code = fs.readFileSync(loc, "utf8");
templates[key] = parseTemplate(loc, code);
}
diff --git a/packages/babel-generator/src/buffer.js b/packages/babel-generator/src/buffer.js
index 1dc67227d9..8cc1760976 100644
--- a/packages/babel-generator/src/buffer.js
+++ b/packages/babel-generator/src/buffer.js
@@ -210,12 +210,12 @@ export default class Buffer {
*/
_removeSpacesAfterLastNewline() {
- var lastNewlineIndex = this.buf.lastIndexOf("\n");
+ let lastNewlineIndex = this.buf.lastIndexOf("\n");
if (lastNewlineIndex === -1) {
return;
}
- var index = this.buf.length - 1;
+ let index = this.buf.length - 1;
while (index > lastNewlineIndex) {
if (this.buf[index] !== " ") {
break;
@@ -236,7 +236,7 @@ export default class Buffer {
push(str, noIndent) {
if (!this.format.compact && this._indent && !noIndent && str !== "\n") {
// we have an indent level and we aren't pushing a newline
- var indent = this.getIndent();
+ let indent = this.getIndent();
// replace all newlines with newlines with the indentation
str = str.replace(/\n/g, `\n${indent}`);
@@ -254,10 +254,10 @@ export default class Buffer {
_push(str) {
// see startTerminatorless() instance method
- var parenPushNewlineState = this.parenPushNewlineState;
+ let parenPushNewlineState = this.parenPushNewlineState;
if (parenPushNewlineState) {
- for (var i = 0; i < str.length; i++) {
- var cha = str[i];
+ for (let i = 0; i < str.length; i++) {
+ let cha = str[i];
// we can ignore spaces since they wont interupt a terminatorless separator
if (cha === " ") continue;
@@ -299,8 +299,8 @@ export default class Buffer {
isLast(cha) {
if (this.format.compact) return false;
- var buf = this.buf;
- var last = buf[buf.length - 1];
+ let buf = this.buf;
+ let last = buf[buf.length - 1];
if (Array.isArray(cha)) {
return includes(cha, last);
diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js
index d1ec81fd54..598592c4c6 100644
--- a/packages/babel-generator/src/generators/expressions.js
+++ b/packages/babel-generator/src/generators/expressions.js
@@ -5,8 +5,8 @@ import * as t from "babel-types";
const SCIENTIFIC_NOTATION = /e/i;
export function UnaryExpression(node, print) {
- var needsSpace = /[a-z]$/.test(node.operator);
- var arg = node.argument;
+ let needsSpace = /[a-z]$/.test(node.operator);
+ let arg = node.argument;
if (t.isUpdateExpression(arg) || t.isUnaryExpression(arg)) {
needsSpace = true;
@@ -86,9 +86,9 @@ export function CallExpression(node, print) {
this.push("(");
- var isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact;
+ let isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact;
- var separator;
+ let separator;
if (isPrettyCall) {
separator = ",\n";
this.newline();
@@ -115,15 +115,15 @@ function buildYieldAwait(keyword) {
if (node.argument) {
this.push(" ");
- var terminatorState = this.startTerminatorless();
+ let terminatorState = this.startTerminatorless();
print.plain(node.argument);
this.endTerminatorless(terminatorState);
}
};
}
-export var YieldExpression = buildYieldAwait("yield");
-export var AwaitExpression = buildYieldAwait("await");
+export let YieldExpression = buildYieldAwait("yield");
+export let AwaitExpression = buildYieldAwait("await");
export function EmptyStatement() {
this.semicolon();
@@ -144,7 +144,7 @@ export function AssignmentExpression(node, print) {
// todo: add cases where the spaces can be dropped when in compact mode
print.plain(node.left);
- var spaces = node.operator === "in" || node.operator === "instanceof";
+ let spaces = node.operator === "in" || node.operator === "instanceof";
spaces = true; // todo: https://github.com/babel/babel/issues/1835
this.space(spaces);
@@ -175,14 +175,14 @@ export {
};
export function MemberExpression(node, print) {
- var obj = node.object;
+ let obj = node.object;
print.plain(obj);
if (!node.computed && t.isMemberExpression(node.property)) {
throw new TypeError("Got a MemberExpression for MemberExpression property");
}
- var computed = node.computed;
+ let computed = node.computed;
if (t.isLiteral(node.property) && isNumber(node.property.value)) {
computed = true;
}
@@ -193,7 +193,7 @@ export function MemberExpression(node, print) {
this.push("]");
} else {
if (t.isLiteral(node.object)) {
- var val = this._Literal(node.object);
+ let val = this._Literal(node.object);
if (isInteger(+val) && !SCIENTIFIC_NOTATION.test(val) && !this.endsWith(".")) {
this.push(".");
}
diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js
index 8e0e0cf832..4a42f81d04 100644
--- a/packages/babel-generator/src/generators/flow.js
+++ b/packages/babel-generator/src/generators/flow.js
@@ -38,7 +38,7 @@ export function DeclareModule(node, print) {
}
export function DeclareVariable(node, print) {
- this.push("declare var ");
+ this.push("declare let ");
print.plain(node.id);
print.plain(node.id.typeAnnotation);
this.semicolon();
@@ -174,7 +174,7 @@ export { TypeParameterInstantiation as TypeParameterDeclaration };
export function ObjectTypeAnnotation(node, print) {
this.push("{");
- var props = node.properties.concat(node.callProperties, node.indexers);
+ let props = node.properties.concat(node.callProperties, node.indexers);
if (props.length) {
this.space();
diff --git a/packages/babel-generator/src/generators/jsx.js b/packages/babel-generator/src/generators/jsx.js
index b187930a69..a89061e540 100644
--- a/packages/babel-generator/src/generators/jsx.js
+++ b/packages/babel-generator/src/generators/jsx.js
@@ -39,12 +39,12 @@ export function JSXText(node) {
}
export function JSXElement(node, print) {
- var open = node.openingElement;
+ let open = node.openingElement;
print.plain(open);
if (open.selfClosing) return;
this.indent();
- for (var child of (node.children: Array)) {
+ for (let child of (node.children: Array)) {
print.plain(child);
}
this.dedent();
diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js
index 68f86f67dd..920235f05f 100644
--- a/packages/babel-generator/src/generators/methods.js
+++ b/packages/babel-generator/src/generators/methods.js
@@ -17,9 +17,9 @@ export function _params(node, print) {
}
export function _method(node, print) {
- var value = node.value;
- var kind = node.kind;
- var key = node.key;
+ let value = node.value;
+ let kind = node.kind;
+ let key = node.key;
if (kind === "method" || kind === "init") {
if (value.generator) {
diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js
index 951e6bb24b..0864dd58a6 100644
--- a/packages/babel-generator/src/generators/modules.js
+++ b/packages/babel-generator/src/generators/modules.js
@@ -51,10 +51,10 @@ export function ExportDefaultDeclaration(node, print) {
}
function ExportDeclaration(node, print) {
- var specifiers = node.specifiers;
+ let specifiers = node.specifiers;
if (node.declaration) {
- var declar = node.declaration;
+ let declar = node.declaration;
print.plain(declar);
if (t.isStatement(declar) || t.isFunction(declar) || t.isClass(declar)) return;
} else {
@@ -62,8 +62,8 @@ function ExportDeclaration(node, print) {
this.push("type ");
}
- var first = specifiers[0];
- var hasSpecial = false;
+ let first = specifiers[0];
+ let hasSpecial = false;
if (t.isExportDefaultSpecifier(first) || t.isExportNamespaceSpecifier(first)) {
hasSpecial = true;
print.plain(specifiers.shift());
@@ -98,9 +98,9 @@ export function ImportDeclaration(node, print) {
this.push(node.importKind + " ");
}
- var specfiers = node.specifiers;
+ let specfiers = node.specifiers;
if (specfiers && specfiers.length) {
- var first = node.specifiers[0];
+ let first = node.specifiers[0];
if (t.isImportDefaultSpecifier(first) || t.isImportNamespaceSpecifier(first)) {
print.plain(node.specifiers.shift());
if (node.specifiers.length) {
diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js
index d059ead64d..7a67bfdc63 100644
--- a/packages/babel-generator/src/generators/statements.js
+++ b/packages/babel-generator/src/generators/statements.js
@@ -55,7 +55,7 @@ export function WhileStatement(node, print) {
print.block(node.body);
}
-var buildForXStatement = function (op) {
+let buildForXStatement = function (op) {
return function (node, print) {
this.keyword("for");
this.push("(");
@@ -67,8 +67,8 @@ var buildForXStatement = function (op) {
};
};
-export var ForInStatement = buildForXStatement("in");
-export var ForOfStatement = buildForXStatement("of");
+export let ForInStatement = buildForXStatement("in");
+export let ForOfStatement = buildForXStatement("of");
export function DoWhileStatement(node, print) {
this.push("do ");
@@ -84,10 +84,10 @@ function buildLabelStatement(prefix, key = "label") {
return function (node, print) {
this.push(prefix);
- var label = node[key];
+ let label = node[key];
if (label) {
this.push(" ");
- var terminatorState = this.startTerminatorless();
+ let terminatorState = this.startTerminatorless();
print.plain(label);
this.endTerminatorless(terminatorState);
}
@@ -96,10 +96,10 @@ function buildLabelStatement(prefix, key = "label") {
};
}
-export var ContinueStatement = buildLabelStatement("continue");
-export var ReturnStatement = buildLabelStatement("return", "argument");
-export var BreakStatement = buildLabelStatement("break");
-export var ThrowStatement = buildLabelStatement("throw", "argument");
+export let ContinueStatement = buildLabelStatement("continue");
+export let ReturnStatement = buildLabelStatement("return", "argument");
+export let BreakStatement = buildLabelStatement("break");
+export let ThrowStatement = buildLabelStatement("throw", "argument");
export function LabeledStatement(node, print) {
print.plain(node.label);
@@ -176,10 +176,10 @@ export function DebuggerStatement() {
export function VariableDeclaration(node, print, parent) {
this.push(node.kind + " ");
- var hasInits = false;
+ let hasInits = false;
// don't add whitespace to loop heads
if (!t.isFor(parent)) {
- for (var declar of (node.declarations: Array)) {
+ for (let declar of (node.declarations: Array)) {
if (declar.init) {
// has an init so let's split it up over multiple lines
hasInits = true;
@@ -191,15 +191,15 @@ export function VariableDeclaration(node, print, parent) {
// use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on
// this will format declarations like:
//
- // var foo = "bar", bar = "foo";
+ // let foo = "bar", bar = "foo";
//
// into
//
- // var foo = "bar",
+ // let foo = "bar",
// bar = "foo";
//
- var sep;
+ let sep;
if (!this.format.compact && !this.format.concise && hasInits && !this.format.retainLines) {
sep = `,\n${repeating(" ", node.kind.length + 1)}`;
}
diff --git a/packages/babel-generator/src/generators/template-literals.js b/packages/babel-generator/src/generators/template-literals.js
index 1bd78796dd..9d0b4e694c 100644
--- a/packages/babel-generator/src/generators/template-literals.js
+++ b/packages/babel-generator/src/generators/template-literals.js
@@ -10,10 +10,10 @@ export function TemplateElement(node) {
export function TemplateLiteral(node, print) {
this.push("`");
- var quasis = node.quasis;
- var len = quasis.length;
+ let quasis = node.quasis;
+ let len = quasis.length;
- for (var i = 0; i < len; i++) {
+ for (let i = 0; i < len; i++) {
print.plain(quasis[i]);
if (i + 1 < len) {
diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js
index dc892ab8f0..d1fcfac361 100644
--- a/packages/babel-generator/src/generators/types.js
+++ b/packages/babel-generator/src/generators/types.js
@@ -14,7 +14,7 @@ export function RestElement(node, print) {
export { RestElement as SpreadElement, RestElement as SpreadProperty };
export function ObjectExpression(node, print) {
- var props = node.properties;
+ let props = node.properties;
this.push("{");
print.printInnerComments();
@@ -65,14 +65,14 @@ export function Property(node, print) {
}
export function ArrayExpression(node, print) {
- var elems = node.elements;
- var len = elems.length;
+ let elems = node.elements;
+ let len = elems.length;
this.push("[");
print.printInnerComments();
- for (var i = 0; i < elems.length; i++) {
- var elem = elems[i];
+ for (let i = 0; i < elems.length; i++) {
+ let elem = elems[i];
if (elem) {
if (i > 0) this.space();
print.plain(elem);
diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js
index 6a7b60e748..b560b7e518 100644
--- a/packages/babel-generator/src/index.js
+++ b/packages/babel-generator/src/index.js
@@ -40,13 +40,13 @@ class CodeGenerator {
*/
static normalizeOptions(code, opts, tokens) {
- var style = " ";
+ let style = " ";
if (code) {
- var indent = detectIndent(code).indent;
+ let indent = detectIndent(code).indent;
if (indent && indent !== " ") style = indent;
}
- var format = {
+ let format = {
shouldPrintComment: opts.shouldPrintComment,
retainLines: opts.retainLines,
comments: opts.comments == null || opts.comments,
@@ -78,18 +78,18 @@ class CodeGenerator {
* Determine if input code uses more single or double quotes.
*/
static findCommonStringDelimiter(code, tokens) {
- var occurences = {
+ let occurences = {
single: 0,
double: 0
};
- var checked = 0;
+ let checked = 0;
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
+ for (let i = 0; i < tokens.length; i++) {
+ let token = tokens[i];
if (token.type.label !== "string") continue;
- var raw = code.slice(token.start, token.end);
+ let raw = code.slice(token.start, token.end);
if (raw[0] === "'") {
occurences.single++;
} else {
@@ -131,13 +131,13 @@ class CodeGenerator {
*/
generate() {
- var ast = this.ast;
+ let ast = this.ast;
this.print(ast);
if (ast.comments) {
- var comments = [];
- for (var comment of (ast.comments: Array)) {
+ let comments = [];
+ for (let comment of (ast.comments: Array)) {
if (!comment._displayed) comments.push(comment);
}
this._printComments(comments);
@@ -171,7 +171,7 @@ class CodeGenerator {
return;
}
- var lines = 0;
+ let lines = 0;
if (node.start != null && !node._ignoreUserWhitespace) {
// user node
@@ -185,7 +185,7 @@ class CodeGenerator {
if (!leading) lines++; // always include at least a single line after
if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;
- var needs = n.needsWhitespaceAfter;
+ let needs = n.needsWhitespaceAfter;
if (leading) needs = n.needsWhitespaceBefore;
if (needs(node, parent)) lines++;
@@ -203,7 +203,7 @@ class CodeGenerator {
node._compact = true;
}
- var oldConcise = this.format.concise;
+ let oldConcise = this.format.concise;
if (node._compact) {
this.format.concise = true;
}
@@ -212,7 +212,7 @@ class CodeGenerator {
throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node && node.constructor.name)}`);
}
- var needsParens = n.needsParens(node, parent);
+ let needsParens = n.needsParens(node, parent);
if (needsParens) this.push("(");
this.printLeadingComments(node, parent);
@@ -241,11 +241,11 @@ class CodeGenerator {
printJoin(print, nodes, opts = {}) {
if (!nodes || !nodes.length) return;
- var len = nodes.length;
+ let len = nodes.length;
if (opts.indent) this.indent();
- var printOpts = {
+ let printOpts = {
statement: opts.statement,
addNewlines: opts.addNewlines,
after: () => {
@@ -259,8 +259,8 @@ class CodeGenerator {
}
};
- for (var i = 0; i < nodes.length; i++) {
- var node = nodes[i];
+ for (let i = 0; i < nodes.length; i++) {
+ let node = nodes[i];
print.plain(node, printOpts);
}
@@ -268,7 +268,7 @@ class CodeGenerator {
}
printAndIndentOnComments(print, node) {
- var indent = !!node.leadingComments;
+ let indent = !!node.leadingComments;
if (indent) this.indent();
print.plain(node);
if (indent) this.dedent();
@@ -284,7 +284,7 @@ class CodeGenerator {
}
generateComment(comment) {
- var val = comment.value;
+ let val = comment.value;
if (comment.type === "CommentLine") {
val = `//${val}`;
} else {
@@ -306,8 +306,8 @@ class CodeGenerator {
return [];
}
- var comments = [];
- var nodes = [node];
+ let comments = [];
+ let nodes = [node];
if (t.isExpressionStatement(node)) {
nodes.push(node.argument);
@@ -339,7 +339,7 @@ class CodeGenerator {
_printComments(comments) {
if (!comments || !comments.length) return;
- for (var comment of (comments: Array)) {
+ for (let comment of (comments: Array)) {
if (!this.shouldPrintComment(comment)) continue;
if (comment._displayed) continue;
comment._displayed = true;
@@ -349,8 +349,8 @@ class CodeGenerator {
// whitespace before
this.newline(this.whitespace.getNewlinesBefore(comment));
- var column = this.position.column;
- var val = this.generateComment(comment);
+ let column = this.position.column;
+ let val = this.generateComment(comment);
if (column && !this.isLast(["\n", " ", "[", "{"])) {
this._push(" ");
@@ -359,13 +359,13 @@ class CodeGenerator {
//
if (comment.type === "CommentBlock" && this.format.indent.adjustMultilineComment) {
- var offset = comment.loc && comment.loc.start.column;
+ let offset = comment.loc && comment.loc.start.column;
if (offset) {
- var newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
+ let newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
val = val.replace(newlineRegex, "\n");
}
- var indent = Math.max(this.indentSize(), column);
+ let indent = Math.max(this.indentSize(), column);
val = val.replace(/\n/g, `\n${repeating(" ", indent)}`);
}
@@ -399,7 +399,7 @@ each(CodeGenerator.generators, function (generator) {
});
module.exports = function (ast, opts, code) {
- var gen = new CodeGenerator(ast, opts, code);
+ let gen = new CodeGenerator(ast, opts, code);
return gen.generate();
};
diff --git a/packages/babel-generator/src/node/index.js b/packages/babel-generator/src/node/index.js
index ef60e3a2c8..b6fecc1a9f 100644
--- a/packages/babel-generator/src/node/index.js
+++ b/packages/babel-generator/src/node/index.js
@@ -14,16 +14,16 @@ import * as t from "babel-types";
* }, node, parent);
*/
-var find = function (obj, node, parent) {
+let find = function (obj, node, parent) {
if (!obj) return;
- var result;
+ let result;
- var types = Object.keys(obj);
- for (var i = 0; i < types.length; i++) {
- var type = types[i];
+ let types = Object.keys(obj);
+ for (let i = 0; i < types.length; i++) {
+ let type = types[i];
if (t.is(type, node)) {
- var fn = obj[type];
+ let fn = obj[type];
result = fn(node, parent);
if (result != null) break;
}
@@ -61,12 +61,12 @@ export default class Node {
node = node.expression;
}
- var linesInfo = find(whitespace.nodes, node, parent);
+ let linesInfo = find(whitespace.nodes, node, parent);
if (!linesInfo) {
- var items = find(whitespace.list, node, parent);
+ let items = find(whitespace.list, node, parent);
if (items) {
- for (var i = 0; i < items.length; i++) {
+ for (let i = 0; i < items.length; i++) {
linesInfo = Node.needsWhitespace(items[i], node, type);
if (linesInfo) break;
}
@@ -102,7 +102,7 @@ export default class Node {
if (t.isNewExpression(parent) && parent.callee === node) {
if (t.isCallExpression(node)) return true;
- var hasCall = some(node, function (val) {
+ let hasCall = some(node, function (val) {
return t.isCallExpression(val);
});
if (hasCall) return true;
@@ -119,12 +119,12 @@ export default class Node {
each(Node, function (fn, key) {
Node.prototype[key] = function () {
// Avoid leaking arguments to prevent deoptimization
- var args = new Array(arguments.length + 2);
+ let args = new Array(arguments.length + 2);
args[0] = this.node;
args[1] = this.parent;
- for (var i = 0; i < args.length; i++) {
+ for (let i = 0; i < args.length; i++) {
args[i + 2] = arguments[i];
}
diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js
index cb7642c7a1..11c8eb3502 100644
--- a/packages/babel-generator/src/node/parentheses.js
+++ b/packages/babel-generator/src/node/parentheses.js
@@ -62,11 +62,11 @@ export function Binary(node, parent) {
}
if (t.isBinary(parent)) {
- var parentOp = parent.operator;
- var parentPos = PRECEDENCE[parentOp];
+ let parentOp = parent.operator;
+ let parentPos = PRECEDENCE[parentOp];
- var nodeOp = node.operator;
- var nodePos = PRECEDENCE[nodeOp];
+ let nodeOp = node.operator;
+ let nodePos = PRECEDENCE[nodeOp];
if (parentPos > nodePos) {
return true;
@@ -80,7 +80,7 @@ export function Binary(node, parent) {
export function BinaryExpression(node, parent) {
if (node.operator === "in") {
- // var i = (1 in []);
+ // let i = (1 in []);
if (t.isVariableDeclarator(parent)) {
return true;
}
diff --git a/packages/babel-generator/src/node/printer.js b/packages/babel-generator/src/node/printer.js
index ce580cae1f..5ee0f4a9a7 100644
--- a/packages/babel-generator/src/node/printer.js
+++ b/packages/babel-generator/src/node/printer.js
@@ -14,7 +14,7 @@ export default class NodePrinter {
printInnerComments() {
if (!this.parent.innerComments) return;
- var gen = this.generator;
+ let gen = this.generator;
gen.indent();
gen._printComments(this.parent.innerComments);
gen.dedent();
diff --git a/packages/babel-generator/src/node/whitespace.js b/packages/babel-generator/src/node/whitespace.js
index 6511c35949..2623e1a273 100644
--- a/packages/babel-generator/src/node/whitespace.js
+++ b/packages/babel-generator/src/node/whitespace.js
@@ -64,7 +64,7 @@ exports.nodes = {
*/
AssignmentExpression(node) {
- var state = crawl(node.right);
+ let state = crawl(node.right);
if ((state.hasCall && state.hasHelper) || state.hasFunction) {
return {
before: state.hasFunction,
@@ -125,12 +125,12 @@ exports.nodes = {
*/
VariableDeclaration(node) {
- for (var i = 0; i < node.declarations.length; i++) {
- var declar = node.declarations[i];
+ for (let i = 0; i < node.declarations.length; i++) {
+ let declar = node.declarations[i];
- var enabled = isHelper(declar.id) && !isType(declar.init);
+ let enabled = isHelper(declar.id) && !isType(declar.init);
if (!enabled) {
- var state = crawl(declar.init);
+ let state = crawl(declar.init);
enabled = (isHelper(declar.init) && state.hasCall) || state.hasFunction;
}
diff --git a/packages/babel-generator/src/position.js b/packages/babel-generator/src/position.js
index 9dc707b5d2..a6787fd3b2 100644
--- a/packages/babel-generator/src/position.js
+++ b/packages/babel-generator/src/position.js
@@ -13,7 +13,7 @@ export default class Position {
*/
push(str) {
- for (var i = 0; i < str.length; i++) {
+ for (let i = 0; i < str.length; i++) {
if (str[i] === "\n") {
this.line++;
this.column = 0;
@@ -28,7 +28,7 @@ export default class Position {
*/
unshift(str) {
- for (var i = 0; i < str.length; i++) {
+ for (let i = 0; i < str.length; i++) {
if (str[i] === "\n") {
this.line--;
} else {
diff --git a/packages/babel-generator/src/source-map.js b/packages/babel-generator/src/source-map.js
index 51cb5665a7..f1b3ee3727 100644
--- a/packages/babel-generator/src/source-map.js
+++ b/packages/babel-generator/src/source-map.js
@@ -27,7 +27,7 @@ export default class SourceMap {
*/
get() {
- var map = this.map;
+ let map = this.map;
if (map) {
return map.toJSON();
} else {
@@ -40,22 +40,22 @@ export default class SourceMap {
*/
mark(node, type) {
- var loc = node.loc;
+ let loc = node.loc;
if (!loc) return; // no location info
- var map = this.map;
+ let map = this.map;
if (!map) return; // no source map
if (t.isProgram(node) || t.isFile(node)) return; // illegal mapping nodes
- var position = this.position;
+ let position = this.position;
- var generated = {
+ let generated = {
line: position.line,
column: position.column
};
- var original = loc[type];
+ let original = loc[type];
map.addMapping({
source: this.opts.sourceFileName,
diff --git a/packages/babel-generator/src/whitespace.js b/packages/babel-generator/src/whitespace.js
index 24ff017962..05816b1b73 100644
--- a/packages/babel-generator/src/whitespace.js
+++ b/packages/babel-generator/src/whitespace.js
@@ -38,14 +38,14 @@ export default class Whitespace {
*/
getNewlinesBefore(node) {
- var startToken;
- var endToken;
- var tokens = this.tokens;
+ let startToken;
+ let endToken;
+ let tokens = this.tokens;
- for (var j = 0; j < tokens.length; j++) {
+ for (let j = 0; j < tokens.length; j++) {
// optimize for forward traversal by shifting for loop index
- var i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length);
- var token = tokens[i];
+ let i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length);
+ let token = tokens[i];
// this is the token this node starts with
if (node.start === token.start) {
@@ -65,14 +65,14 @@ export default class Whitespace {
*/
getNewlinesAfter(node) {
- var startToken;
- var endToken;
- var tokens = this.tokens;
+ let startToken;
+ let endToken;
+ let tokens = this.tokens;
- for (var j = 0; j < tokens.length; j++) {
+ for (let j = 0; j < tokens.length; j++) {
// optimize for forward traversal by shifting for loop index
- var i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length);
- var token = tokens[i];
+ let i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length);
+ let token = tokens[i];
// this is the token this node ends with
if (node.end === token.end) {
@@ -88,7 +88,7 @@ export default class Whitespace {
if (endToken && endToken.type.label === "eof") {
return 1;
} else {
- var lines = this.getNewlinesBetween(startToken, endToken);
+ let lines = this.getNewlinesBetween(startToken, endToken);
if (node.type === "CommentLine" && !lines) {
// line comment
return 1;
@@ -105,11 +105,11 @@ export default class Whitespace {
getNewlinesBetween(startToken, endToken) {
if (!endToken || !endToken.loc) return 0;
- var start = startToken ? startToken.loc.end.line : 1;
- var end = endToken.loc.start.line;
- var lines = 0;
+ let start = startToken ? startToken.loc.end.line : 1;
+ let end = endToken.loc.start.line;
+ let lines = 0;
- for (var line = start; line < end; line++) {
+ for (let line = start; line < end; line++) {
if (typeof this.used[line] === "undefined") {
this.used[line] = true;
lines++;
From 20f643b419c0362eadc98308d64a1b46e2f2810a Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Wed, 23 Sep 2015 15:59:41 +0100
Subject: [PATCH 122/174] type annotate babylon
---
packages/babylon/src/index.js | 2 +
packages/babylon/src/options.js | 4 +-
packages/babylon/src/parser/comments.js | 2 +
packages/babylon/src/parser/expression.js | 6 +-
packages/babylon/src/parser/index.js | 16 +++-
packages/babylon/src/parser/location.js | 2 +
packages/babylon/src/parser/lval.js | 8 +-
packages/babylon/src/parser/node.js | 17 ++--
packages/babylon/src/parser/statement.js | 4 +-
packages/babylon/src/parser/util.js | 2 +
packages/babylon/src/plugins/flow.js | 2 +
packages/babylon/src/plugins/jsx/index.js | 2 +
packages/babylon/src/tokenizer/context.js | 14 +++-
packages/babylon/src/tokenizer/index.js | 14 ++--
packages/babylon/src/tokenizer/state.js | 96 +++++++++++++++++------
packages/babylon/src/tokenizer/types.js | 2 +
packages/babylon/src/util/identifier.js | 2 +
packages/babylon/src/util/location.js | 2 +
packages/babylon/src/util/whitespace.js | 2 +
19 files changed, 154 insertions(+), 45 deletions(-)
diff --git a/packages/babylon/src/index.js b/packages/babylon/src/index.js
index 694c4e4838..b01a0b1197 100755
--- a/packages/babylon/src/index.js
+++ b/packages/babylon/src/index.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import Parser, { plugins } from "./parser";
import "./parser/util";
import "./parser/statement";
diff --git a/packages/babylon/src/options.js b/packages/babylon/src/options.js
index f33e39d920..3b97f93a63 100755
--- a/packages/babylon/src/options.js
+++ b/packages/babylon/src/options.js
@@ -1,3 +1,5 @@
+/* @flow */
+
// A second optional argument can be given to further configure
// the parser process. These options are recognized:
@@ -18,7 +20,7 @@ export const defaultOptions = {
// Interpret and default an options object
-export function getOptions(opts) {
+export function getOptions(opts?: Object): Object {
let options = {};
for (let key in defaultOptions) {
options[key] = opts && key in opts ? opts[key] : defaultOptions[key];
diff --git a/packages/babylon/src/parser/comments.js b/packages/babylon/src/parser/comments.js
index 39aa197872..5a3e96abcc 100644
--- a/packages/babylon/src/parser/comments.js
+++ b/packages/babylon/src/parser/comments.js
@@ -1,3 +1,5 @@
+/* @flow */
+
/**
* Based on the comment attachment algorithm used in espree and estraverse.
*
diff --git a/packages/babylon/src/parser/expression.js b/packages/babylon/src/parser/expression.js
index 786b094a25..8c9898429c 100644
--- a/packages/babylon/src/parser/expression.js
+++ b/packages/babylon/src/parser/expression.js
@@ -1,3 +1,5 @@
+/* @flow */
+
// A recursive descent parser operates by defining functions for all
// syntactic elements, and recursively calling those, each function
// advancing the input stream and returning an AST node. Precedence
@@ -793,7 +795,7 @@ pp.parseFunctionBody = function (node, allowExpression) {
// normal function
if (!isExpression && node.body.directives.length) {
- for (var directive of (node.body.directives: Array)) {
+ for (var directive of (node.body.directives: Array)) {
if (directive.value === "use strict") {
checkLVal = true;
checkLValStrict = true;
@@ -809,7 +811,7 @@ pp.parseFunctionBody = function (node, allowExpression) {
if (node.id) {
this.checkLVal(node.id, true);
}
- for (let param of (node.params: Array)) {
+ for (let param of (node.params: Array)) {
this.checkLVal(param, true, nameHash);
}
this.state.strict = oldStrict;
diff --git a/packages/babylon/src/parser/index.js b/packages/babylon/src/parser/index.js
index d0752f5af1..59dd256bae 100644
--- a/packages/babylon/src/parser/index.js
+++ b/packages/babylon/src/parser/index.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { reservedWords } from "../util/identifier";
import { getOptions } from "../options";
import Tokenizer from "../tokenizer";
@@ -7,7 +9,7 @@ import Tokenizer from "../tokenizer";
export const plugins = {};
export default class Parser extends Tokenizer {
- constructor(options, input) {
+ constructor(options, input: string) {
options = getOptions(options);
super(options, input);
@@ -25,11 +27,11 @@ export default class Parser extends Tokenizer {
}
}
- hasFeature(name) {
+ hasFeature(name: string): boolean {
return !!this.options.features[name];
}
- extend(name, f) {
+ extend(name: string, f: Function) {
this[name] = f(this[name]);
}
@@ -41,7 +43,13 @@ export default class Parser extends Tokenizer {
}
}
- parse() {
+ parse(): {
+ type: "File",
+ program: {
+ type: "Program",
+ body: Array
+ }
+ } {
let file = this.startNode();
let program = this.startNode();
this.nextToken();
diff --git a/packages/babylon/src/parser/location.js b/packages/babylon/src/parser/location.js
index c8f10cc172..3029551c43 100644
--- a/packages/babylon/src/parser/location.js
+++ b/packages/babylon/src/parser/location.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { getLineInfo } from "../util/location";
import Parser from "./index";
diff --git a/packages/babylon/src/parser/lval.js b/packages/babylon/src/parser/lval.js
index cb8cae285a..333b6457b8 100644
--- a/packages/babylon/src/parser/lval.js
+++ b/packages/babylon/src/parser/lval.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { types as tt } from "../tokenizer/types";
import Parser from "./index";
import { reservedWords } from "../util/identifier";
@@ -18,7 +20,7 @@ pp.toAssignable = function (node, isBinding) {
case "ObjectExpression":
node.type = "ObjectPattern";
- for (let prop of (node.properties: Array)) {
+ for (let prop of (node.properties: Array)) {
if (prop.type === "SpreadProperty") continue;
if (prop.kind !== "init") this.raise(prop.key.start, "Object pattern can't contain getter or setter");
this.toAssignable(prop.value, isBinding);
@@ -184,14 +186,14 @@ pp.checkLVal = function (expr, isBinding, checkClashes) {
break;
case "ObjectPattern":
- for (let prop of (expr.properties: Array)) {
+ for (let prop of (expr.properties: Array)) {
if (prop.type === "Property") prop = prop.value;
this.checkLVal(prop, isBinding, checkClashes);
}
break;
case "ArrayPattern":
- for (let elem of (expr.elements: Array)) {
+ for (let elem of (expr.elements: Array)) {
if (elem) this.checkLVal(elem, isBinding, checkClashes);
}
break;
diff --git a/packages/babylon/src/parser/node.js b/packages/babylon/src/parser/node.js
index 7fb0cd2a62..d3544bc816 100644
--- a/packages/babylon/src/parser/node.js
+++ b/packages/babylon/src/parser/node.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import Parser from "./index";
import { SourceLocation } from "../util/location";
@@ -5,15 +7,20 @@ import { SourceLocation } from "../util/location";
const pp = Parser.prototype;
-export class Node {
- constructor(parser, pos, loc) {
+class Node {
+ constructor(pos?: number, loc?: SourceLocation) {
this.type = "";
this.start = pos;
this.end = 0;
this.loc = new SourceLocation(loc);
}
- __clone() {
+ type: string;
+ start: ?number;
+ end: number;
+ loc: SourceLocation;
+
+ __clone(): Node {
var node2 = new Node;
for (var key in this) node2[key] = this[key];
return node2;
@@ -21,11 +28,11 @@ export class Node {
}
pp.startNode = function () {
- return new Node(this, this.state.start, this.state.startLoc);
+ return new Node(this.state.start, this.state.startLoc);
};
pp.startNodeAt = function (pos, loc) {
- return new Node(this, pos, loc);
+ return new Node(pos, loc);
};
function finishNodeAt(node, type, pos, loc) {
diff --git a/packages/babylon/src/parser/statement.js b/packages/babylon/src/parser/statement.js
index 536db0a82c..14cc0daa40 100644
--- a/packages/babylon/src/parser/statement.js
+++ b/packages/babylon/src/parser/statement.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { types as tt } from "../tokenizer/types";
import Parser from "./index";
import { lineBreak } from "../util/whitespace";
@@ -380,7 +382,7 @@ pp.parseEmptyStatement = function (node) {
};
pp.parseLabeledStatement = function (node, maybeName, expr) {
- for (let label of (this.state.labels: Array)){
+ for (let label of (this.state.labels: Array)){
if (label.name === maybeName) {
this.raise(expr.start, `Label '${maybeName}' is already declared`);
}
diff --git a/packages/babylon/src/parser/util.js b/packages/babylon/src/parser/util.js
index 2719607626..e20e2467c9 100644
--- a/packages/babylon/src/parser/util.js
+++ b/packages/babylon/src/parser/util.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { types as tt } from "../tokenizer/types";
import Parser from "./index";
import { lineBreak } from "../util/whitespace";
diff --git a/packages/babylon/src/plugins/flow.js b/packages/babylon/src/plugins/flow.js
index ea58d81aae..7fe1d97d19 100644
--- a/packages/babylon/src/plugins/flow.js
+++ b/packages/babylon/src/plugins/flow.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { types as tt } from "../tokenizer/types";
import Parser from "../parser";
diff --git a/packages/babylon/src/plugins/jsx/index.js b/packages/babylon/src/plugins/jsx/index.js
index b6ae663bee..c373f88b8d 100644
--- a/packages/babylon/src/plugins/jsx/index.js
+++ b/packages/babylon/src/plugins/jsx/index.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import XHTMLEntities from "./xhtml";
import { TokenType, types as tt } from "../../tokenizer/types";
import { TokContext, types as tc } from "../../tokenizer/context";
diff --git a/packages/babylon/src/tokenizer/context.js b/packages/babylon/src/tokenizer/context.js
index 05fb07056f..ef44998c8d 100644
--- a/packages/babylon/src/tokenizer/context.js
+++ b/packages/babylon/src/tokenizer/context.js
@@ -1,3 +1,5 @@
+/* @flow */
+
// The algorithm used to determine whether a regexp can appear at a
// given point in the program is loosely based on sweet.js' approach.
// See https://github.com/mozilla/sweet.js/wiki/design
@@ -5,12 +7,22 @@
import { types as tt } from "./types";
export class TokContext {
- constructor(token, isExpr, preserveSpace, override) {
+ constructor(
+ token: string,
+ isExpr?: boolean,
+ preserveSpace?: boolean,
+ override?: Function,
+ ) {
this.token = token;
this.isExpr = !!isExpr;
this.preserveSpace = !!preserveSpace;
this.override = override;
}
+
+ token: string;
+ isExpr: boolean;
+ preserveSpace: boolean;
+ override: ?Function;
}
export const types = {
diff --git a/packages/babylon/src/tokenizer/index.js b/packages/babylon/src/tokenizer/index.js
index 3839f81e58..535fd5b856 100644
--- a/packages/babylon/src/tokenizer/index.js
+++ b/packages/babylon/src/tokenizer/index.js
@@ -1,3 +1,6 @@
+/* @flow */
+
+import type { TokenType } from "./types";
import { isIdentifierStart, isIdentifierChar, isKeyword } from "../util/identifier";
import { types as tt, keywords as keywordTypes } from "./types";
import { types as ct } from "./context";
@@ -18,9 +21,11 @@ export class Token {
this.loc = new SourceLocation(state.startLoc, state.endLoc);
}
- get range() {
- return [this.start, this.end];
- }
+ type: TokenType;
+ value: any;
+ start: number;
+ end: number;
+ loc: SourceLocation;
}
// ## Tokenizer
@@ -162,8 +167,7 @@ export default class Tokenizer {
value: text,
start: start,
end: end,
- loc: new SourceLocation(startLoc, endLoc),
- range: [start, end]
+ loc: new SourceLocation(startLoc, endLoc)
};
if (!this.isLookahead) {
diff --git a/packages/babylon/src/tokenizer/state.js b/packages/babylon/src/tokenizer/state.js
index b5a846ae20..b536a1fd8a 100644
--- a/packages/babylon/src/tokenizer/state.js
+++ b/packages/babylon/src/tokenizer/state.js
@@ -1,70 +1,120 @@
+/* @flow */
+
+import type { TokContext } from "./context";
+import type { Token } from "./index";
import { Position } from "../util/location";
import { types as ct } from "./context";
import { types as tt } from "./types";
export default class State {
- init(options, input) {
- // strict
+ init(options: Object, input: string) {
this.strict = options.strictMode === false ? false : options.sourceType === "module";
this.input = input;
- // Used to signify the start of a potential arrow function
this.potentialArrowAt = -1;
- // Flags to track whether we are in a function, a generator.
this.inFunction = this.inGenerator = false;
- // Labels in scope.
this.labels = [];
- // Leading decorators.
this.decorators = [];
- // Token store.
this.tokens = [];
- // Comment store.
this.comments = [];
- // Comment attachment store
this.trailingComments = [];
this.leadingComments = [];
this.commentStack = [];
- // The current position of the tokenizer in the input.
this.pos = this.lineStart = 0;
this.curLine = 1;
- // Properties of the current token:
- // Its type
this.type = tt.eof;
- // For tokens that include more information than their type, the value
this.value = null;
- // Its start and end offset
this.start = this.end = this.pos;
- // And, if locations are used, the {line, column} object
- // corresponding to those offsets
this.startLoc = this.endLoc = this.curPosition();
- // Position information for the previous token
this.lastTokEndLoc = this.lastTokStartLoc = null;
this.lastTokStart = this.lastTokEnd = this.pos;
- // The context stack is used to superficially track syntactic
- // context to predict whether a regular expression is allowed in a
- // given position.
this.context = [ct.b_stat];
this.exprAllowed = true;
- // Used to signal to callers of `readWord1` whether the word
- // contained any escape sequences. This is needed because words with
- // escape sequences must not be interpreted as keywords.
this.containsEsc = false;
return this;
}
+ // TODO
+ strict: boolean;
+
+ // TODO
+ input: string;
+
+ // Used to signify the start of a potential arrow function
+ potentialArrowAt: number;
+
+ // Flags to track whether we are in a function, a generator.
+ inFunction: boolean;
+ inGenerator: boolean;
+
+ // Labels in scope.
+ labels: Array;
+
+ // Leading decorators.
+ decorators: Array;
+
+ // Token store.
+ tokens: Array;
+
+ // Comment store.
+ comments: Array;
+
+ // Comment attachment store
+ trailingComments: Array;
+ leadingComments: Array;
+ commentStack: Array;
+
+ // The current position of the tokenizer in the input.
+ pos: number;
+ lineStart: number;
+ curLine: number;
+
+ // Properties of the current token:
+ // Its type
+ type: Token;
+
+ // For tokens that include more information than their type, the value
+ value: any;
+
+ // Its start and end offset
+ start: number;
+ end: number;
+
+ // And, if locations are used, the {line, column} object
+ // corresponding to those offsets
+ startLoc: Position;
+ endLoc: Position;
+
+ // Position information for the previous token
+ lastTokEndLoc: ?Position;
+ lastTokStartLoc: ?Position;
+ lastTokStart: number;
+ lastTokEnd: number;
+
+ // The context stack is used to superficially track syntactic
+ // context to predict whether a regular expression is allowed in a
+ // given position.
+ context: Array;
+ exprAllowed: boolean;
+
+ // Used to signal to callers of `readWord1` whether the word
+ // contained any escape sequences. This is needed because words with
+ // escape sequences must not be interpreted as keywords.
+ containsEsc: boolean;
+
curPosition() {
return new Position(this.curLine, this.pos - this.lineStart);
}
diff --git a/packages/babylon/src/tokenizer/types.js b/packages/babylon/src/tokenizer/types.js
index d64407e920..90b60f4ca2 100644
--- a/packages/babylon/src/tokenizer/types.js
+++ b/packages/babylon/src/tokenizer/types.js
@@ -1,3 +1,5 @@
+/* @flow */
+
// ## Token types
// The assignment of fine-grained, information-carrying type objects
diff --git a/packages/babylon/src/util/identifier.js b/packages/babylon/src/util/identifier.js
index 48847c6277..947e993ade 100644
--- a/packages/babylon/src/util/identifier.js
+++ b/packages/babylon/src/util/identifier.js
@@ -1,3 +1,5 @@
+/* @flow */
+
// This is a trick taken from Esprima. It turns out that, on
// non-Chrome browsers, to check whether a string is in a set, a
// predicate containing a big ugly `switch` statement is faster than
diff --git a/packages/babylon/src/util/location.js b/packages/babylon/src/util/location.js
index 883d4b3daa..47019f1068 100644
--- a/packages/babylon/src/util/location.js
+++ b/packages/babylon/src/util/location.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import { lineBreakG } from "./whitespace";
// These are used when `options.locations` is on, for the
diff --git a/packages/babylon/src/util/whitespace.js b/packages/babylon/src/util/whitespace.js
index d517d1f28a..78d800df7c 100644
--- a/packages/babylon/src/util/whitespace.js
+++ b/packages/babylon/src/util/whitespace.js
@@ -1,3 +1,5 @@
+/* @flow */
+
// Matches a whole line break (where CRLF is considered a single
// line break). Used to count lines.
From 119520ed8725840d864adf351fdca42d91ef60a3 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Wed, 23 Sep 2015 16:00:41 +0100
Subject: [PATCH 123/174] add lib folder
---
lib/file.js | 27 +++++++++++++++++++++++++++
lib/parser.js | 10 ++++++++++
2 files changed, 37 insertions(+)
create mode 100644 lib/file.js
create mode 100644 lib/parser.js
diff --git a/lib/file.js b/lib/file.js
new file mode 100644
index 0000000000..f3c6f32c8d
--- /dev/null
+++ b/lib/file.js
@@ -0,0 +1,27 @@
+type BabelFileModulesMetadata = {
+ imports: Array,
+ exports: {
+ exported: Array,
+ specifiers: Array
+ }
+};
+
+type BabelFileMetadata = {
+ usedHelpers: Array;
+
+ marked: Array<{
+ type: string;
+ message: string;
+ loc: Object;
+ }>;
+
+ modules: BabelFileModulesMetadata
+};
+
+type BabelFileResult = {
+ ast?: ?Object;
+ code?: ?string;
+ map?: ?Object;
+ ignored?: ?boolean;
+ metadata?: ?BabelFileMetadata;
+};
diff --git a/lib/parser.js b/lib/parser.js
new file mode 100644
index 0000000000..a7fbb53186
--- /dev/null
+++ b/lib/parser.js
@@ -0,0 +1,10 @@
+type BabelParserOptions = {
+ strictMode?: boolean;
+ looseModules?: boolean;
+ highlightCode?: boolean;
+ nonStandard?: boolean;
+ sourceType?: "module" | "script";
+ filename?: string;
+ features?: Object;
+ plugins?: Object;
+};
From 227ed5638ae1269713df7cb9e0da317761b02a4b Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Wed, 23 Sep 2015 16:10:44 +0100
Subject: [PATCH 124/174] add flow type annotations
---
packages/babel-core/src/api/browser.js | 14 +--
packages/babel-core/src/api/node.js | 7 +-
packages/babel-core/src/api/register/node.js | 38 ++++----
packages/babel-core/src/helpers/merge.js | 8 +-
.../babel-core/src/helpers/normalize-ast.js | 8 +-
packages/babel-core/src/helpers/parse.js | 4 +-
packages/babel-core/src/store.js | 15 +++-
.../src/tools/build-external-helpers.js | 7 +-
.../src/transformation/file/logger.js | 11 ++-
.../src/transformation/file/options/index.js | 22 +----
.../file/options/option-manager.js | 31 ++++---
.../transformation/file/options/parsers.js | 10 ++-
...-binary-assignment-operator-transformer.js | 7 +-
.../helpers/build-comprehension.js | 4 +-
...itional-assignment-operator-transformer.js | 10 ++-
.../transformation/helpers/call-delegate.js | 5 +-
.../src/transformation/helpers/define-map.js | 13 +--
.../helpers/explode-assignable-expression.js | 23 +++--
.../helpers/get-function-arity.js | 10 ++-
.../helpers/memoise-decorators.js | 8 +-
.../src/transformation/helpers/name-method.js | 14 +--
.../src/transformation/helpers/regex.js | 6 +-
.../helpers/remap-async-to-generator.js | 10 ++-
.../transformation/helpers/replace-supers.js | 27 +++++-
.../babel-core/src/transformation/index.js | 2 +
.../internal-plugins/block-hoist.js | 2 +
.../internal-plugins/shadow-functions.js | 2 +
.../src/transformation/modules/_default.js | 72 +++++++++------
.../src/transformation/modules/_strict.js | 8 +-
.../src/transformation/modules/amd-strict.js | 2 +
.../src/transformation/modules/amd.js | 2 +
.../transformation/modules/common-strict.js | 2 +
.../src/transformation/modules/ignore.js | 2 +
.../src/transformation/modules/index.js | 2 +
.../transformation/modules/lib/metadata.js | 2 +
.../src/transformation/modules/lib/remaps.js | 2 +
.../src/transformation/modules/system.js | 2 +
.../src/transformation/modules/umd-strict.js | 2 +
.../src/transformation/modules/umd.js | 2 +
.../babel-core/src/transformation/pipeline.js | 4 +-
.../src/transformation/plugin-pass.js | 10 ++-
.../babel-core/src/transformation/plugin.js | 13 ++-
.../transformers/es5/properties.mutators.js | 41 +--------
packages/babel-core/src/util.js | 16 ++--
packages/babel-generator/src/buffer.js | 47 +++++-----
.../babel-generator/src/generators/base.js | 10 ++-
.../babel-generator/src/generators/classes.js | 12 ++-
.../src/generators/comprehensions.js | 8 +-
.../src/generators/expressions.js | 44 +++++-----
.../babel-generator/src/generators/flow.js | 59 +++++++------
.../babel-generator/src/generators/jsx.js | 26 +++---
.../babel-generator/src/generators/methods.js | 11 ++-
.../babel-generator/src/generators/modules.js | 43 ++++-----
.../src/generators/statements.js | 33 +++----
.../src/generators/template-literals.js | 10 ++-
.../babel-generator/src/generators/types.js | 23 ++---
packages/babel-generator/src/index.js | 87 ++++++++++---------
packages/babel-generator/src/node/index.js | 47 ++--------
.../babel-generator/src/node/parentheses.js | 84 +++++++++++-------
packages/babel-generator/src/node/printer.js | 2 +
.../babel-generator/src/node/whitespace.js | 2 +
packages/babel-generator/src/position.js | 2 +
packages/babel-generator/src/source-map.js | 2 +
packages/babel-generator/src/whitespace.js | 2 +
64 files changed, 616 insertions(+), 440 deletions(-)
diff --git a/packages/babel-core/src/api/browser.js b/packages/babel-core/src/api/browser.js
index 17d8883762..f166494c60 100644
--- a/packages/babel-core/src/api/browser.js
+++ b/packages/babel-core/src/api/browser.js
@@ -1,13 +1,15 @@
+/* @flow */
+
/* eslint no-new-func: 0 */
import { transform } from "./node";
export * from "./node";
-export function run(code, opts = {}) {
+export function run(code: string, opts: Object = {}): any {
return new Function(transform(code, opts).code)();
}
-export function load(url, callback, opts = {}, hold) {
+export function load(url: string, callback: Function, opts: Object = {}, hold?: boolean) {
opts.filename = opts.filename || url;
let xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest();
@@ -31,7 +33,7 @@ export function load(url, callback, opts = {}, hold) {
}
function runScripts() {
- let scripts = [];
+ let scripts: Array | Object> = [];
let types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];
let index = 0;
@@ -42,7 +44,7 @@ function runScripts() {
function exec() {
let param = scripts[index];
if (param instanceof Array) {
- run(param);
+ run(param, index);
index++;
exec();
}
@@ -52,7 +54,7 @@ function runScripts() {
* Load, transform, and execute all scripts.
*/
- function run(script, i) {
+ function run(script: Object, i: number) {
let opts = {};
if (script.src) {
@@ -75,7 +77,7 @@ function runScripts() {
if (types.indexOf(_script.type) >= 0) scripts.push(_script);
}
- for (i in scripts) {
+ for (let i = 0; i < scripts.length; i++) {
run(scripts[i], i);
}
diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/api/node.js
index a4630f6257..d2a34f9a61 100644
--- a/packages/babel-core/src/api/node.js
+++ b/packages/babel-core/src/api/node.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import isFunction from "lodash/lang/isFunction";
import transform from "../transformation";
import * as babylon from "babylon";
@@ -16,6 +18,9 @@ export { default as buildExternalHelpers } from "../tools/build-external-helpers
export { default as template } from "babel-template";
export { version } from "../../package";
+import * as messages from "babel-messages";
+export { messages };
+
import * as t from "babel-types";
export { t as types };
@@ -48,7 +53,7 @@ export function transformFile(filename: string, opts?: Object, callback: Functio
});
}
-export function transformFileSync(filename: string, opts?: Object = {}) {
+export function transformFileSync(filename: string, opts?: Object = {}): string {
opts.filename = filename;
return transform(fs.readFileSync(filename, "utf8"), opts);
}
diff --git a/packages/babel-core/src/api/register/node.js b/packages/babel-core/src/api/register/node.js
index f130596a3b..bd4e7a79b5 100644
--- a/packages/babel-core/src/api/register/node.js
+++ b/packages/babel-core/src/api/register/node.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import sourceMapSupport from "source-map-support";
import * as registerCache from "./cache";
import OptionManager from "../../transformation/file/options/option-manager";
@@ -52,23 +54,23 @@ let cwd = process.cwd();
* Get path from `filename` relative to the current working directory.
*/
-let getRelativePath = function (filename){
+function getRelativePath(filename){
return path.relative(cwd, filename);
-};
+}
/**
* Get last modified time for a `filename`.
*/
-let mtime = function (filename) {
+function mtime(filename) {
return +fs.statSync(filename).mtime;
-};
+}
/**
* Compile a `filename` with optional `opts`.
*/
-let compile = function (filename, opts = {}) {
+function compile(filename, opts = {}) {
let result;
opts.filename = filename;
@@ -97,26 +99,26 @@ let compile = function (filename, opts = {}) {
}
if (cache) {
- result.mtime = mtime(filename);
cache[cacheKey] = result;
+ result.mtime = mtime(filename);
}
maps[filename] = result.map;
return result.code;
-};
+}
/**
* Test if a `filename` should be ignored by Babel.
*/
-let shouldIgnore = function (filename) {
+function shouldIgnore(filename) {
if (!ignore && !only) {
return getRelativePath(filename).split(path.sep).indexOf("node_modules") >= 0;
} else {
return util.shouldIgnore(filename, ignore || [], only);
}
-};
+}
/**
* Monkey patch istanbul if it is running so that it works properly.
@@ -147,24 +149,24 @@ if (process.env.running_under_istanbul) {
* Replacement for the loader for istanbul.
*/
-let istanbulLoader = function (m, filename, old) {
+function istanbulLoader(m, filename, old) {
istanbulMonkey[filename] = true;
old(m, filename);
-};
+}
/**
* Default loader.
*/
-let normalLoader = function (m, filename) {
+function normalLoader(m, filename) {
m._compile(compile(filename), filename);
-};
+}
/**
* Register a loader for an extension.
*/
-let registerExtension = function (ext) {
+function registerExtension(ext) {
let old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"];
let loader = normalLoader;
@@ -177,13 +179,13 @@ let registerExtension = function (ext) {
loader(m, filename, old);
}
};
-};
+}
/**
* Register loader for given extensions.
*/
-let hookExtensions = function (_exts) {
+function hookExtensions(_exts) {
each(oldHandlers, function (old, ext) {
if (old === undefined) {
delete require.extensions[ext];
@@ -198,7 +200,7 @@ let hookExtensions = function (_exts) {
oldHandlers[ext] = require.extensions[ext];
registerExtension(ext);
});
-};
+}
/**
* Register loader for default extensions.
@@ -210,7 +212,7 @@ hookExtensions(util.canCompile.EXTENSIONS);
* Update options at runtime.
*/
-export default function (opts = {}) {
+export default function (opts?: Object = {}) {
if (opts.only != null) only = util.arrayify(opts.only, util.regexify);
if (opts.ignore != null) ignore = util.arrayify(opts.ignore, util.regexify);
diff --git a/packages/babel-core/src/helpers/merge.js b/packages/babel-core/src/helpers/merge.js
index dbbc07d35a..71eacdbf2c 100644
--- a/packages/babel-core/src/helpers/merge.js
+++ b/packages/babel-core/src/helpers/merge.js
@@ -1,10 +1,8 @@
+/* @flow */
+
import merge from "lodash/object/merge";
-/**
- * Merge options.
- */
-
-export default function (dest, src) {
+export default function (dest?: Object, src?: Object): ?Object {
if (!dest || !src) return;
return merge(dest, src, function (a, b) {
diff --git a/packages/babel-core/src/helpers/normalize-ast.js b/packages/babel-core/src/helpers/normalize-ast.js
index dd295e6021..cd8881a9fd 100644
--- a/packages/babel-core/src/helpers/normalize-ast.js
+++ b/packages/babel-core/src/helpers/normalize-ast.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import * as t from "babel-types";
/**
@@ -6,7 +8,11 @@ import * as t from "babel-types";
* - Wrap `Program` node with a `File` node.
*/
-export default function (ast, comments, tokens) {
+export default function (
+ ast: Object,
+ comments?: Array,
+ tokens?: Array,
+) {
if (ast) {
if (ast.type === "Program") {
return t.file(ast, comments || [], tokens || []);
diff --git a/packages/babel-core/src/helpers/parse.js b/packages/babel-core/src/helpers/parse.js
index 0e4595b551..e4ac6911f5 100644
--- a/packages/babel-core/src/helpers/parse.js
+++ b/packages/babel-core/src/helpers/parse.js
@@ -1,10 +1,12 @@
+/* @flow */
+
import * as babylon from "babylon";
/**
* Parse `code` with normalized options, collecting tokens and comments.
*/
-export default function (code, opts = {}) {
+export default function (code: string, opts: BabelParserOptions = {}) {
let parseOpts = {
allowImportExportEverywhere: opts.looseModules,
allowReturnOutsideFunction: opts.looseModules,
diff --git a/packages/babel-core/src/store.js b/packages/babel-core/src/store.js
index d83cdd71c2..d4c31300b2 100644
--- a/packages/babel-core/src/store.js
+++ b/packages/babel-core/src/store.js
@@ -1,8 +1,15 @@
-export default class Store {
- dynamicData = {};
- data = {};
+/* @flow */
- set(key: string, val): any {
+export default class Store {
+ constructor() {
+ this.dynamicData = {};
+ this.data = {};
+ }
+
+ dynamicData: Object;
+ data: Object;
+
+ set(key: string, val: any): any {
return this.data[key] = val;
}
diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js
index d19971ac2e..03536fbc14 100644
--- a/packages/babel-core/src/tools/build-external-helpers.js
+++ b/packages/babel-core/src/tools/build-external-helpers.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import generator from "babel-generator";
import * as messages from "babel-messages";
import * as util from "../util";
@@ -61,7 +63,10 @@ function buildHelpers(body, namespace, whitelist) {
});
}
-export default function (whitelist, outputType = "global") {
+export default function (
+ whitelist?: Array,
+ outputType: "global" | "umd" | "var" = "global",
+) {
let namespace = t.identifier("babelHelpers");
let builder = function (body) {
diff --git a/packages/babel-core/src/transformation/file/logger.js b/packages/babel-core/src/transformation/file/logger.js
index 39a17ddf12..5655f67ca0 100644
--- a/packages/babel-core/src/transformation/file/logger.js
+++ b/packages/babel-core/src/transformation/file/logger.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import type File from "./index";
import buildDebug from "debug/node";
@@ -12,21 +14,24 @@ export default class Logger {
this.file = file;
}
+ filename: string;
+ file: File;
+
_buildMessage(msg: string): string {
let parts = `[BABEL] ${this.filename}`;
if (msg) parts += `: ${msg}`;
return parts;
}
- warn(msg) {
+ warn(msg: string) {
console.warn(this._buildMessage(msg));
}
- error(msg: string, Constructor = Error) {
+ error(msg: string, Constructor: typeof Error = Error): Error {
throw new Constructor(this._buildMessage(msg));
}
- deprecate(msg) {
+ deprecate(msg: string) {
if (this.file.opts && this.file.opts.suppressDeprecationMessages) return;
msg = this._buildMessage(msg);
diff --git a/packages/babel-core/src/transformation/file/options/index.js b/packages/babel-core/src/transformation/file/options/index.js
index 2aeb85c41c..cbd3051618 100644
--- a/packages/babel-core/src/transformation/file/options/index.js
+++ b/packages/babel-core/src/transformation/file/options/index.js
@@ -1,27 +1,11 @@
+/* @flow */
+
import * as parsers from "./parsers";
import config from "./config";
export { config };
-/**
- * Validate an option.
- */
-
-export function validateOption(key, val, pipeline) {
- let opt = config[key];
- let parser = opt && parsers[opt.type];
- if (parser && parser.validate) {
- return parser.validate(key, val, pipeline);
- } else {
- return val;
- }
-}
-
-/**
- * Normalize all options.
- */
-
-export function normaliseOptions(options = {}) {
+export function normaliseOptions(options: Object = {}): Object {
for (let key in options) {
let val = options[key];
if (val == null) continue;
diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js
index fd5cadc234..5151dd0901 100644
--- a/packages/babel-core/src/transformation/file/options/option-manager.js
+++ b/packages/babel-core/src/transformation/file/options/option-manager.js
@@ -1,3 +1,6 @@
+/* @flow */
+
+import type Logger from "../logger";
import Plugin from "../../plugin";
import * as messages from "babel-messages";
import * as context from "../../../api/node";
@@ -29,17 +32,23 @@ function exists(filename) {
}
export default class OptionManager {
- constructor(log, pipeline) {
+ constructor(log?: Logger) {
this.resolvedConfigs = [];
- this.options = OptionManager.createBareOptions();
- this.pipeline = pipeline;
- this.log = log;
+ this.options = OptionManager.createBareOptions();
+ this.log = log;
}
- static memoisedPlugins = [];
+ resolvedConfigs: Array;
+ options: Object;
+ log: ?Logger;
+
+ static memoisedPlugins: Array<{
+ container: Function;
+ plugin: Plugin;
+ }>;
static memoisePluginContainer(fn, loc, i) {
- for (let cache of (OptionManager.memoisedPlugins: Array)) {
+ for (let cache of (OptionManager.memoisedPlugins: Array)) {
if (cache.container === fn) return cache.plugin;
}
@@ -103,7 +112,7 @@ export default class OptionManager {
});
}
- addConfig(loc, key?, json=json5) {
+ addConfig(loc: string, key?: string, json = json5) {
if (this.resolvedConfigs.indexOf(loc) >= 0) return;
let content = fs.readFileSync(loc, "utf8");
@@ -130,7 +139,7 @@ export default class OptionManager {
* - `dirname` is used to resolve plugins relative to it.
*/
- mergeOptions(opts, alias = "foreign", loc, dirname) {
+ mergeOptions(opts?: Object, alias: string = "foreign", loc?: string, dirname?: string) {
if (!opts) return;
dirname = dirname || process.cwd();
@@ -177,7 +186,7 @@ export default class OptionManager {
this.mergeOptions(envOpts, `${alias}.env.${envKey}`);
}
- mergePresets(presets: Array, dirname) {
+ mergePresets(presets: Array, dirname: string) {
for (let val of presets) {
if (typeof val === "string") {
let presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname);
@@ -262,7 +271,7 @@ export default class OptionManager {
}
}
- init(opts) {
+ init(opts: Object): Object {
// resolve all .babelrc files
if (opts.babelrc !== false) {
this.findConfigs(opts.filename);
@@ -277,3 +286,5 @@ export default class OptionManager {
return this.options;
}
}
+
+OptionManager.memoisedPlugins = [];
diff --git a/packages/babel-core/src/transformation/file/options/parsers.js b/packages/babel-core/src/transformation/file/options/parsers.js
index 60d2752782..5b5c57faaa 100644
--- a/packages/babel-core/src/transformation/file/options/parsers.js
+++ b/packages/babel-core/src/transformation/file/options/parsers.js
@@ -1,20 +1,22 @@
+/* @flow */
+
import slash from "slash";
import * as util from "../../../util";
-export function number(val) {
+export function number(val: any): number {
return +val;
}
export let filename = slash;
-export function boolean(val) {
+export function boolean(val: any): boolean {
return !!val;
}
-export function booleanString(val) {
+export function booleanString(val: any): boolean | any {
return util.booleanify(val);
}
-export function list(val) {
+export function list(val: any): Array {
return util.list(val);
}
diff --git a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
index 4772176e69..689d3467f8 100644
--- a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js
@@ -1,7 +1,12 @@
+/* @flow */
+
import explode from "./explode-assignable-expression";
import * as t from "babel-types";
-export default function (opts) {
+export default function (opts: {
+ build: Function;
+ operator: string;
+}): Object {
let exports = {};
let isAssignment = function (node) {
diff --git a/packages/babel-core/src/transformation/helpers/build-comprehension.js b/packages/babel-core/src/transformation/helpers/build-comprehension.js
index 2903f5fec4..832b002204 100644
--- a/packages/babel-core/src/transformation/helpers/build-comprehension.js
+++ b/packages/babel-core/src/transformation/helpers/build-comprehension.js
@@ -1,6 +1,8 @@
+/* @flow */
+
import * as t from "babel-types";
-export default function build(node, buildBody) {
+export default function build(node: Object, buildBody: Function): ?Object {
let self = node.blocks.shift();
if (!self) return;
diff --git a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
index 70275fa570..b8172ef5e3 100644
--- a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
+++ b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js
@@ -1,7 +1,15 @@
+/* @flow */
+
import explode from "./explode-assignable-expression";
import * as t from "babel-types";
-export default function (exports, opts) {
+export default function (
+ exports: Object,
+ opts: {
+ build: Function;
+ is: Function;
+ },
+) {
let buildAssignment = function (left, right) {
return t.assignmentExpression("=", left, right);
};
diff --git a/packages/babel-core/src/transformation/helpers/call-delegate.js b/packages/babel-core/src/transformation/helpers/call-delegate.js
index 6fc6009251..b12c9287c9 100644
--- a/packages/babel-core/src/transformation/helpers/call-delegate.js
+++ b/packages/babel-core/src/transformation/helpers/call-delegate.js
@@ -1,3 +1,6 @@
+/* @flow */
+
+import type { Scope } from "babel-traverse";
import * as t from "babel-types";
let visitor = {
@@ -13,7 +16,7 @@ let visitor = {
}
};
-export default function (node, scope) {
+export default function (node: Object, scope: Scope) {
let container = t.functionExpression(null, [], node.body, node.generator, node.async);
let callee = container;
diff --git a/packages/babel-core/src/transformation/helpers/define-map.js b/packages/babel-core/src/transformation/helpers/define-map.js
index 4fc596a5d4..21b4536df0 100644
--- a/packages/babel-core/src/transformation/helpers/define-map.js
+++ b/packages/babel-core/src/transformation/helpers/define-map.js
@@ -1,8 +1,11 @@
+/* @flow */
+
+import type File from "../file";
import each from "lodash/collection/each";
import has from "lodash/object/has";
import * as t from "babel-types";
-export function push(mutatorMap, node, kind, file) {
+export function push(mutatorMap: Object, node: Object, kind: string, file: File): Object {
let alias = t.toKeyAlias(node);
//
@@ -43,7 +46,7 @@ export function push(mutatorMap, node, kind, file) {
return map;
}
-export function hasComputed(mutatorMap) {
+export function hasComputed(mutatorMap: Object): boolean {
for (let key in mutatorMap) {
if (mutatorMap[key]._computed) {
return true;
@@ -52,7 +55,7 @@ export function hasComputed(mutatorMap) {
return false;
}
-export function toComputedObjectFromClass(obj) {
+export function toComputedObjectFromClass(obj: Object): Object {
let objExpr = t.arrayExpression([]);
for (let i = 0; i < obj.properties.length; i++) {
@@ -65,7 +68,7 @@ export function toComputedObjectFromClass(obj) {
return objExpr;
}
-export function toClassObject(mutatorMap) {
+export function toClassObject(mutatorMap: Object): Object {
let objExpr = t.objectExpression([]);
each(mutatorMap, function (map) {
@@ -92,7 +95,7 @@ export function toClassObject(mutatorMap) {
return objExpr;
}
-export function toDefineObject(mutatorMap) {
+export function toDefineObject(mutatorMap: Object): Object {
each(mutatorMap, function (map) {
if (map.value) map.writable = t.booleanLiteral(true);
map.configurable = t.booleanLiteral(true);
diff --git a/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js b/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js
index eddcc5d4c8..5a97200499 100644
--- a/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js
+++ b/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js
@@ -1,6 +1,10 @@
+/* @flow */
+
+import type { Scope } from "babel-traverse";
+import type File from "../file";
import * as t from "babel-types";
-let getObjRef = function (node, nodes, file, scope) {
+function getObjRef(node, nodes, file, scope) {
let ref;
if (t.isIdentifier(node)) {
if (scope.hasBinding(node.name)) {
@@ -31,9 +35,9 @@ let getObjRef = function (node, nodes, file, scope) {
t.variableDeclarator(temp, ref)
]));
return temp;
-};
+}
-let getPropRef = function (node, nodes, file, scope) {
+function getPropRef(node, nodes, file, scope) {
let prop = node.property;
let key = t.toComputedKey(node, prop);
if (t.isLiteral(key)) return key;
@@ -43,9 +47,18 @@ let getPropRef = function (node, nodes, file, scope) {
t.variableDeclarator(temp, prop)
]));
return temp;
-};
+}
-export default function (node, nodes, file, scope, allowedSingleIdent) {
+export default function (
+ node: Object,
+ nodes: Array,
+ file: File,
+ scope: Scope,
+ allowedSingleIdent?: boolean,
+): {
+ uid: Object;
+ ref: Object;
+} {
let obj;
if (t.isIdentifier(node) && allowedSingleIdent) {
obj = node;
diff --git a/packages/babel-core/src/transformation/helpers/get-function-arity.js b/packages/babel-core/src/transformation/helpers/get-function-arity.js
index 756a102d9a..581e695c42 100644
--- a/packages/babel-core/src/transformation/helpers/get-function-arity.js
+++ b/packages/babel-core/src/transformation/helpers/get-function-arity.js
@@ -1,11 +1,13 @@
+/* @flow */
+
import * as t from "babel-types";
-export default function (node) {
- for (let i = 0; i < node.params.length; i++) {
- let param = node.params[i];
+export default function ({ params }: { params: Array }): number {
+ for (let i = 0; i < params.length; i++) {
+ let param = params[i];
if (t.isAssignmentPattern(param) || t.isRestElement(param)) {
return i;
}
}
- return node.params.length;
+ return params.length;
}
diff --git a/packages/babel-core/src/transformation/helpers/memoise-decorators.js b/packages/babel-core/src/transformation/helpers/memoise-decorators.js
index d05d4c4e33..18eaa0a498 100644
--- a/packages/babel-core/src/transformation/helpers/memoise-decorators.js
+++ b/packages/babel-core/src/transformation/helpers/memoise-decorators.js
@@ -1,8 +1,10 @@
+/* @flow */
+
+import type { Scope } from "babel-traverse";
import * as t from "babel-types";
-export default function (decorators, scope) {
- for (let i = 0; i < decorators.length; i++) {
- let decorator = decorators[i];
+export default function (decorators: Array, scope: Scope): Array {
+ for (let decorator of decorators) {
let expression = decorator.expression;
if (!t.isMemberExpression(expression)) continue;
diff --git a/packages/babel-core/src/transformation/helpers/name-method.js b/packages/babel-core/src/transformation/helpers/name-method.js
index df1a25e88c..034a825605 100644
--- a/packages/babel-core/src/transformation/helpers/name-method.js
+++ b/packages/babel-core/src/transformation/helpers/name-method.js
@@ -1,3 +1,7 @@
+/* @flow */
+
+import type { Scope } from "babel-traverse";
+import type File from "../file";
import getFunctionArity from "./get-function-arity";
import * as util from "../../util";
import * as t from "babel-types";
@@ -94,12 +98,12 @@ function visit(node, name, scope) {
return state;
}
-export function custom(node, id, scope) {
+export function custom(node: Object, id: Object, scope: Scope) {
let state = visit(node, id.name, scope);
return wrap(state, node, id, scope);
}
-export function property(node, file, scope) {
+export function property(node: Object, file: File, scope: Scope) {
let key = t.toComputedKey(node, node.key);
if (!t.isLiteral(key)) return; // we can't set a function id with this
@@ -111,7 +115,7 @@ export function property(node, file, scope) {
node.value = wrap(state, method, id, scope) || method;
}
-export function bare(node, parent, scope) {
+export function bare(node: Object, parent: Object, scope: Scope) {
// has an `id` so we don't need to infer one
if (node.id) return;
@@ -136,9 +140,9 @@ export function bare(node, parent, scope) {
}
let name;
- if (t.isLiteral(id)) {
+ if (id && t.isLiteral(id)) {
name = id.value;
- } else if (t.isIdentifier(id)) {
+ } else if (id && t.isIdentifier(id)) {
name = id.name;
} else {
return;
diff --git a/packages/babel-core/src/transformation/helpers/regex.js b/packages/babel-core/src/transformation/helpers/regex.js
index c99a183760..8044207c37 100644
--- a/packages/babel-core/src/transformation/helpers/regex.js
+++ b/packages/babel-core/src/transformation/helpers/regex.js
@@ -1,11 +1,13 @@
+/* @flow */
+
import pull from "lodash/array/pull";
import * as t from "babel-types";
-export function is(node, flag) {
+export function is(node: Object, flag: string): boolean {
return t.isRegexLiteral(node) && node.flags.indexOf(flag) >= 0;
}
-export function pullFlag(node, flag) {
+export function pullFlag(node: Object, flag: string) {
let flags = node.flags.split("");
if (node.flags.indexOf(flag) < 0) return;
pull(flags, flag);
diff --git a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
index 561418e44f..2cd9a9aca5 100644
--- a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
+++ b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js
@@ -1,3 +1,6 @@
+/* @flow */
+
+import type { NodePath } from "babel-traverse";
import * as t from "babel-types";
let awaitVisitor = {
@@ -25,13 +28,13 @@ let referenceVisitor = {
}
};
-export default function (path, callId) {
+export default function (path: NodePath, callId: Object) {
let node = path.node;
node.async = false;
node.generator = true;
- path.traverse(awaitVisitor, state);
+ path.traverse(awaitVisitor);
let call = t.callExpression(callId, [node]);
@@ -48,7 +51,8 @@ export default function (path, callId) {
node.type = "FunctionExpression";
if (id) {
- let state = { id };
+ let state = { id, ref: null };
+
path.traverse(referenceVisitor, state);
if (state.ref) {
diff --git a/packages/babel-core/src/transformation/helpers/replace-supers.js b/packages/babel-core/src/transformation/helpers/replace-supers.js
index 8239e9d481..11e6eab71f 100644
--- a/packages/babel-core/src/transformation/helpers/replace-supers.js
+++ b/packages/babel-core/src/transformation/helpers/replace-supers.js
@@ -1,4 +1,7 @@
-import type NodePath from "../../traversal/path";
+/* @flow */
+
+import type File from "../file";
+import type { NodePath, Scope } from "babel-traverse";
import * as messages from "babel-messages";
import * as t from "babel-types";
@@ -59,6 +62,28 @@ export default class ReplaceSupers {
this.opts = opts;
}
+ topLevelThisReference: ?Object;
+ methodPath: NodePath;
+ methodNode: Object;
+ superRef: Object;
+ isStatic: boolean;
+ hasSuper: boolean;
+ inClass: boolean;
+ isLoose: boolean;
+ scope: Scope;
+ file: File;
+ opts: {
+ getObjetRef: Function;
+ topLevelThisReference: Object;
+ methodPath: NodePath;
+ methodNode: Object;
+ superRef: Object;
+ isStatic: boolean;
+ isLoose: boolean;
+ scope: Scope;
+ file: File;
+ };
+
getObjectRef() {
return this.opts.objectRef || this.opts.getObjectRef();
}
diff --git a/packages/babel-core/src/transformation/index.js b/packages/babel-core/src/transformation/index.js
index 3719de4bd0..daf3499a03 100644
--- a/packages/babel-core/src/transformation/index.js
+++ b/packages/babel-core/src/transformation/index.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import Pipeline from "./pipeline";
let pipeline = new Pipeline;
diff --git a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
index 014b9e7711..a0b5fab150 100644
--- a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
+++ b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import Plugin from "../plugin";
import sortBy from "lodash/collection/sortBy";
diff --git a/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
index 397b48b67a..3f13629329 100644
--- a/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
+++ b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import Plugin from "../plugin";
import * as t from "babel-types";
diff --git a/packages/babel-core/src/transformation/modules/_default.js b/packages/babel-core/src/transformation/modules/_default.js
index 48dd52bbd0..30b6549702 100644
--- a/packages/babel-core/src/transformation/modules/_default.js
+++ b/packages/babel-core/src/transformation/modules/_default.js
@@ -1,3 +1,7 @@
+/* @flow */
+
+import type { File, FileModulesMetadata } from "../file";
+import type { Scope, NodePath } from "babel-traverse";
import * as metadataVisitor from "./lib/metadata";
import * as messages from "babel-messages";
import Remaps from "./lib/remaps";
@@ -5,7 +9,7 @@ import * as util from "../../util";
import * as t from "babel-types";
export default class DefaultFormatter {
- constructor(file) {
+ constructor(file: File) {
// object containg all module sources with the scope that they're contained in
this.sourceScopes = Object.create(null);
@@ -31,7 +35,20 @@ export default class DefaultFormatter {
this.getMetadata();
}
- addScope(path) {
+ sourceScopes: Object;
+ defaultIds: Object;
+ ids: Object;
+ remaps: Remaps;
+ scope: Scope;
+ file: File;
+ hasNonDefaultExports: boolean;
+ hasLocalExports: boolean;
+ hasLocalImports: boolean;
+ localExports: Object;
+ localImports: Object;
+ metadata: FileModulesMetadata;
+
+ addScope(path: NodePath) {
let source = path.node.source && path.node.source.value;
if (!source) return;
@@ -43,7 +60,7 @@ export default class DefaultFormatter {
this.sourceScopes[source] = path.scope;
}
- isModuleType(node, type) {
+ isModuleType(node: Object, type: string): boolean {
let modules = this.file.dynamicImportTypes[type];
return modules && modules.indexOf(node) >= 0;
}
@@ -52,19 +69,19 @@ export default class DefaultFormatter {
this.remapAssignments();
}
- doDefaultExportInterop(node) {
+ doDefaultExportInterop(node: Object): Object {
return (t.isExportDefaultDeclaration(node) || t.isSpecifierDefault(node)) && !this.noInteropRequireExport && !this.hasNonDefaultExports;
}
getMetadata() {
let has = false;
- for (let node of (this.file.ast.program.body: Array)) {
+ for (let node of (this.file.ast.program.body: Array)) {
if (t.isModuleDeclaration(node)) {
has = true;
break;
}
}
- if (has || this.isLoose()) {
+ if (has) {
this.file.path.traverse(metadataVisitor, this);
}
}
@@ -75,13 +92,13 @@ export default class DefaultFormatter {
}
}
- remapExportAssignment(node, exported) {
+ remapExportAssignment(node: Object, exported: Array) {
let assign = node;
- for (let i = 0; i < exported.length; i++) {
+ for (let prop of exported) {
assign = t.assignmentExpression(
"=",
- t.memberExpression(t.identifier("exports"), exported[i]),
+ t.memberExpression(t.identifier("exports"), prop),
assign
);
}
@@ -89,7 +106,7 @@ export default class DefaultFormatter {
return assign;
}
- _addExport(name, exported) {
+ _addExport(name: string, exported: Array) {
let info = this.localExports[name] = this.localExports[name] || {
binding: this.scope.getBindingIdentifier(name),
exported: []
@@ -97,7 +114,7 @@ export default class DefaultFormatter {
info.exported.push(exported);
}
- getExport(node, scope) {
+ getExport(node: Object, scope: Scope) {
if (!t.isIdentifier(node)) return;
let local = this.localExports[node.name];
@@ -106,8 +123,9 @@ export default class DefaultFormatter {
}
}
- getModuleName() {
+ getModuleName(): string {
let opts = this.file.opts;
+
// moduleId is n/a if a `getModuleId()` is provided
if (opts.moduleId != null && !opts.getModuleId) {
return opts.moduleId;
@@ -148,7 +166,7 @@ export default class DefaultFormatter {
}
}
- _pushStatement(ref, nodes) {
+ _pushStatement(ref: Object, nodes: Array): Object {
if (t.isClass(ref) || t.isFunction(ref)) {
if (ref.id) {
nodes.push(t.toStatement(ref));
@@ -159,7 +177,7 @@ export default class DefaultFormatter {
return ref;
}
- _hoistExport(declar, assign, priority) {
+ _hoistExport(declar: Object, assign: Object, priority?: number): Object {
if (t.isFunctionDeclaration(declar)) {
assign._blockHoist = priority || 2;
}
@@ -167,7 +185,7 @@ export default class DefaultFormatter {
return assign;
}
- getExternalReference(node, nodes) {
+ getExternalReference(node: Object, nodes: Array): Object {
let ids = this.ids;
let id = node.source.value;
@@ -178,22 +196,22 @@ export default class DefaultFormatter {
}
}
+ _getExternalReference() {
+ throw new Error("Should be implemented");
+ }
+
checkExportIdentifier(node) {
if (t.isIdentifier(node, { name: "__esModule" })) {
throw this.file.buildCodeFrameError(node, messages.get("modulesIllegalExportName", node.name));
}
}
- exportAllDeclaration(node, nodes) {
+ exportAllDeclaration(node: Object, nodes: Array) {
let ref = this.getExternalReference(node, nodes);
nodes.push(this.buildExportsWildcard(ref, node));
}
- isLoose() {
- return this.file.isLoose("es6.modules");
- }
-
- exportSpecifier(specifier, node, nodes) {
+ exportSpecifier(specifier: Object, node: Object, nodes: Array) {
if (node.source) {
let ref = this.getExternalReference(node, nodes);
@@ -203,10 +221,8 @@ export default class DefaultFormatter {
} else {
ref = t.memberExpression(ref, specifier.local);
- if (!this.isLoose()) {
- nodes.push(this.buildExportsFromAssignment(specifier.exported, ref, node));
- return;
- }
+ nodes.push(this.buildExportsFromAssignment(specifier.exported, ref, node));
+ return;
}
// export { foo } from "test";
@@ -217,7 +233,7 @@ export default class DefaultFormatter {
}
}
- buildExportsWildcard(objectIdentifier) {
+ buildExportsWildcard(objectIdentifier: Object) {
return t.expressionStatement(t.callExpression(this.file.addHelper("defaults"), [
t.identifier("exports"),
t.callExpression(this.file.addHelper("interop-export-wildcard"), [
@@ -227,7 +243,7 @@ export default class DefaultFormatter {
]));
}
- buildExportsFromAssignment(id, init) {
+ buildExportsFromAssignment(id: Object, init: Object) {
this.checkExportIdentifier(id);
return util.template("exports-from-assign", {
INIT: init,
@@ -243,7 +259,7 @@ export default class DefaultFormatter {
}, true);
}
- exportDeclaration(node, nodes) {
+ exportDeclaration(node: Object, nodes: Array) {
let declar = node.declaration;
let id = declar.id;
diff --git a/packages/babel-core/src/transformation/modules/_strict.js b/packages/babel-core/src/transformation/modules/_strict.js
index 2a615dfc4a..fe705bc984 100644
--- a/packages/babel-core/src/transformation/modules/_strict.js
+++ b/packages/babel-core/src/transformation/modules/_strict.js
@@ -1,11 +1,13 @@
+/* @flow */
+
import * as util from "../../util";
-export default function (Parent) {
- let Constructor = function () {
+export default function (Parent: Function): Function {
+ function Constructor() {
this.noInteropRequireImport = true;
this.noInteropRequireExport = true;
Parent.apply(this, arguments);
- };
+ }
util.inherits(Constructor, Parent);
diff --git a/packages/babel-core/src/transformation/modules/amd-strict.js b/packages/babel-core/src/transformation/modules/amd-strict.js
index d3dc3d6745..98422e148e 100644
--- a/packages/babel-core/src/transformation/modules/amd-strict.js
+++ b/packages/babel-core/src/transformation/modules/amd-strict.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import AMDFormatter from "./amd";
import buildStrict from "./_strict";
diff --git a/packages/babel-core/src/transformation/modules/amd.js b/packages/babel-core/src/transformation/modules/amd.js
index 6f2a1319a4..646d98edc8 100644
--- a/packages/babel-core/src/transformation/modules/amd.js
+++ b/packages/babel-core/src/transformation/modules/amd.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import DefaultFormatter from "./_default";
import CommonFormatter from "./common";
import includes from "lodash/collection/includes";
diff --git a/packages/babel-core/src/transformation/modules/common-strict.js b/packages/babel-core/src/transformation/modules/common-strict.js
index 19c2837aa1..c02ae2e75b 100644
--- a/packages/babel-core/src/transformation/modules/common-strict.js
+++ b/packages/babel-core/src/transformation/modules/common-strict.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import CommonFormatter from "./common";
import buildStrict from "./_strict";
diff --git a/packages/babel-core/src/transformation/modules/ignore.js b/packages/babel-core/src/transformation/modules/ignore.js
index 98056791a7..b9c3ff627c 100644
--- a/packages/babel-core/src/transformation/modules/ignore.js
+++ b/packages/babel-core/src/transformation/modules/ignore.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import DefaultFormatter from "./_default";
import * as t from "babel-types";
diff --git a/packages/babel-core/src/transformation/modules/index.js b/packages/babel-core/src/transformation/modules/index.js
index 82db428417..c7c7a598e7 100644
--- a/packages/babel-core/src/transformation/modules/index.js
+++ b/packages/babel-core/src/transformation/modules/index.js
@@ -1,3 +1,5 @@
+/* @flow */
+
/**
* [Please add a description.]
*/
diff --git a/packages/babel-core/src/transformation/modules/lib/metadata.js b/packages/babel-core/src/transformation/modules/lib/metadata.js
index 4d248ada07..d733e80ee9 100644
--- a/packages/babel-core/src/transformation/modules/lib/metadata.js
+++ b/packages/babel-core/src/transformation/modules/lib/metadata.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import extend from "lodash/object/extend";
import * as t from "babel-types";
diff --git a/packages/babel-core/src/transformation/modules/lib/remaps.js b/packages/babel-core/src/transformation/modules/lib/remaps.js
index 9e8ee531a3..3c7303428e 100644
--- a/packages/babel-core/src/transformation/modules/lib/remaps.js
+++ b/packages/babel-core/src/transformation/modules/lib/remaps.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import * as t from "babel-types";
let remapVisitor = {
diff --git a/packages/babel-core/src/transformation/modules/system.js b/packages/babel-core/src/transformation/modules/system.js
index 18817b5600..721e676e32 100644
--- a/packages/babel-core/src/transformation/modules/system.js
+++ b/packages/babel-core/src/transformation/modules/system.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import DefaultFormatter from "./_default";
import AMDFormatter from "./amd";
import * as util from "../../util";
diff --git a/packages/babel-core/src/transformation/modules/umd-strict.js b/packages/babel-core/src/transformation/modules/umd-strict.js
index f929e475dc..831de7fc25 100644
--- a/packages/babel-core/src/transformation/modules/umd-strict.js
+++ b/packages/babel-core/src/transformation/modules/umd-strict.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import UMDFormatter from "./umd";
import buildStrict from "./_strict";
diff --git a/packages/babel-core/src/transformation/modules/umd.js b/packages/babel-core/src/transformation/modules/umd.js
index 60244a8fb2..57955e82ed 100644
--- a/packages/babel-core/src/transformation/modules/umd.js
+++ b/packages/babel-core/src/transformation/modules/umd.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import DefaultFormatter from "./_default";
import AMDFormatter from "./amd";
import values from "lodash/object/values";
diff --git a/packages/babel-core/src/transformation/pipeline.js b/packages/babel-core/src/transformation/pipeline.js
index 9b7abaf207..ea62e1b0a2 100644
--- a/packages/babel-core/src/transformation/pipeline.js
+++ b/packages/babel-core/src/transformation/pipeline.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import normalizeAst from "../helpers/normalize-ast";
import File from "./file";
@@ -26,7 +28,7 @@ export default class Pipeline {
});
}
- transformFromAst(ast, code, opts) {
+ transformFromAst(ast, code: string, opts: Object) {
ast = normalizeAst(ast);
let file = new File(opts, this);
diff --git a/packages/babel-core/src/transformation/plugin-pass.js b/packages/babel-core/src/transformation/plugin-pass.js
index 5ef78e0a69..93d86d84c0 100644
--- a/packages/babel-core/src/transformation/plugin-pass.js
+++ b/packages/babel-core/src/transformation/plugin-pass.js
@@ -1,14 +1,20 @@
-import type Transformer from "./transformer";
+/* @flow */
+
+import type Plugin from "./plugin";
import traverse from "babel-traverse";
import File from "./file";
export default class PluginPass {
- constructor(file: File, plugin: Transformer, options: Object = {}) {
+ constructor(file: File, plugin: Plugin, options: Object = {}) {
this.plugin = plugin;
this.file = file;
this.opts = options;
}
+ plugin: Plugin;
+ file: File;
+ opts: Object;
+
transform() {
let file = this.file;
file.log.debug(`Start transformer ${this.key}`);
diff --git a/packages/babel-core/src/transformation/plugin.js b/packages/babel-core/src/transformation/plugin.js
index 1ba7c3b135..81fe760cf4 100644
--- a/packages/babel-core/src/transformation/plugin.js
+++ b/packages/babel-core/src/transformation/plugin.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import * as messages from "babel-messages";
import traverse from "babel-traverse";
import assign from "lodash/object/assign";
@@ -16,11 +18,16 @@ export default class Plugin {
this.manipulateOptions = take("manipulateOptions");
this.post = take("post");
this.pre = take("pre");
-
- this.visitor = this.normalize(clone(take("visitor")) || {});
+ this.visitor = this.normalize(clone(take("visitor")) || {});
}
- validate(loc, i) {
+ raw: Object;
+ manipulateOptions: ?Function;
+ post: ?Function;
+ pre: ?Function;
+ visitor: Object;
+
+ validate(loc: string, i: number) {
for (let key in this.raw) {
throw new Error(messages.get("pluginInvalidProperty", loc, i, key));
}
diff --git a/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js b/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js
index 344e1d081b..5c7379a5f4 100644
--- a/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js
+++ b/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js
@@ -1,45 +1,10 @@
import * as defineMap from "../../helpers/define-map";
import * as t from "babel-types";
-/**
- * Turn [object initializer mutators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Method_definitions)
- * into `Object.defineProperties`.
- *
- * **In**
- *
- * ```javascript
- * let foo = {
- * get bar() {
- * return "bar";
- * }
- * };
- * ```
- *
- * **Out**
- *
- * ```javascript
- * let foo = Object.defineProperties({}, {
- * bar: {
- * get: function () {
- * return "bar";
- * },
- * enumerable: true,
- * configurable: true
- * }
- * });
- * ```
- */
-
export let visitor = {
- /**
- * Look for getters and setters on an object.
- * Filter them out and wrap the object with an `Object.defineProperties` that
- * defines the getters and setters.
- */
-
- ObjectExpression(node, parent, scope, file) {
- let hasAny = false;
- for (let prop of (node.properties: Array)) {
+ ObjectExpression({ node }, file) {
+ var hasAny = false;
+ for (var prop of (node.properties: Array)) {
if (prop.kind === "get" || prop.kind === "set") {
hasAny = true;
break;
diff --git a/packages/babel-core/src/util.js b/packages/babel-core/src/util.js
index cc7fe4f303..e0a7d22fe6 100644
--- a/packages/babel-core/src/util.js
+++ b/packages/babel-core/src/util.js
@@ -81,7 +81,7 @@ export function regexify(val: any): RegExp {
* Create an array from a boolean, string, or array, mapped by and optional function.
*/
-export function arrayify(val: any, mapFn?: Function): Array {
+export function arrayify(val: any, mapFn?: Function): Array {
if (!val) return [];
if (isBoolean(val)) return arrayify([val], mapFn);
if (isString(val)) return arrayify(list(val), mapFn);
@@ -98,7 +98,7 @@ export function arrayify(val: any, mapFn?: Function): Array {
* Makes boolean-like strings into booleans.
*/
-export function booleanify(val: any): boolean {
+export function booleanify(val: any): boolean | any {
if (val === "true") return true;
if (val === "false") return false;
return val;
@@ -108,16 +108,20 @@ export function booleanify(val: any): boolean {
* Tests if a filename should be ignored based on "ignore" and "only" options.
*/
-export function shouldIgnore(filename: string, ignore: Array, only): boolean {
+export function shouldIgnore(
+ filename: string,
+ ignore: Array = [],
+ only?: Array,
+): boolean {
filename = slash(filename);
if (only) {
- for (let pattern of (only: Array)) {
+ for (let pattern of only) {
if (_shouldIgnore(pattern, filename)) return false;
}
return true;
} else if (ignore.length) {
- for (let pattern of (ignore: Array)) {
+ for (let pattern of ignore) {
if (_shouldIgnore(pattern, filename)) return true;
}
}
@@ -130,7 +134,7 @@ export function shouldIgnore(filename: string, ignore: Array, only): boolean {
* Otherwise returns result of matching pattern Regex with filename.
*/
-function _shouldIgnore(pattern, filename) {
+function _shouldIgnore(pattern: Function | RegExp, filename: string) {
if (typeof pattern === "function") {
return pattern(filename);
} else {
diff --git a/packages/babel-generator/src/buffer.js b/packages/babel-generator/src/buffer.js
index 8cc1760976..abd69f8006 100644
--- a/packages/babel-generator/src/buffer.js
+++ b/packages/babel-generator/src/buffer.js
@@ -1,23 +1,28 @@
+/* @flow */
+
+import type Position from "./position";
import repeating from "repeating";
import trimRight from "trim-right";
-import isBoolean from "lodash/lang/isBoolean";
-import includes from "lodash/collection/includes";
-import isNumber from "lodash/lang/isNumber";
/**
* Buffer for collecting generated output.
*/
export default class Buffer {
- constructor(position, format) {
+ constructor(position: Position, format: Object) {
this.parenPushNewlineState = null;
-
this.position = position;
- this._indent = format.indent.base;
- this.format = format;
- this.buf = "";
+ this._indent = format.indent.base;
+ this.format = format;
+ this.buf = "";
}
+ parenPushNewlineState: ?Object;
+ buf: string;
+ position: Position;
+ _indent: number;
+ format: Object;
+
/**
* Get the current trimmed buffer.
*/
@@ -91,7 +96,7 @@ export default class Buffer {
* Add a keyword to the buffer.
*/
- keyword(name) {
+ keyword(name: string) {
this.push(name);
this.space();
}
@@ -100,7 +105,7 @@ export default class Buffer {
* Add a space to the buffer unless it is compact (override with force).
*/
- space(force?) {
+ space(force?: boolean) {
if (!force && this.format.compact) return;
if (force || this.buf && !this.isLast(" ") && !this.isLast("\n")) {
@@ -112,7 +117,7 @@ export default class Buffer {
* Remove the last character.
*/
- removeLast(cha) {
+ removeLast(cha: string) {
if (this.format.compact) return;
if (!this.isLast(cha)) return;
@@ -136,7 +141,7 @@ export default class Buffer {
* `undefined` will be returned and not `foo` due to the terminator.
*/
- startTerminatorless() {
+ startTerminatorless(): Object {
return this.parenPushNewlineState = {
printed: false
};
@@ -146,7 +151,7 @@ export default class Buffer {
* Print an ending parentheses if a starting one has been printed.
*/
- endTerminatorless(state) {
+ endTerminatorless(state: Object) {
if (state.printed) {
this.dedent();
this.newline();
@@ -159,7 +164,7 @@ export default class Buffer {
* Strips multiple newlines if removeLast is true.
*/
- newline(i, removeLast) {
+ newline(i?: boolean | number, removeLast?: boolean) {
if (this.format.retainLines || this.format.compact) return;
if (this.format.concise) {
@@ -169,7 +174,7 @@ export default class Buffer {
removeLast = removeLast || false;
- if (isNumber(i)) {
+ if (typeof i === "number") {
i = Math.min(2, i);
if (this.endsWith("{\n") || this.endsWith(":\n")) i--;
@@ -182,7 +187,7 @@ export default class Buffer {
return;
}
- if (isBoolean(i)) {
+ if (typeof i === "boolean") {
removeLast = i;
}
@@ -193,7 +198,7 @@ export default class Buffer {
* Adds a newline unless there is already two previous newlines.
*/
- _newline(removeLast) {
+ _newline(removeLast?: boolean) {
// never allow more than two lines
if (this.endsWith("\n\n")) return;
@@ -233,7 +238,7 @@ export default class Buffer {
* Push a string to the buffer, maintaining indentation and newlines.
*/
- push(str, noIndent) {
+ push(str: string, noIndent?: boolean) {
if (!this.format.compact && this._indent && !noIndent && str !== "\n") {
// we have an indent level and we aren't pushing a newline
let indent = this.getIndent();
@@ -284,7 +289,7 @@ export default class Buffer {
* Test if the buffer ends with a string.
*/
- endsWith(str, buf = this.buf) {
+ endsWith(str: string, buf: string = this.buf): boolean {
if (str.length === 1) {
return buf[buf.length - 1] === str;
} else {
@@ -296,14 +301,14 @@ export default class Buffer {
* Test if a character is last in the buffer.
*/
- isLast(cha) {
+ isLast(cha: string) {
if (this.format.compact) return false;
let buf = this.buf;
let last = buf[buf.length - 1];
if (Array.isArray(cha)) {
- return includes(cha, last);
+ return cha.indexOf(last) >= 0;
} else {
return cha === last;
}
diff --git a/packages/babel-generator/src/generators/base.js b/packages/babel-generator/src/generators/base.js
index 344a9880f4..67fe2f580e 100644
--- a/packages/babel-generator/src/generators/base.js
+++ b/packages/babel-generator/src/generators/base.js
@@ -1,12 +1,16 @@
-export function File(node, print) {
+/* @flow */
+
+import type NodePrinter from "../node/printer";
+
+export function File(node: Object, print: NodePrinter) {
print.plain(node.program);
}
-export function Program(node, print) {
+export function Program(node: Object, print: NodePrinter) {
print.sequence(node.body);
}
-export function BlockStatement(node, print) {
+export function BlockStatement(node: Object, print: NodePrinter) {
this.push("{");
if (node.body.length) {
this.newline();
diff --git a/packages/babel-generator/src/generators/classes.js b/packages/babel-generator/src/generators/classes.js
index 769f43a80f..6222fa7924 100644
--- a/packages/babel-generator/src/generators/classes.js
+++ b/packages/babel-generator/src/generators/classes.js
@@ -1,4 +1,8 @@
-export function ClassDeclaration(node, print) {
+/* @flow */
+
+import type NodePrinter from "../node/printer";
+
+export function ClassDeclaration(node: Object, print: NodePrinter) {
print.list(node.decorators, { separator: "" });
this.push("class");
@@ -26,7 +30,7 @@ export function ClassDeclaration(node, print) {
export { ClassDeclaration as ClassExpression };
-export function ClassBody(node, print) {
+export function ClassBody(node: Object, print: NodePrinter) {
this.push("{");
if (node.body.length === 0) {
print.printInnerComments();
@@ -42,7 +46,7 @@ export function ClassBody(node, print) {
}
}
-export function ClassProperty(node, print) {
+export function ClassProperty(node: Object, print: NodePrinter) {
print.list(node.decorators, { separator: "" });
if (node.static) this.push("static ");
@@ -57,7 +61,7 @@ export function ClassProperty(node, print) {
this.semicolon();
}
-export function MethodDefinition(node, print) {
+export function MethodDefinition(node: Object, print: NodePrinter) {
print.list(node.decorators, { separator: "" });
if (node.static) {
diff --git a/packages/babel-generator/src/generators/comprehensions.js b/packages/babel-generator/src/generators/comprehensions.js
index 29b7029cb1..4128805dd4 100644
--- a/packages/babel-generator/src/generators/comprehensions.js
+++ b/packages/babel-generator/src/generators/comprehensions.js
@@ -1,4 +1,8 @@
-export function ComprehensionBlock(node, print) {
+/* @flow */
+
+import type NodePrinter from "../node/printer";
+
+export function ComprehensionBlock(node: Object, print: NodePrinter) {
this.keyword("for");
this.push("(");
print.plain(node.left);
@@ -7,7 +11,7 @@ export function ComprehensionBlock(node, print) {
this.push(")");
}
-export function ComprehensionExpression(node, print) {
+export function ComprehensionExpression(node: Object, print: NodePrinter) {
this.push(node.generator ? "(" : "[");
print.join(node.blocks, { separator: " " });
diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js
index 598592c4c6..2df40bc43d 100644
--- a/packages/babel-generator/src/generators/expressions.js
+++ b/packages/babel-generator/src/generators/expressions.js
@@ -1,10 +1,13 @@
+/* @flow */
+
+import type NodePrinter from "../node/printer";
import isInteger from "is-integer";
import isNumber from "lodash/lang/isNumber";
import * as t from "babel-types";
const SCIENTIFIC_NOTATION = /e/i;
-export function UnaryExpression(node, print) {
+export function UnaryExpression(node: Object, print: NodePrinter) {
let needsSpace = /[a-z]$/.test(node.operator);
let arg = node.argument;
@@ -21,19 +24,19 @@ export function UnaryExpression(node, print) {
print.plain(node.argument);
}
-export function DoExpression(node, print) {
+export function DoExpression(node: Object, print: NodePrinter) {
this.push("do");
this.space();
print.plain(node.body);
}
-export function ParenthesizedExpression(node, print) {
+export function ParenthesizedExpression(node: Object, print: NodePrinter) {
this.push("(");
print.plain(node.expression);
this.push(")");
}
-export function UpdateExpression(node, print) {
+export function UpdateExpression(node: Object, print: NodePrinter) {
if (node.prefix) {
this.push(node.operator);
print.plain(node.argument);
@@ -43,7 +46,7 @@ export function UpdateExpression(node, print) {
}
}
-export function ConditionalExpression(node, print) {
+export function ConditionalExpression(node: Object, print: NodePrinter) {
print.plain(node.test);
this.space();
this.push("?");
@@ -55,7 +58,7 @@ export function ConditionalExpression(node, print) {
print.plain(node.alternate);
}
-export function NewExpression(node, print) {
+export function NewExpression(node: Object, print: NodePrinter) {
this.push("new ");
print.plain(node.callee);
this.push("(");
@@ -63,7 +66,7 @@ export function NewExpression(node, print) {
this.push(")");
}
-export function SequenceExpression(node, print) {
+export function SequenceExpression(node: Object, print: NodePrinter) {
print.list(node.expressions);
}
@@ -75,13 +78,13 @@ export function Super() {
this.push("super");
}
-export function Decorator(node, print) {
+export function Decorator(node: Object, print: NodePrinter) {
this.push("@");
print.plain(node.expression);
this.newline();
}
-export function CallExpression(node, print) {
+export function CallExpression(node: Object, print: NodePrinter) {
print.plain(node.callee);
this.push("(");
@@ -106,7 +109,7 @@ export function CallExpression(node, print) {
}
function buildYieldAwait(keyword) {
- return function (node, print) {
+ return function (node: Object, print: NodePrinter) {
this.push(keyword);
if (node.delegate || node.all) {
@@ -129,24 +132,23 @@ export function EmptyStatement() {
this.semicolon();
}
-export function ExpressionStatement(node, print) {
+export function ExpressionStatement(node: Object, print: NodePrinter) {
print.plain(node.expression);
this.semicolon();
}
-export function AssignmentPattern(node, print) {
+export function AssignmentPattern(node: Object, print: NodePrinter) {
print.plain(node.left);
this.push(" = ");
print.plain(node.right);
}
-export function AssignmentExpression(node, print) {
- // todo: add cases where the spaces can be dropped when in compact mode
+export function AssignmentExpression(node: Object, print: NodePrinter) {
print.plain(node.left);
- let spaces = node.operator === "in" || node.operator === "instanceof";
+ let spaces = !this.format.compact || node.operator === "in" || node.operator === "instanceof";
spaces = true; // todo: https://github.com/babel/babel/issues/1835
- this.space(spaces);
+ if (spaces) this.push(" ");
this.push(node.operator);
@@ -158,12 +160,12 @@ export function AssignmentExpression(node, print) {
t.isUnaryExpression(node.right.argument, { prefix: true, operator: "--" });
}
- this.space(spaces);
+ if (spaces) this.push(" ");
print.plain(node.right);
}
-export function BindExpression(node, print) {
+export function BindExpression(node: Object, print: NodePrinter) {
print.plain(node.object);
this.push("::");
print.plain(node.callee);
@@ -174,7 +176,7 @@ export {
AssignmentExpression as LogicalExpression
};
-export function MemberExpression(node, print) {
+export function MemberExpression(node: Object, print: NodePrinter) {
let obj = node.object;
print.plain(obj);
@@ -193,7 +195,7 @@ export function MemberExpression(node, print) {
this.push("]");
} else {
if (t.isLiteral(node.object)) {
- let val = this._Literal(node.object);
+ let val = this._stringLiteral(node.object);
if (isInteger(+val) && !SCIENTIFIC_NOTATION.test(val) && !this.endsWith(".")) {
this.push(".");
}
@@ -204,7 +206,7 @@ export function MemberExpression(node, print) {
}
}
-export function MetaProperty(node, print) {
+export function MetaProperty(node: Object, print: NodePrinter) {
print.plain(node.meta);
this.push(".");
print.plain(node.property);
diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js
index 4a42f81d04..190d6887b7 100644
--- a/packages/babel-generator/src/generators/flow.js
+++ b/packages/babel-generator/src/generators/flow.js
@@ -1,10 +1,13 @@
+/* @flow */
+
+import type NodePrinter from "../node/printer";
import * as t from "babel-types";
export function AnyTypeAnnotation() {
this.push("any");
}
-export function ArrayTypeAnnotation(node, print) {
+export function ArrayTypeAnnotation(node: Object, print: NodePrinter) {
print.plain(node.elementType);
this.push("[");
this.push("]");
@@ -14,37 +17,37 @@ export function BooleanTypeAnnotation() {
this.push("bool");
}
-export function BooleanLiteralTypeAnnotation(node) {
+export function BooleanLiteralTypeAnnotation(node: Object) {
this.push(node.value ? "true" : "false");
}
-export function DeclareClass(node, print) {
+export function DeclareClass(node: Object, print: NodePrinter) {
this.push("declare class ");
this._interfaceish(node, print);
}
-export function DeclareFunction(node, print) {
+export function DeclareFunction(node: Object, print: NodePrinter) {
this.push("declare function ");
print.plain(node.id);
print.plain(node.id.typeAnnotation.typeAnnotation);
this.semicolon();
}
-export function DeclareModule(node, print) {
+export function DeclareModule(node: Object, print: NodePrinter) {
this.push("declare module ");
print.plain(node.id);
this.space();
print.plain(node.body);
}
-export function DeclareVariable(node, print) {
+export function DeclareVariable(node: Object, print: NodePrinter) {
this.push("declare let ");
print.plain(node.id);
print.plain(node.id.typeAnnotation);
this.semicolon();
}
-export function FunctionTypeAnnotation(node, print, parent) {
+export function FunctionTypeAnnotation(node: Object, print: NodePrinter, parent: Object) {
print.plain(node.typeParameters);
this.push("(");
print.list(node.params);
@@ -72,7 +75,7 @@ export function FunctionTypeAnnotation(node, print, parent) {
print.plain(node.returnType);
}
-export function FunctionTypeParam(node, print) {
+export function FunctionTypeParam(node: Object, print: NodePrinter) {
print.plain(node.name);
if (node.optional) this.push("?");
this.push(":");
@@ -80,14 +83,14 @@ export function FunctionTypeParam(node, print) {
print.plain(node.typeAnnotation);
}
-export function InterfaceExtends(node, print) {
+export function InterfaceExtends(node: Object, print: NodePrinter) {
print.plain(node.id);
print.plain(node.typeParameters);
}
export { InterfaceExtends as ClassImplements, InterfaceExtends as GenericTypeAnnotation };
-export function _interfaceish(node, print) {
+export function _interfaceish(node: Object, print: NodePrinter) {
print.plain(node.id);
print.plain(node.typeParameters);
if (node.extends.length) {
@@ -98,12 +101,12 @@ export function _interfaceish(node, print) {
print.plain(node.body);
}
-export function InterfaceDeclaration(node, print) {
+export function InterfaceDeclaration(node: Object, print: NodePrinter) {
this.push("interface ");
this._interfaceish(node, print);
}
-export function IntersectionTypeAnnotation(node, print) {
+export function IntersectionTypeAnnotation(node: Object, print: NodePrinter) {
print.join(node.types, { separator: " & " });
}
@@ -111,18 +114,18 @@ export function MixedTypeAnnotation() {
this.push("mixed");
}
-export function NullableTypeAnnotation(node, print) {
+export function NullableTypeAnnotation(node: Object, print: NodePrinter) {
this.push("?");
print.plain(node.typeAnnotation);
}
-export { Literal as NumberLiteralTypeAnnotation } from "./types";
+export { NumberLiteral as NumberLiteralTypeAnnotation } from "./types";
export function NumberTypeAnnotation() {
this.push("number");
}
-export function StringLiteralTypeAnnotation(node) {
+export function StringLiteralTypeAnnotation(node: Object) {
this.push(this._stringLiteral(node.value));
}
@@ -130,18 +133,18 @@ export function StringTypeAnnotation() {
this.push("string");
}
-export function TupleTypeAnnotation(node, print) {
+export function TupleTypeAnnotation(node: Object, print: NodePrinter) {
this.push("[");
print.join(node.types, { separator: ", " });
this.push("]");
}
-export function TypeofTypeAnnotation(node, print) {
+export function TypeofTypeAnnotation(node: Object, print: NodePrinter) {
this.push("typeof ");
print.plain(node.argument);
}
-export function TypeAlias(node, print) {
+export function TypeAlias(node: Object, print: NodePrinter) {
this.push("type ");
print.plain(node.id);
print.plain(node.typeParameters);
@@ -152,18 +155,18 @@ export function TypeAlias(node, print) {
this.semicolon();
}
-export function TypeAnnotation(node, print) {
+export function TypeAnnotation(node: Object, print: NodePrinter) {
this.push(":");
this.space();
if (node.optional) this.push("?");
print.plain(node.typeAnnotation);
}
-export function TypeParameterInstantiation(node, print) {
+export function TypeParameterInstantiation(node: Object, print: NodePrinter) {
this.push("<");
print.join(node.params, {
separator: ", ",
- iterator(node) {
+ iterator(node: Object) {
print.plain(node.typeAnnotation);
}
});
@@ -172,7 +175,7 @@ export function TypeParameterInstantiation(node, print) {
export { TypeParameterInstantiation as TypeParameterDeclaration };
-export function ObjectTypeAnnotation(node, print) {
+export function ObjectTypeAnnotation(node: Object, print: NodePrinter) {
this.push("{");
let props = node.properties.concat(node.callProperties, node.indexers);
@@ -196,12 +199,12 @@ export function ObjectTypeAnnotation(node, print) {
this.push("}");
}
-export function ObjectTypeCallProperty(node, print) {
+export function ObjectTypeCallProperty(node: Object, print: NodePrinter) {
if (node.static) this.push("static ");
print.plain(node.value);
}
-export function ObjectTypeIndexer(node, print) {
+export function ObjectTypeIndexer(node: Object, print: NodePrinter) {
if (node.static) this.push("static ");
this.push("[");
print.plain(node.id);
@@ -214,7 +217,7 @@ export function ObjectTypeIndexer(node, print) {
print.plain(node.value);
}
-export function ObjectTypeProperty(node, print) {
+export function ObjectTypeProperty(node: Object, print: NodePrinter) {
if (node.static) this.push("static ");
print.plain(node.key);
if (node.optional) this.push("?");
@@ -225,17 +228,17 @@ export function ObjectTypeProperty(node, print) {
print.plain(node.value);
}
-export function QualifiedTypeIdentifier(node, print) {
+export function QualifiedTypeIdentifier(node: Object, print: NodePrinter) {
print.plain(node.qualification);
this.push(".");
print.plain(node.id);
}
-export function UnionTypeAnnotation(node, print) {
+export function UnionTypeAnnotation(node: Object, print: NodePrinter) {
print.join(node.types, { separator: " | " });
}
-export function TypeCastExpression(node, print) {
+export function TypeCastExpression(node: Object, print: NodePrinter) {
this.push("(");
print.plain(node.expression);
print.plain(node.typeAnnotation);
diff --git a/packages/babel-generator/src/generators/jsx.js b/packages/babel-generator/src/generators/jsx.js
index a89061e540..54b881ca46 100644
--- a/packages/babel-generator/src/generators/jsx.js
+++ b/packages/babel-generator/src/generators/jsx.js
@@ -1,4 +1,8 @@
-export function JSXAttribute(node, print) {
+/* @flow */
+
+import type NodePrinter from "../node/printer";
+
+export function JSXAttribute(node: Object, print: NodePrinter) {
print.plain(node.name);
if (node.value) {
this.push("=");
@@ -6,45 +10,45 @@ export function JSXAttribute(node, print) {
}
}
-export function JSXIdentifier(node) {
+export function JSXIdentifier(node: Object) {
this.push(node.name);
}
-export function JSXNamespacedName(node, print) {
+export function JSXNamespacedName(node: Object, print: NodePrinter) {
print.plain(node.namespace);
this.push(":");
print.plain(node.name);
}
-export function JSXMemberExpression(node, print) {
+export function JSXMemberExpression(node: Object, print: NodePrinter) {
print.plain(node.object);
this.push(".");
print.plain(node.property);
}
-export function JSXSpreadAttribute(node, print) {
+export function JSXSpreadAttribute(node: Object, print: NodePrinter) {
this.push("{...");
print.plain(node.argument);
this.push("}");
}
-export function JSXExpressionContainer(node, print) {
+export function JSXExpressionContainer(node: Object, print: NodePrinter) {
this.push("{");
print.plain(node.expression);
this.push("}");
}
-export function JSXText(node) {
+export function JSXText(node: Object) {
this.push(node.value, true);
}
-export function JSXElement(node, print) {
+export function JSXElement(node: Object, print: NodePrinter) {
let open = node.openingElement;
print.plain(open);
if (open.selfClosing) return;
this.indent();
- for (let child of (node.children: Array)) {
+ for (let child of (node.children: Array)) {
print.plain(child);
}
this.dedent();
@@ -52,7 +56,7 @@ export function JSXElement(node, print) {
print.plain(node.closingElement);
}
-export function JSXOpeningElement(node, print) {
+export function JSXOpeningElement(node: Object, print: NodePrinter) {
this.push("<");
print.plain(node.name);
if (node.attributes.length > 0) {
@@ -62,7 +66,7 @@ export function JSXOpeningElement(node, print) {
this.push(node.selfClosing ? " />" : ">");
}
-export function JSXClosingElement(node, print) {
+export function JSXClosingElement(node: Object, print: NodePrinter) {
this.push("");
print.plain(node.name);
this.push(">");
diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js
index 920235f05f..65c23a6312 100644
--- a/packages/babel-generator/src/generators/methods.js
+++ b/packages/babel-generator/src/generators/methods.js
@@ -1,6 +1,9 @@
+/* @flow */
+
+import type NodePrinter from "../node/printer";
import * as t from "babel-types";
-export function _params(node, print) {
+export function _params(node: Object, print: NodePrinter) {
print.plain(node.typeParameters);
this.push("(");
print.list(node.params, {
@@ -16,7 +19,7 @@ export function _params(node, print) {
}
}
-export function _method(node, print) {
+export function _method(node: Object, print: NodePrinter) {
let value = node.value;
let kind = node.kind;
let key = node.key;
@@ -46,7 +49,7 @@ export function _method(node, print) {
print.plain(value.body);
}
-export function FunctionExpression(node, print) {
+export function FunctionExpression(node: Object, print: NodePrinter) {
if (node.async) this.push("async ");
this.push("function");
if (node.generator) this.push("*");
@@ -65,7 +68,7 @@ export function FunctionExpression(node, print) {
export { FunctionExpression as FunctionDeclaration };
-export function ArrowFunctionExpression(node, print) {
+export function ArrowFunctionExpression(node: Object, print: NodePrinter) {
if (node.async) this.push("async ");
if (node.params.length === 1 && t.isIdentifier(node.params[0])) {
diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js
index 0864dd58a6..7cd2106d50 100644
--- a/packages/babel-generator/src/generators/modules.js
+++ b/packages/babel-generator/src/generators/modules.js
@@ -1,6 +1,9 @@
+/* @flow */
+
+import type NodePrinter from "../node/printer";
import * as t from "babel-types";
-export function ImportSpecifier(node, print) {
+export function ImportSpecifier(node: Object, print: NodePrinter) {
print.plain(node.imported);
if (node.local && node.local.name !== node.imported.name) {
this.push(" as ");
@@ -8,15 +11,15 @@ export function ImportSpecifier(node, print) {
}
}
-export function ImportDefaultSpecifier(node, print) {
+export function ImportDefaultSpecifier(node: Object, print: NodePrinter) {
print.plain(node.local);
}
-export function ExportDefaultSpecifier(node, print) {
+export function ExportDefaultSpecifier(node: Object, print: NodePrinter) {
print.plain(node.exported);
}
-export function ExportSpecifier(node, print) {
+export function ExportSpecifier(node: Object, print: NodePrinter) {
print.plain(node.local);
if (node.exported && node.local.name !== node.exported.name) {
this.push(" as ");
@@ -24,12 +27,12 @@ export function ExportSpecifier(node, print) {
}
}
-export function ExportNamespaceSpecifier(node, print) {
+export function ExportNamespaceSpecifier(node: Object, print: NodePrinter) {
this.push("* as ");
print.plain(node.exported);
}
-export function ExportAllDeclaration(node, print) {
+export function ExportAllDeclaration(node: Object, print: NodePrinter) {
this.push("export *");
if (node.exported) {
this.push(" as ");
@@ -40,19 +43,17 @@ export function ExportAllDeclaration(node, print) {
this.semicolon();
}
-export function ExportNamedDeclaration(node, print) {
+export function ExportNamedDeclaration(node: Object, print: NodePrinter) {
this.push("export ");
ExportDeclaration.call(this, node, print);
}
-export function ExportDefaultDeclaration(node, print) {
+export function ExportDefaultDeclaration(node: Object, print: NodePrinter) {
this.push("export default ");
ExportDeclaration.call(this, node, print);
}
-function ExportDeclaration(node, print) {
- let specifiers = node.specifiers;
-
+function ExportDeclaration(node: Object, print: NodePrinter) {
if (node.declaration) {
let declar = node.declaration;
print.plain(declar);
@@ -62,6 +63,8 @@ function ExportDeclaration(node, print) {
this.push("type ");
}
+ let specifiers = node.specifiers.slice(0);
+
let first = specifiers[0];
let hasSpecial = false;
if (t.isExportDefaultSpecifier(first) || t.isExportNamespaceSpecifier(first)) {
@@ -91,27 +94,27 @@ function ExportDeclaration(node, print) {
this.ensureSemicolon();
}
-export function ImportDeclaration(node, print) {
+export function ImportDeclaration(node: Object, print: NodePrinter) {
this.push("import ");
if (node.importKind === "type" || node.importKind === "typeof") {
this.push(node.importKind + " ");
}
- let specfiers = node.specifiers;
- if (specfiers && specfiers.length) {
- let first = node.specifiers[0];
+ let specifiers = node.specifiers.slice(0);
+ if (specifiers && specifiers.length) {
+ let first = specifiers[0];
if (t.isImportDefaultSpecifier(first) || t.isImportNamespaceSpecifier(first)) {
- print.plain(node.specifiers.shift());
- if (node.specifiers.length) {
+ print.plain(specifiers.shift());
+ if (specifiers.length) {
this.push(", ");
}
}
- if (node.specifiers.length) {
+ if (specifiers.length) {
this.push("{");
this.space();
- print.join(node.specifiers, { separator: ", " });
+ print.join(specifiers, { separator: ", " });
this.space();
this.push("}");
}
@@ -123,7 +126,7 @@ export function ImportDeclaration(node, print) {
this.semicolon();
}
-export function ImportNamespaceSpecifier(node, print) {
+export function ImportNamespaceSpecifier(node: Object, print: NodePrinter) {
this.push("* as ");
print.plain(node.local);
}
diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js
index 7a67bfdc63..75ec354998 100644
--- a/packages/babel-generator/src/generators/statements.js
+++ b/packages/babel-generator/src/generators/statements.js
@@ -1,7 +1,10 @@
+/* @flow */
+
+import type NodePrinter from "../node/printer";
import repeating from "repeating";
import * as t from "babel-types";
-export function WithStatement(node, print) {
+export function WithStatement(node: Object, print: NodePrinter) {
this.keyword("with");
this.push("(");
print.plain(node.object);
@@ -9,7 +12,7 @@ export function WithStatement(node, print) {
print.block(node.body);
}
-export function IfStatement(node, print) {
+export function IfStatement(node: Object, print: NodePrinter) {
this.keyword("if");
this.push("(");
print.plain(node.test);
@@ -25,7 +28,7 @@ export function IfStatement(node, print) {
}
}
-export function ForStatement(node, print) {
+export function ForStatement(node: Object, print: NodePrinter) {
this.keyword("for");
this.push("(");
@@ -47,7 +50,7 @@ export function ForStatement(node, print) {
print.block(node.body);
}
-export function WhileStatement(node, print) {
+export function WhileStatement(node: Object, print: NodePrinter) {
this.keyword("while");
this.push("(");
print.plain(node.test);
@@ -56,7 +59,7 @@ export function WhileStatement(node, print) {
}
let buildForXStatement = function (op) {
- return function (node, print) {
+ return function (node: Object, print: NodePrinter) {
this.keyword("for");
this.push("(");
print.plain(node.left);
@@ -70,7 +73,7 @@ let buildForXStatement = function (op) {
export let ForInStatement = buildForXStatement("in");
export let ForOfStatement = buildForXStatement("of");
-export function DoWhileStatement(node, print) {
+export function DoWhileStatement(node: Object, print: NodePrinter) {
this.push("do ");
print.plain(node.body);
this.space();
@@ -81,7 +84,7 @@ export function DoWhileStatement(node, print) {
}
function buildLabelStatement(prefix, key = "label") {
- return function (node, print) {
+ return function (node: Object, print: NodePrinter) {
this.push(prefix);
let label = node[key];
@@ -101,13 +104,13 @@ export let ReturnStatement = buildLabelStatement("return", "argument");
export let BreakStatement = buildLabelStatement("break");
export let ThrowStatement = buildLabelStatement("throw", "argument");
-export function LabeledStatement(node, print) {
+export function LabeledStatement(node: Object, print: NodePrinter) {
print.plain(node.label);
this.push(": ");
print.plain(node.body);
}
-export function TryStatement(node, print) {
+export function TryStatement(node: Object, print: NodePrinter) {
this.keyword("try");
print.plain(node.block);
this.space();
@@ -128,7 +131,7 @@ export function TryStatement(node, print) {
}
}
-export function CatchClause(node, print) {
+export function CatchClause(node: Object, print: NodePrinter) {
this.keyword("catch");
this.push("(");
print.plain(node.param);
@@ -136,7 +139,7 @@ export function CatchClause(node, print) {
print.plain(node.body);
}
-export function SwitchStatement(node, print) {
+export function SwitchStatement(node: Object, print: NodePrinter) {
this.keyword("switch");
this.push("(");
print.plain(node.discriminant);
@@ -154,7 +157,7 @@ export function SwitchStatement(node, print) {
this.push("}");
}
-export function SwitchCase(node, print) {
+export function SwitchCase(node: Object, print: NodePrinter) {
if (node.test) {
this.push("case ");
print.plain(node.test);
@@ -173,13 +176,13 @@ export function DebuggerStatement() {
this.push("debugger;");
}
-export function VariableDeclaration(node, print, parent) {
+export function VariableDeclaration(node: Object, print: NodePrinter, parent: Object) {
this.push(node.kind + " ");
let hasInits = false;
// don't add whitespace to loop heads
if (!t.isFor(parent)) {
- for (let declar of (node.declarations: Array)) {
+ for (let declar of (node.declarations: Array)) {
if (declar.init) {
// has an init so let's split it up over multiple lines
hasInits = true;
@@ -216,7 +219,7 @@ export function VariableDeclaration(node, print, parent) {
this.semicolon();
}
-export function VariableDeclarator(node, print) {
+export function VariableDeclarator(node: Object, print: NodePrinter) {
print.plain(node.id);
print.plain(node.id.typeAnnotation);
if (node.init) {
diff --git a/packages/babel-generator/src/generators/template-literals.js b/packages/babel-generator/src/generators/template-literals.js
index 9d0b4e694c..d10f0d461e 100644
--- a/packages/babel-generator/src/generators/template-literals.js
+++ b/packages/babel-generator/src/generators/template-literals.js
@@ -1,13 +1,17 @@
-export function TaggedTemplateExpression(node, print) {
+/* @flow */
+
+import type NodePrinter from "../node/printer";
+
+export function TaggedTemplateExpression(node: Object, print: NodePrinter) {
print.plain(node.tag);
print.plain(node.quasi);
}
-export function TemplateElement(node) {
+export function TemplateElement(node: Object) {
this._push(node.value.raw);
}
-export function TemplateLiteral(node, print) {
+export function TemplateLiteral(node: Object, print: NodePrinter) {
this.push("`");
let quasis = node.quasis;
diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js
index d1fcfac361..4310509baa 100644
--- a/packages/babel-generator/src/generators/types.js
+++ b/packages/babel-generator/src/generators/types.js
@@ -1,19 +1,22 @@
+/* @flow */
+
/* eslint quotes: 0 */
+import type NodePrinter from "../node/printer";
import * as t from "babel-types";
-export function Identifier(node) {
+export function Identifier(node: Object) {
this.push(node.name);
}
-export function RestElement(node, print) {
+export function RestElement(node: Object, print: NodePrinter) {
this.push("...");
print.plain(node.argument);
}
export { RestElement as SpreadElement, RestElement as SpreadProperty };
-export function ObjectExpression(node, print) {
+export function ObjectExpression(node: Object, print: NodePrinter) {
let props = node.properties;
this.push("{");
@@ -30,7 +33,7 @@ export function ObjectExpression(node, print) {
export { ObjectExpression as ObjectPattern };
-export function Property(node, print) {
+export function Property(node: Object, print: NodePrinter) {
print.list(node.decorators, { separator: "" });
if (node.method || node.kind === "get" || node.kind === "set") {
@@ -64,7 +67,7 @@ export function Property(node, print) {
}
}
-export function ArrayExpression(node, print) {
+export function ArrayExpression(node: Object, print: NodePrinter) {
let elems = node.elements;
let len = elems.length;
@@ -92,11 +95,11 @@ export function ArrayExpression(node, print) {
export { ArrayExpression as ArrayPattern };
-export function RegexLiteral(node) {
+export function RegexLiteral(node: Object) {
this.push(`/${node.pattern}/${node.flags}`);
}
-export function BooleanLiteral(node) {
+export function BooleanLiteral(node: Object) {
this.push(node.value ? "true" : "false");
}
@@ -104,15 +107,15 @@ export function NullLiteral() {
this.push("null");
}
-export function NumberLiteral(node) {
+export function NumberLiteral(node: Object) {
this.push(node.value + "");
}
-export function StringLiteral(node) {
+export function StringLiteral(node: Object) {
this.push(this._stringLiteral(node.value));
}
-export function _stringLiteral(val) {
+export function _stringLiteral(val: string): string {
val = JSON.stringify(val);
// escape illegal js but valid json unicode characters
diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js
index b560b7e518..d6b14dbf0e 100644
--- a/packages/babel-generator/src/index.js
+++ b/packages/babel-generator/src/index.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import detectIndent from "detect-indent";
import Whitespace from "./whitespace";
import NodePrinter from "./node/printer";
@@ -32,6 +34,29 @@ class CodeGenerator {
this.buffer = new Buffer(this.position, this.format);
}
+ format: {
+ shouldPrintComment: boolean;
+ retainLines: boolean;
+ comments: boolean;
+ compact: boolean | "auto";
+ quotes: "single" | "double";
+ concise: boolean;
+ indent: {
+ adjustMultilineComment: boolean;
+ style: string;
+ base: number;
+ }
+ };
+
+ whitespace: Whitespace;
+ position: Position;
+ map: SourceMap;
+ buffer: Buffer;
+ comments: Array;
+ tokens: Array;
+ opts: Object;
+ ast: Object;
+
/**
* Normalize generator options, setting defaults.
*
@@ -51,6 +76,7 @@ class CodeGenerator {
retainLines: opts.retainLines,
comments: opts.comments == null || opts.comments,
compact: opts.compact,
+ concise: opts.concise,
quotes: CodeGenerator.findCommonStringDelimiter(code, tokens),
indent: {
adjustMultilineComment: true,
@@ -106,24 +132,6 @@ class CodeGenerator {
}
}
- /**
- * All node generators.
- */
-
- static generators = {
- templateLiterals: require("./generators/template-literals"),
- comprehensions: require("./generators/comprehensions"),
- expressions: require("./generators/expressions"),
- statements: require("./generators/statements"),
- classes: require("./generators/classes"),
- methods: require("./generators/methods"),
- modules: require("./generators/modules"),
- types: require("./generators/types"),
- flow: require("./generators/flow"),
- base: require("./generators/base"),
- jsx: require("./generators/jsx")
- };
-
/**
* Generate code and sourcemap from ast.
*
@@ -131,17 +139,7 @@ class CodeGenerator {
*/
generate() {
- let ast = this.ast;
-
- this.print(ast);
-
- if (ast.comments) {
- let comments = [];
- for (let comment of (ast.comments: Array)) {
- if (!comment._displayed) comments.push(comment);
- }
- this._printComments(comments);
- }
+ this.print(this.ast);
return {
map: this.map.get(),
@@ -238,10 +236,11 @@ class CodeGenerator {
this.printTrailingComments(node, parent);
}
- printJoin(print, nodes, opts = {}) {
+ printJoin(print, nodes: ?Array, opts = {}) {
if (!nodes || !nodes.length) return;
let len = nodes.length;
+ let node, i;
if (opts.indent) this.indent();
@@ -259,8 +258,8 @@ class CodeGenerator {
}
};
- for (let i = 0; i < nodes.length; i++) {
- let node = nodes[i];
+ for (i = 0; i < nodes.length; i++) {
+ node = nodes[i];
print.plain(node, printOpts);
}
@@ -307,13 +306,13 @@ class CodeGenerator {
}
let comments = [];
- let nodes = [node];
+ let nodes: Array = [node];
if (t.isExpressionStatement(node)) {
nodes.push(node.argument);
}
- for (let node of (nodes: Array)) {
+ for (let node of nodes) {
comments = comments.concat(this._getComments(key, node));
}
@@ -394,13 +393,23 @@ each(Buffer.prototype, function (fn, key) {
};
});
-each(CodeGenerator.generators, function (generator) {
+each([
+ require("./generators/template-literals"),
+ require("./generators/comprehensions"),
+ require("./generators/expressions"),
+ require("./generators/statements"),
+ require("./generators/classes"),
+ require("./generators/methods"),
+ require("./generators/modules"),
+ require("./generators/types"),
+ require("./generators/flow"),
+ require("./generators/base"),
+ require("./generators/jsx")
+], function (generator) {
extend(CodeGenerator.prototype, generator);
});
-module.exports = function (ast, opts, code) {
+export default function (ast: Object, opts: Object, code: string): Object {
let gen = new CodeGenerator(ast, opts, code);
return gen.generate();
-};
-
-module.exports.CodeGenerator = CodeGenerator;
+}
diff --git a/packages/babel-generator/src/node/index.js b/packages/babel-generator/src/node/index.js
index b6fecc1a9f..a477bde0e0 100644
--- a/packages/babel-generator/src/node/index.js
+++ b/packages/babel-generator/src/node/index.js
@@ -1,20 +1,12 @@
+/* @flow */
+
import whitespace from "./whitespace";
import * as parens from "./parentheses";
import each from "lodash/collection/each";
import some from "lodash/collection/some";
import * as t from "babel-types";
-/**
- * Test if node matches a set of type-matcher pairs.
- * @example
- * find({
- * VariableDeclaration(node, parent) {
- * return true;
- * }
- * }, node, parent);
- */
-
-let find = function (obj, node, parent) {
+function find(obj, node, parent) {
if (!obj) return;
let result;
@@ -30,30 +22,21 @@ let find = function (obj, node, parent) {
}
return result;
-};
-
-/**
- * Whitespace and Parenthesis related methods for nodes.
- */
+}
export default class Node {
- constructor(node, parent) {
+ constructor(node: Object, parent: Object) {
this.parent = parent;
this.node = node;
}
- /**
- * Test if `node` can have whitespace set by the user.
- */
+ parent: Object;
+ node: Object;
static isUserWhitespacable(node) {
return t.isUserWhitespacable(node);
}
- /**
- * Test if a `node` requires whitespace.
- */
-
static needsWhitespace(node, parent, type) {
if (!node) return 0;
@@ -76,26 +59,14 @@ export default class Node {
return (linesInfo && linesInfo[type]) || 0;
}
- /**
- * Test if a `node` requires whitespace before it.
- */
-
static needsWhitespaceBefore(node, parent) {
return Node.needsWhitespace(node, parent, "before");
}
- /**
- * Test if a `note` requires whitespace after it.
- */
-
static needsWhitespaceAfter(node, parent) {
return Node.needsWhitespace(node, parent, "after");
}
- /**
- * Test if a `node` needs parentheses around it.
- */
-
static needsParens(node, parent) {
if (!parent) return false;
@@ -112,10 +83,6 @@ export default class Node {
}
}
-/**
- * Add all static methods from `Node` to `Node.prototype`.
- */
-
each(Node, function (fn, key) {
Node.prototype[key] = function () {
// Avoid leaking arguments to prevent deoptimization
diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js
index 11c8eb3502..685ed247a2 100644
--- a/packages/babel-generator/src/node/parentheses.js
+++ b/packages/babel-generator/src/node/parentheses.js
@@ -1,40 +1,50 @@
-import each from "lodash/collection/each";
+/* @flow */
+
import * as t from "babel-types";
-const PRECEDENCE = {};
+const PRECEDENCE = {
+ "||": 0,
+ "&&": 1,
+ "|": 2,
+ "^": 3,
+ "&": 4,
+ "==": 5,
+ "===": 5,
+ "!=": 5,
+ "!==": 5,
+ "<": 6,
+ ">": 6,
+ "<=": 6,
+ ">=": 6,
+ in: 6,
+ instanceof: 6,
+ ">>": 7,
+ "<<": 7,
+ ">>>": 7,
+ "+": 8,
+ "-": 8,
+ "*": 9,
+ "/": 9,
+ "%": 9,
+ "**": 10
+};
-each([
- ["||"],
- ["&&"],
- ["|"],
- ["^"],
- ["&"],
- ["==", "===", "!=", "!=="],
- ["<", ">", "<=", ">=", "in", "instanceof"],
- [">>", "<<", ">>>"],
- ["+", "-"],
- ["*", "/", "%"],
- ["**"]
-], function (tier, i) {
- each(tier, function (op) {
- PRECEDENCE[op] = i;
- });
-});
-
-export function NullableTypeAnnotation(node, parent) {
+export function NullableTypeAnnotation(node: Object, parent: Object): boolean {
return t.isArrayTypeAnnotation(parent);
}
export { NullableTypeAnnotation as FunctionTypeAnnotation };
-export function UpdateExpression(node, parent) {
+export function UpdateExpression(node: Object, parent: Object): boolean {
if (t.isMemberExpression(parent) && parent.object === node) {
// (foo++).test()
return true;
}
+
+ return false;
}
-export function ObjectExpression(node, parent) {
+export function ObjectExpression(node: Object, parent: Object): boolean {
if (t.isExpressionStatement(parent)) {
// ({ foo: "bar" });
return true;
@@ -48,7 +58,7 @@ export function ObjectExpression(node, parent) {
return false;
}
-export function Binary(node, parent) {
+export function Binary(node: Object, parent: Object): boolean {
if ((t.isCallExpression(parent) || t.isNewExpression(parent)) && parent.callee === node) {
return true;
}
@@ -76,9 +86,11 @@ export function Binary(node, parent) {
return true;
}
}
+
+ return false;
}
-export function BinaryExpression(node, parent) {
+export function BinaryExpression(node: Object, parent: Object): boolean {
if (node.operator === "in") {
// let i = (1 in []);
if (t.isVariableDeclarator(parent)) {
@@ -90,11 +102,13 @@ export function BinaryExpression(node, parent) {
return true;
}
}
+
+ return false;
}
-export function SequenceExpression(node, parent) {
+export function SequenceExpression(node: Object, parent: Object): boolean {
if (t.isForStatement(parent)) {
- // Although parentheses wouldn't hurt around sequence
+ // Although parentheses wouldn"t hurt around sequence
// expressions in the head of for loops, traditional style
// dictates that e.g. i++, j++ should not be wrapped with
// parentheses.
@@ -110,7 +124,7 @@ export function SequenceExpression(node, parent) {
return true;
}
-export function YieldExpression(node, parent) {
+export function YieldExpression(node: Object, parent: Object): boolean {
return t.isBinary(parent) ||
t.isUnaryLike(parent) ||
t.isCallExpression(parent) ||
@@ -120,7 +134,7 @@ export function YieldExpression(node, parent) {
t.isYieldExpression(parent);
}
-export function ClassExpression(node, parent) {
+export function ClassExpression(node: Object, parent: Object): boolean {
// (class {});
if (t.isExpressionStatement(parent)) {
return true;
@@ -130,13 +144,15 @@ export function ClassExpression(node, parent) {
if (t.isExportDeclaration(parent)) {
return true;
}
+
+ return false;
}
-export function UnaryLike(node, parent) {
+export function UnaryLike(node: Object, parent: Object): boolean {
return t.isMemberExpression(parent) && parent.object === node;
}
-export function FunctionExpression(node, parent) {
+export function FunctionExpression(node: Object, parent: Object): boolean {
// (function () {});
if (t.isExpressionStatement(parent)) {
return true;
@@ -156,9 +172,11 @@ export function FunctionExpression(node, parent) {
if (t.isCallExpression(parent) && parent.callee === node) {
return true;
}
+
+ return false;
}
-export function ConditionalExpression(node, parent) {
+export function ConditionalExpression(node: Object, parent: Object): boolean {
if (t.isUnaryLike(parent)) {
return true;
}
@@ -184,7 +202,7 @@ export function ConditionalExpression(node, parent) {
return false;
}
-export function AssignmentExpression(node) {
+export function AssignmentExpression(node: Object): boolean {
if (t.isObjectPattern(node.left)) {
return true;
} else {
diff --git a/packages/babel-generator/src/node/printer.js b/packages/babel-generator/src/node/printer.js
index 5ee0f4a9a7..f672d167df 100644
--- a/packages/babel-generator/src/node/printer.js
+++ b/packages/babel-generator/src/node/printer.js
@@ -1,3 +1,5 @@
+/* @flow */
+
/**
* Printer for nodes, needs a `generator` and a `parent`.
*/
diff --git a/packages/babel-generator/src/node/whitespace.js b/packages/babel-generator/src/node/whitespace.js
index 2623e1a273..b9ac11f2e8 100644
--- a/packages/babel-generator/src/node/whitespace.js
+++ b/packages/babel-generator/src/node/whitespace.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import isBoolean from "lodash/lang/isBoolean";
import each from "lodash/collection/each";
import map from "lodash/collection/map";
diff --git a/packages/babel-generator/src/position.js b/packages/babel-generator/src/position.js
index a6787fd3b2..5810a90d6b 100644
--- a/packages/babel-generator/src/position.js
+++ b/packages/babel-generator/src/position.js
@@ -1,3 +1,5 @@
+/* @flow */
+
/**
* Track current position in code generation.
*/
diff --git a/packages/babel-generator/src/source-map.js b/packages/babel-generator/src/source-map.js
index f1b3ee3727..75254843c9 100644
--- a/packages/babel-generator/src/source-map.js
+++ b/packages/babel-generator/src/source-map.js
@@ -1,3 +1,5 @@
+/* @flow */
+
import sourceMap from "source-map";
import * as t from "babel-types";
diff --git a/packages/babel-generator/src/whitespace.js b/packages/babel-generator/src/whitespace.js
index 05816b1b73..de8873d043 100644
--- a/packages/babel-generator/src/whitespace.js
+++ b/packages/babel-generator/src/whitespace.js
@@ -1,3 +1,5 @@
+/* @flow */
+
/**
* Returns `i`th number from `base`, continuing from 0 when `max` is reached.
* Useful for shifting `for` loop by a fixed number but going over all items.
From 464d2b7ef32f59b9e81cd7413ec93b237fa79a2a Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Thu, 24 Sep 2015 18:42:50 +0100
Subject: [PATCH 125/174] enable no-var rule in eslint config
---
package.json | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 3d49f6de63..b22a6c6448 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,12 @@
"parser": "babel-eslint",
"extends": "eslint:recommended",
"rules": {
- "quotes": [2, "double", "avoid-escape"],
+ "quotes": [
+ 2,
+ "double",
+ "avoid-escape"
+ ],
+ "no-var": 2,
"strict": 0,
"no-underscore-dangle": 0,
"curly": 0,
From d1588990d5ee1bf75d528e2314b33b6a4c1eb574 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Thu, 24 Sep 2015 18:43:10 +0100
Subject: [PATCH 126/174] add flow-comments plugin to babelrc and format json
---
package.json | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index b22a6c6448..08e36a316c 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,7 @@
"devDependencies": {
"babel": "5.8.21",
"babel-eslint": "^4.0.6",
+ "babel-plugin-flow-comments": "^1.0.9",
"browserify": "^11.0.0",
"chai": "^2.2.0",
"chalk": "^1.1.0",
@@ -24,11 +25,25 @@
"uglify-js": "^2.4.16"
},
"babel": {
- "ignore": ["packages/babel-cli/src/babel-plugin/templates"],
+ "ignore": [
+ "packages/babel-cli/src/babel-plugin/templates"
+ ],
"stage": 0,
- "loose": ["all"],
- "blacklist": ["es6.tailCall"],
- "optional": ["optimisation.flow.forOf", "bluebirdCoroutines", "runtime"],
+ "loose": [
+ "all"
+ ],
+ "plugins": [
+ "flow-comments"
+ ],
+ "blacklist": [
+ "flow",
+ "es6.tailCall"
+ ],
+ "optional": [
+ "optimisation.flow.forOf",
+ "bluebirdCoroutines",
+ "runtime"
+ ],
"env": {
"test": {
"auxiliaryCommentBefore": "istanbul ignore next"
From 6740561f911e82d0b023f8f9f8e90ef9b7d3c11d Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:27:17 +0100
Subject: [PATCH 127/174] remove comments from old node after inheriting from
new one when replacing nodes - closes #2490, closes #2489
---
packages/babel-traverse/src/path/replacement.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/packages/babel-traverse/src/path/replacement.js b/packages/babel-traverse/src/path/replacement.js
index 1094e447a3..eb0ef5c61b 100644
--- a/packages/babel-traverse/src/path/replacement.js
+++ b/packages/babel-traverse/src/path/replacement.js
@@ -137,8 +137,11 @@ export function replaceWith(replacement, whateverAllowed) {
return this.replaceExpressionWithStatements([replacement]);
}
- var oldNode = this.node;
- if (oldNode) t.inheritsComments(replacement, oldNode);
+ let oldNode = this.node;
+ if (oldNode) {
+ t.inheritsComments(replacement, oldNode);
+ t.removeComments(oldNode);
+ }
// replace the node
this._replaceWith(replacement);
From 63cfb82ca7b6366a3e9da7fd84383805a4c19bc5 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:34:40 +0100
Subject: [PATCH 128/174] clean up mergeSourceMap method - closes #2479
---
packages/babel-core/src/transformation/file/index.js | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js
index e6c69ca1cd..731f62c5a8 100644
--- a/packages/babel-core/src/transformation/file/index.js
+++ b/packages/babel-core/src/transformation/file/index.js
@@ -417,13 +417,9 @@ export default class File extends Store {
}
mergeSourceMap(map: Object) {
- let opts = this.opts;
-
- let inputMap = opts.inputSourceMap;
+ let inputMap = this.opts.inputSourceMap;
if (inputMap) {
- map.sources[0] = inputMap.file;
-
let inputMapConsumer = new sourceMap.SourceMapConsumer(inputMap);
let outputMapConsumer = new sourceMap.SourceMapConsumer(map);
let outputMapGenerator = sourceMap.SourceMapGenerator.fromSourceMap(outputMapConsumer);
@@ -433,9 +429,9 @@ export default class File extends Store {
mergedMap.sources = inputMap.sources;
mergedMap.file = inputMap.file;
return mergedMap;
+ } else {
+ return map;
}
-
- return map;
}
getModuleFormatter(type: string) {
From f88cc9d509c3d8b3b42f2f4729e2f4df08b9bbc4 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:37:37 +0100
Subject: [PATCH 129/174] clean up babel-generator - closes #2210
---
packages/babel-generator/package.json | 4 +
packages/babel-generator/src/buffer.js | 13 +
.../babel-generator/src/generators/base.js | 28 +-
.../babel-generator/src/generators/classes.js | 40 ++-
.../src/generators/comprehensions.js | 31 --
.../src/generators/expressions.js | 88 +++---
.../babel-generator/src/generators/flow.js | 139 ++++-----
.../babel-generator/src/generators/jsx.js | 46 ++-
.../babel-generator/src/generators/methods.js | 37 ++-
.../babel-generator/src/generators/modules.js | 61 ++--
.../src/generators/statements.js | 95 +++---
.../src/generators/template-literals.js | 19 +-
.../babel-generator/src/generators/types.js | 37 ++-
packages/babel-generator/src/index.js | 295 +-----------------
packages/babel-generator/src/node/printer.js | 78 -----
packages/babel-generator/src/printer.js | 280 +++++++++++++++++
.../auto-indentation/hard-tab/actual.js | 6 +
.../auto-indentation/hard-tab/expected.js | 6 +
.../auto-indentation/soft-tab-2/actual.js | 6 +
.../auto-indentation/soft-tab-2/expected.js | 6 +
.../auto-indentation/soft-tab-4/actual.js | 6 +
.../auto-indentation/soft-tab-4/expected.js | 6 +
.../fixtures/auto-string/double/actual.js | 4 +
.../fixtures/auto-string/double/expected.js | 4 +
.../fixtures/auto-string/single/actual.js | 4 +
.../fixtures/auto-string/single/expected.js | 4 +
.../actual.js | 10 +
.../expected.js | 8 +
.../comments/2-space-multi-comment/actual.js | 6 +
.../2-space-multi-comment/expected.js | 6 +
.../actual.js | 4 +
.../expected.js | 4 +
.../options.json | 3 +
.../comments/block-line-comment/actual.js | 4 +
.../comments/block-line-comment/expected.js | 4 +
.../comment-only-with-space/actual.js | 7 +
.../comment-only-with-space/expected.js | 7 +
.../fixtures/comments/comment-only/actual.js | 4 +
.../comments/comment-only/expected.js | 4 +
.../actual.js | 5 +
.../expected.js | 5 +
.../options.json | 3 +
.../computed-property-comments-2/actual.js | 10 +
.../computed-property-comments-2/expected.js | 11 +
.../computed-property-comments/actual.js | 28 ++
.../computed-property-comments/expected.js | 27 ++
.../comments/do-while-line-comment/actual.js | 3 +
.../do-while-line-comment/expected.js | 2 +
.../comments/empty-line-comment/actual.js | 4 +
.../comments/empty-line-comment/expected.js | 4 +
.../test/fixtures/comments/empty/actual.js | 1 +
.../test/fixtures/comments/empty/expected.js | 1 +
.../function-block-line-comment/actual.js | 6 +
.../function-block-line-comment/expected.js | 6 +
.../comments/if-block-line-comment/actual.js | 5 +
.../if-block-line-comment/expected.js | 5 +
.../comments/if-empty-line-comment/actual.js | 3 +
.../if-empty-line-comment/expected.js | 3 +
.../comments/if-line-comment/actual.js | 5 +
.../comments/if-line-comment/expected.js | 7 +
.../comments/object_comments/actual.js | 12 +
.../comments/object_comments/expected.js | 12 +
.../comments/return-no-argument/actual.js | 3 +
.../comments/return-no-argument/expected.js | 3 +
.../simple-a-lot-of-line-comment/actual.js | 49 +++
.../simple-a-lot-of-line-comment/expected.js | 45 +++
.../simple-a-lot-of-multi-comment/actual.js | 51 +++
.../simple-a-lot-of-multi-comment/expected.js | 49 +++
.../comments/simple-line-comment/actual.js | 3 +
.../comments/simple-line-comment/expected.js | 3 +
.../comments/simple-multi-comment/actual.js | 22 ++
.../comments/simple-multi-comment/expected.js | 22 ++
.../simple-statement-comment/actual.js | 1 +
.../simple-statement-comment/expected.js | 1 +
.../comments/try-block-line-comment/actual.js | 12 +
.../try-block-line-comment/expected.js | 10 +
.../actual.js | 9 +
.../expected.js | 10 +
.../actual.js | 13 +
.../expected.js | 14 +
.../actual.js | 16 +
.../expected.js | 18 ++
.../test/fixtures/compact/options.json | 3 +
.../compact/single-line-comment/actual.js | 2 +
.../compact/single-line-comment/expected.js | 2 +
.../edgecase/bitwise-precedence/actual.js | 3 +
.../edgecase/bitwise-precedence/expected.js | 3 +
.../edgecase/floating-point/actual.js | 2 +
.../edgecase/floating-point/expected.js | 2 +
.../fixtures/edgecase/for-in-no-in/actual.js | 12 +
.../edgecase/for-in-no-in/expected.js | 12 +
.../edgecase/new-precedence/actual.js | 9 +
.../edgecase/new-precedence/expected.js | 9 +
.../actual.js | 3 +
.../expected.js | 3 +
.../actual.js | 6 +
.../expected.js | 4 +
.../options.json | 5 +
.../return-with-retainlines-option/actual.js | 11 +
.../expected.js | 10 +
.../options.json | 3 +
.../test/fixtures/edgecase/unary-op/actual.js | 5 +
.../fixtures/edgecase/unary-op/expected.js | 5 +
.../edgecase/variable-declaration/actual.js | 4 +
.../edgecase/variable-declaration/expected.js | 4 +
.../test/fixtures/flow/array-types/actual.js | 6 +
.../fixtures/flow/array-types/expected.js | 6 +
.../flow/boolean-literal-types/actual.js | 2 +
.../flow/boolean-literal-types/expected.js | 2 +
.../fixtures/flow/call-properties/actual.js | 5 +
.../fixtures/flow/call-properties/expected.js | 5 +
.../fixtures/flow/declare-module/actual.js | 5 +
.../fixtures/flow/declare-module/expected.js | 11 +
.../flow/declare-statements/actual.js | 11 +
.../flow/declare-statements/expected.js | 11 +
.../interfaces-module-and-script/actual.js | 9 +
.../interfaces-module-and-script/expected.js | 9 +
.../flow/number-literal-types/actual.js | 5 +
.../flow/number-literal-types/expected.js | 5 +
.../flow/qualified-generic-type/actual.js | 4 +
.../flow/qualified-generic-type/expected.js | 4 +
.../flow/string-literal-types/actual.js | 2 +
.../flow/string-literal-types/expected.js | 2 +
.../test/fixtures/flow/tuples/actual.js | 4 +
.../test/fixtures/flow/tuples/expected.js | 4 +
.../test/fixtures/flow/type-alias/actual.js | 3 +
.../test/fixtures/flow/type-alias/expected.js | 3 +
.../fixtures/flow/type-annotations/actual.js | 100 ++++++
.../flow/type-annotations/expected.js | 104 ++++++
.../test/fixtures/flow/typecasts/actual.js | 4 +
.../test/fixtures/flow/typecasts/expected.js | 4 +
.../harmony-edgecase/arrow-function/actual.js | 11 +
.../arrow-function/expected.js | 10 +
.../class-declaration/actual.js | 56 ++++
.../class-declaration/expected.js | 38 +++
.../class-expression/actual.js | 55 ++++
.../class-expression/expected.js | 39 +++
.../computed-property/actual.js | 14 +
.../computed-property/expected.js | 14 +
.../default-parameter/actual.js | 11 +
.../default-parameter/expected.js | 8 +
.../destructuring-assignment/actual.js | 18 ++
.../destructuring-assignment/expected.js | 15 +
.../export-default-declaration/actual.js | 1 +
.../export-default-declaration/expected.js | 1 +
.../harmony-edgecase/exports/actual.js | 9 +
.../harmony-edgecase/exports/expected.js | 9 +
.../for-of-statement/actual.js | 7 +
.../for-of-statement/expected.js | 5 +
.../import-with-default/actual.js | 7 +
.../import-with-default/expected.js | 3 +
.../harmony-edgecase/imports/actual.js | 8 +
.../harmony-edgecase/imports/expected.js | 4 +
.../harmony-edgecase/spread-element/actual.js | 5 +
.../spread-element/expected.js | 4 +
.../templates-escape/actual.js | 12 +
.../templates-escape/expected.js | 12 +
.../harmony-edgecase/templates/actual.js | 31 ++
.../harmony-edgecase/templates/expected.js | 31 ++
.../yield-precedence/actual.js | 7 +
.../yield-precedence/expected.js | 8 +
.../arrow-function-object-body/actual.js | 4 +
.../arrow-function-object-body/expected.js | 4 +
.../parentheses/terminator-break/actual.js | 12 +
.../parentheses/terminator-break/expected.js | 12 +
.../ArrayExpression-ArrayPattern/actual.js | 5 +
.../ArrayExpression-ArrayPattern/expected.js | 5 +
.../types/ArrowFunctionExpression/actual.js | 4 +
.../types/ArrowFunctionExpression/expected.js | 4 +
.../actual.js | 3 +
.../expected.js | 3 +
.../fixtures/types/AwaitExpression/actual.js | 7 +
.../types/AwaitExpression/expected.js | 7 +
.../fixtures/types/BindExpression/actual.js | 5 +
.../fixtures/types/BindExpression/expected.js | 5 +
.../fixtures/types/BlockStatement/actual.js | 5 +
.../fixtures/types/BlockStatement/expected.js | 5 +
.../fixtures/types/BreakStatement/actual.js | 7 +
.../fixtures/types/BreakStatement/expected.js | 7 +
.../fixtures/types/CallExpression/actual.js | 5 +
.../fixtures/types/CallExpression/expected.js | 5 +
.../ClassBody-MethodDefinition/actual.js | 13 +
.../ClassBody-MethodDefinition/expected.js | 13 +
.../fixtures/types/ClassDeclaration/actual.js | 2 +
.../types/ClassDeclaration/expected.js | 2 +
.../fixtures/types/ClassExpression/actual.js | 2 +
.../types/ClassExpression/expected.js | 2 +
.../types/ConditionalExpression/actual.js | 1 +
.../types/ConditionalExpression/expected.js | 1 +
.../types/ContinueStatement/actual.js | 7 +
.../types/ContinueStatement/expected.js | 7 +
.../types/DebuggerStatement/actual.js | 1 +
.../types/DebuggerStatement/expected.js | 1 +
.../test/fixtures/types/Decorator/actual.js | 31 ++
.../test/fixtures/types/Decorator/expected.js | 31 ++
.../fixtures/types/DoWhileStatement/actual.js | 5 +
.../types/DoWhileStatement/expected.js | 5 +
.../fixtures/types/EmptyStatement/actual.js | 1 +
.../fixtures/types/EmptyStatement/expected.js | 1 +
.../actual.js | 31 ++
.../expected.js | 31 ++
.../fixtures/types/ForInStatement/actual.js | 5 +
.../fixtures/types/ForInStatement/expected.js | 5 +
.../fixtures/types/ForOfStatement/actual.js | 5 +
.../fixtures/types/ForOfStatement/expected.js | 5 +
.../fixtures/types/ForStatement/actual.js | 3 +
.../fixtures/types/ForStatement/expected.js | 3 +
.../actual.js | 23 ++
.../expected.js | 23 ++
.../test/fixtures/types/Identifier/actual.js | 2 +
.../fixtures/types/Identifier/expected.js | 2 +
.../test/fixtures/types/IfStatement/actual.js | 25 ++
.../fixtures/types/IfStatement/expected.js | 25 ++
.../actual.js | 9 +
.../expected.js | 9 +
.../fixtures/types/LabeledStatement/actual.js | 1 +
.../types/LabeledStatement/expected.js | 1 +
.../test/fixtures/types/Literal/actual.js | 12 +
.../test/fixtures/types/Literal/expected.js | 12 +
.../fixtures/types/MemberExpression/actual.js | 11 +
.../types/MemberExpression/expected.js | 11 +
.../fixtures/types/NewExpression/actual.js | 3 +
.../fixtures/types/NewExpression/expected.js | 3 +
.../actual.js | 20 ++
.../expected.js | 20 ++
.../fixtures/types/ReturnStatement/actual.js | 7 +
.../types/ReturnStatement/expected.js | 7 +
.../types/SequenceExpression/actual.js | 4 +
.../types/SequenceExpression/expected.js | 3 +
.../SpreadElement-SpreadProperty/actual.js | 3 +
.../SpreadElement-SpreadProperty/expected.js | 3 +
.../SwitchStatement-SwitchCase/actual.js | 39 +++
.../SwitchStatement-SwitchCase/expected.js | 42 +++
.../actual.js | 12 +
.../expected.js | 12 +
.../fixtures/types/ThisExpression/actual.js | 5 +
.../fixtures/types/ThisExpression/expected.js | 5 +
.../fixtures/types/ThrowStatement/actual.js | 3 +
.../fixtures/types/ThrowStatement/expected.js | 3 +
.../types/TryStatement-CatchClause/actual.js | 25 ++
.../TryStatement-CatchClause/expected.js | 25 ++
.../fixtures/types/UnaryExpression/actual.js | 5 +
.../types/UnaryExpression/expected.js | 5 +
.../fixtures/types/UpdateExpression/actual.js | 3 +
.../types/UpdateExpression/expected.js | 3 +
.../actual.js | 13 +
.../expected.js | 18 ++
.../fixtures/types/WhileStatement/actual.js | 5 +
.../fixtures/types/WhileStatement/expected.js | 5 +
.../fixtures/types/WithStatement/actual.js | 5 +
.../fixtures/types/WithStatement/expected.js | 5 +
.../fixtures/types/XJSAttribute/actual.js | 7 +
.../fixtures/types/XJSAttribute/expected.js | 7 +
.../actual.js | 5 +
.../expected.js | 5 +
.../types/XJSEmptyExpression/actual.js | 1 +
.../types/XJSEmptyExpression/expected.js | 1 +
.../types/XJSExpressionContainer/actual.js | 1 +
.../types/XJSExpressionContainer/expected.js | 1 +
.../types/XJSMemberExpression/actual.js | 1 +
.../types/XJSMemberExpression/expected.js | 1 +
.../types/XJSNamespacedName/actual.js | 1 +
.../types/XJSNamespacedName/expected.js | 1 +
.../types/XJSSpreadAttribute/actual.js | 1 +
.../types/XJSSpreadAttribute/expected.js | 1 +
.../fixtures/types/YieldExpression/actual.js | 7 +
.../types/YieldExpression/expected.js | 7 +
packages/babel-generator/test/index.js | 49 +++
268 files changed, 3061 insertions(+), 682 deletions(-)
delete mode 100644 packages/babel-generator/src/generators/comprehensions.js
delete mode 100644 packages/babel-generator/src/node/printer.js
create mode 100644 packages/babel-generator/src/printer.js
create mode 100644 packages/babel-generator/test/fixtures/auto-indentation/hard-tab/actual.js
create mode 100644 packages/babel-generator/test/fixtures/auto-indentation/hard-tab/expected.js
create mode 100644 packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/actual.js
create mode 100644 packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/expected.js
create mode 100644 packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/actual.js
create mode 100644 packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/expected.js
create mode 100644 packages/babel-generator/test/fixtures/auto-string/double/actual.js
create mode 100644 packages/babel-generator/test/fixtures/auto-string/double/expected.js
create mode 100644 packages/babel-generator/test/fixtures/auto-string/single/actual.js
create mode 100644 packages/babel-generator/test/fixtures/auto-string/single/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/2-space-multi-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/2-space-multi-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/options.json
create mode 100644 packages/babel-generator/test/fixtures/comments/block-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/block-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-only-with-space/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-only-with-space/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-only/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-only/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/options.json
create mode 100644 packages/babel-generator/test/fixtures/comments/computed-property-comments-2/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/computed-property-comments-2/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/computed-property-comments/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/computed-property-comments/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/do-while-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/do-while-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/empty-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/empty-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/empty/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/empty/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/function-block-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/function-block-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/if-block-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/if-block-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/if-empty-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/if-empty-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/if-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/if-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/object_comments/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/object_comments/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/return-no-argument/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/return-no-argument/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-multi-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-multi-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-statement-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/simple-statement-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/try-block-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/try-block-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/compact/options.json
create mode 100644 packages/babel-generator/test/fixtures/compact/single-line-comment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/compact/single-line-comment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/floating-point/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/floating-point/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/for-in-no-in/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/for-in-no-in/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/new-precedence/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/new-precedence/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/options.json
create mode 100644 packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/options.json
create mode 100644 packages/babel-generator/test/fixtures/edgecase/unary-op/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/unary-op/expected.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/variable-declaration/actual.js
create mode 100644 packages/babel-generator/test/fixtures/edgecase/variable-declaration/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/array-types/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/array-types/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/boolean-literal-types/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/boolean-literal-types/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/call-properties/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/call-properties/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/declare-module/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/declare-module/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/declare-statements/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/declare-statements/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/number-literal-types/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/number-literal-types/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/qualified-generic-type/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/qualified-generic-type/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/string-literal-types/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/string-literal-types/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/tuples/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/tuples/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/type-alias/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/type-alias/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/type-annotations/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/type-annotations/expected.js
create mode 100644 packages/babel-generator/test/fixtures/flow/typecasts/actual.js
create mode 100644 packages/babel-generator/test/fixtures/flow/typecasts/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/exports/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/exports/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/imports/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/imports/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/templates/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/actual.js
create mode 100644 packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js
create mode 100644 packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/actual.js
create mode 100644 packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/expected.js
create mode 100644 packages/babel-generator/test/fixtures/parentheses/terminator-break/actual.js
create mode 100644 packages/babel-generator/test/fixtures/parentheses/terminator-break/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/BindExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/BindExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/BlockStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/BlockStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/BreakStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/BreakStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/CallExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/CallExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ClassDeclaration/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ClassDeclaration/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ClassExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ClassExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ConditionalExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ConditionalExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ContinueStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ContinueStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/DebuggerStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/DebuggerStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/Decorator/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/Decorator/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/DoWhileStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/DoWhileStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/EmptyStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/EmptyStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ForInStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ForInStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ForOfStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ForOfStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ForStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ForStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/Identifier/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/Identifier/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/IfStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/IfStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/LabeledStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/LabeledStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/Literal/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/Literal/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/MemberExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/MemberExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/NewExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/NewExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/SequenceExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/SequenceExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ThisExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ThisExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/UnaryExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/UnaryExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/UpdateExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/UpdateExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/WhileStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/WhileStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/WithStatement/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/WithStatement/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSAttribute/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSAttribute/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSEmptyExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSEmptyExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSExpressionContainer/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSExpressionContainer/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSMemberExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSMemberExpression/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSNamespacedName/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSNamespacedName/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/expected.js
create mode 100644 packages/babel-generator/test/fixtures/types/YieldExpression/actual.js
create mode 100644 packages/babel-generator/test/fixtures/types/YieldExpression/expected.js
create mode 100644 packages/babel-generator/test/index.js
diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json
index b74448c7f2..fdafee3b9d 100644
--- a/packages/babel-generator/package.json
+++ b/packages/babel-generator/package.json
@@ -9,6 +9,7 @@
"main": "lib/index.js",
"dependencies": {
"babel-messages": "^5.8.22",
+ "babel-runtime": "^5.8.20",
"babel-types": "^5.8.22",
"detect-indent": "^3.0.1",
"is-integer": "^1.0.4",
@@ -16,5 +17,8 @@
"repeating": "^1.1.3",
"source-map": "^0.4.4",
"trim-right": "^1.0.1"
+ },
+ "devDependencies": {
+ "babel-helper-fixtures": "^1.0.0"
}
}
diff --git a/packages/babel-generator/src/buffer.js b/packages/babel-generator/src/buffer.js
index abd69f8006..7d521f9ef1 100644
--- a/packages/babel-generator/src/buffer.js
+++ b/packages/babel-generator/src/buffer.js
@@ -23,6 +23,19 @@ export default class Buffer {
_indent: number;
format: Object;
+ /**
+ * Description
+ */
+
+ catchUp(node) {
+ // catch up to this nodes newline if we're behind
+ if (node.loc && this.format.retainLines && this.buf) {
+ while (this.position.line < node.loc.start.line) {
+ this._push("\n");
+ }
+ }
+ }
+
/**
* Get the current trimmed buffer.
*/
diff --git a/packages/babel-generator/src/generators/base.js b/packages/babel-generator/src/generators/base.js
index 67fe2f580e..f1ee541a26 100644
--- a/packages/babel-generator/src/generators/base.js
+++ b/packages/babel-generator/src/generators/base.js
@@ -1,26 +1,36 @@
/* @flow */
-import type NodePrinter from "../node/printer";
-
-export function File(node: Object, print: NodePrinter) {
- print.plain(node.program);
+export function File(node: Object) {
+ this.print(node.program, node);
}
-export function Program(node: Object, print: NodePrinter) {
- print.sequence(node.body);
+export function Program(node: Object) {
+ this.printInnerComments(node, false);
+ this.printSequence(node.directives, node);
+ this.printSequence(node.body, node);
}
-export function BlockStatement(node: Object, print: NodePrinter) {
+export function BlockStatement(node: Object) {
this.push("{");
+ this.printInnerComments(node);
if (node.body.length) {
this.newline();
- print.sequence(node.body, { indent: true });
+ this.printSequence(node.directives, node, { indent: true });
+ this.printSequence(node.body, node, { indent: true });
if (!this.format.retainLines) this.removeLast("\n");
this.rightBrace();
} else {
- print.printInnerComments();
this.push("}");
}
}
export function Noop() {}
+
+export function Directive(node: Object) {
+ this.print(node.value, node);
+ this.semicolon();
+}
+
+export function DirectiveLiteral(node: Object) {
+ this.push(this._stringLiteral(node.value));
+}
diff --git a/packages/babel-generator/src/generators/classes.js b/packages/babel-generator/src/generators/classes.js
index 6222fa7924..f692bc10a4 100644
--- a/packages/babel-generator/src/generators/classes.js
+++ b/packages/babel-generator/src/generators/classes.js
@@ -1,72 +1,70 @@
/* @flow */
-import type NodePrinter from "../node/printer";
-
-export function ClassDeclaration(node: Object, print: NodePrinter) {
- print.list(node.decorators, { separator: "" });
+export function ClassDeclaration(node: Object) {
+ this.printJoin(node.decorators, node, { separator: "" });
this.push("class");
if (node.id) {
this.push(" ");
- print.plain(node.id);
+ this.print(node.id, node);
}
- print.plain(node.typeParameters);
+ this.print(node.typeParameters, node);
if (node.superClass) {
this.push(" extends ");
- print.plain(node.superClass);
- print.plain(node.superTypeParameters);
+ this.print(node.superClass, node);
+ this.print(node.superTypeParameters, node);
}
if (node.implements) {
this.push(" implements ");
- print.join(node.implements, { separator: ", " });
+ this.printJoin(node.implements, node, { separator: ", " });
}
this.space();
- print.plain(node.body);
+ this.print(node.body, node);
}
export { ClassDeclaration as ClassExpression };
-export function ClassBody(node: Object, print: NodePrinter) {
+export function ClassBody(node: Object) {
this.push("{");
+ this.printInnerComments(node);
if (node.body.length === 0) {
- print.printInnerComments();
this.push("}");
} else {
this.newline();
this.indent();
- print.sequence(node.body);
+ this.printSequence(node.body, node);
this.dedent();
this.rightBrace();
}
}
-export function ClassProperty(node: Object, print: NodePrinter) {
- print.list(node.decorators, { separator: "" });
+export function ClassProperty(node: Object) {
+ this.printJoin(node.decorators, node, { separator: "" });
if (node.static) this.push("static ");
- print.plain(node.key);
- print.plain(node.typeAnnotation);
+ this.print(node.key, node);
+ this.print(node.typeAnnotation, node);
if (node.value) {
this.space();
this.push("=");
this.space();
- print.plain(node.value);
+ this.print(node.value, node);
}
this.semicolon();
}
-export function MethodDefinition(node: Object, print: NodePrinter) {
- print.list(node.decorators, { separator: "" });
+export function MethodDefinition(node: Object) {
+ this.printJoin(node.decorators, node, { separator: "" });
if (node.static) {
this.push("static ");
}
- this._method(node, print);
+ this._method(node);
}
diff --git a/packages/babel-generator/src/generators/comprehensions.js b/packages/babel-generator/src/generators/comprehensions.js
deleted file mode 100644
index 4128805dd4..0000000000
--- a/packages/babel-generator/src/generators/comprehensions.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/* @flow */
-
-import type NodePrinter from "../node/printer";
-
-export function ComprehensionBlock(node: Object, print: NodePrinter) {
- this.keyword("for");
- this.push("(");
- print.plain(node.left);
- this.push(" of ");
- print.plain(node.right);
- this.push(")");
-}
-
-export function ComprehensionExpression(node: Object, print: NodePrinter) {
- this.push(node.generator ? "(" : "[");
-
- print.join(node.blocks, { separator: " " });
- this.space();
-
- if (node.filter) {
- this.keyword("if");
- this.push("(");
- print.plain(node.filter);
- this.push(")");
- this.space();
- }
-
- print.plain(node.body);
-
- this.push(node.generator ? ")" : "]");
-}
diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js
index 2df40bc43d..ea51bacc65 100644
--- a/packages/babel-generator/src/generators/expressions.js
+++ b/packages/babel-generator/src/generators/expressions.js
@@ -1,13 +1,12 @@
/* @flow */
-import type NodePrinter from "../node/printer";
import isInteger from "is-integer";
import isNumber from "lodash/lang/isNumber";
import * as t from "babel-types";
const SCIENTIFIC_NOTATION = /e/i;
-export function UnaryExpression(node: Object, print: NodePrinter) {
+export function UnaryExpression(node: Object) {
let needsSpace = /[a-z]$/.test(node.operator);
let arg = node.argument;
@@ -21,53 +20,53 @@ export function UnaryExpression(node: Object, print: NodePrinter) {
this.push(node.operator);
if (needsSpace) this.push(" ");
- print.plain(node.argument);
+ this.print(node.argument, node);
}
-export function DoExpression(node: Object, print: NodePrinter) {
+export function DoExpression(node: Object) {
this.push("do");
this.space();
- print.plain(node.body);
+ this.print(node.body, node);
}
-export function ParenthesizedExpression(node: Object, print: NodePrinter) {
+export function ParenthesizedExpression(node: Object) {
this.push("(");
- print.plain(node.expression);
+ this.print(node.expression, node);
this.push(")");
}
-export function UpdateExpression(node: Object, print: NodePrinter) {
+export function UpdateExpression(node: Object) {
if (node.prefix) {
this.push(node.operator);
- print.plain(node.argument);
+ this.print(node.argument, node);
} else {
- print.plain(node.argument);
+ this.print(node.argument, node);
this.push(node.operator);
}
}
-export function ConditionalExpression(node: Object, print: NodePrinter) {
- print.plain(node.test);
+export function ConditionalExpression(node: Object) {
+ this.print(node.test, node);
this.space();
this.push("?");
this.space();
- print.plain(node.consequent);
+ this.print(node.consequent, node);
this.space();
this.push(":");
this.space();
- print.plain(node.alternate);
+ this.print(node.alternate, node);
}
-export function NewExpression(node: Object, print: NodePrinter) {
+export function NewExpression(node: Object) {
this.push("new ");
- print.plain(node.callee);
+ this.print(node.callee, node);
this.push("(");
- print.list(node.arguments);
+ this.printList(node.arguments, node);
this.push(")");
}
-export function SequenceExpression(node: Object, print: NodePrinter) {
- print.list(node.expressions);
+export function SequenceExpression(node: Object) {
+ this.printList(node.expressions, node);
}
export function ThisExpression() {
@@ -78,14 +77,14 @@ export function Super() {
this.push("super");
}
-export function Decorator(node: Object, print: NodePrinter) {
+export function Decorator(node: Object) {
this.push("@");
- print.plain(node.expression);
+ this.print(node.expression, node);
this.newline();
}
-export function CallExpression(node: Object, print: NodePrinter) {
- print.plain(node.callee);
+export function CallExpression(node: Object) {
+ this.print(node.callee, node);
this.push("(");
@@ -98,7 +97,7 @@ export function CallExpression(node: Object, print: NodePrinter) {
this.indent();
}
- print.list(node.arguments, { separator });
+ this.printList(node.arguments, node, { separator });
if (isPrettyCall) {
this.newline();
@@ -109,7 +108,7 @@ export function CallExpression(node: Object, print: NodePrinter) {
}
function buildYieldAwait(keyword) {
- return function (node: Object, print: NodePrinter) {
+ return function (node: Object) {
this.push(keyword);
if (node.delegate || node.all) {
@@ -119,7 +118,7 @@ function buildYieldAwait(keyword) {
if (node.argument) {
this.push(" ");
let terminatorState = this.startTerminatorless();
- print.plain(node.argument);
+ this.print(node.argument, node);
this.endTerminatorless(terminatorState);
}
};
@@ -132,19 +131,19 @@ export function EmptyStatement() {
this.semicolon();
}
-export function ExpressionStatement(node: Object, print: NodePrinter) {
- print.plain(node.expression);
+export function ExpressionStatement(node: Object) {
+ this.print(node.expression, node);
this.semicolon();
}
-export function AssignmentPattern(node: Object, print: NodePrinter) {
- print.plain(node.left);
+export function AssignmentPattern(node: Object) {
+ this.print(node.left, node);
this.push(" = ");
- print.plain(node.right);
+ this.print(node.right, node);
}
-export function AssignmentExpression(node: Object, print: NodePrinter) {
- print.plain(node.left);
+export function AssignmentExpression(node: Object) {
+ this.print(node.left, node);
let spaces = !this.format.compact || node.operator === "in" || node.operator === "instanceof";
spaces = true; // todo: https://github.com/babel/babel/issues/1835
@@ -162,13 +161,13 @@ export function AssignmentExpression(node: Object, print: NodePrinter) {
if (spaces) this.push(" ");
- print.plain(node.right);
+ this.print(node.right, node);
}
-export function BindExpression(node: Object, print: NodePrinter) {
- print.plain(node.object);
+export function BindExpression(node: Object) {
+ this.print(node.object, node);
this.push("::");
- print.plain(node.callee);
+ this.print(node.callee, node);
}
export {
@@ -176,9 +175,8 @@ export {
AssignmentExpression as LogicalExpression
};
-export function MemberExpression(node: Object, print: NodePrinter) {
- let obj = node.object;
- print.plain(obj);
+export function MemberExpression(node: Object) {
+ this.print(node.object, node);
if (!node.computed && t.isMemberExpression(node.property)) {
throw new TypeError("Got a MemberExpression for MemberExpression property");
@@ -191,7 +189,7 @@ export function MemberExpression(node: Object, print: NodePrinter) {
if (computed) {
this.push("[");
- print.plain(node.property);
+ this.print(node.property, node);
this.push("]");
} else {
if (t.isLiteral(node.object)) {
@@ -202,12 +200,12 @@ export function MemberExpression(node: Object, print: NodePrinter) {
}
this.push(".");
- print.plain(node.property);
+ this.print(node.property, node);
}
}
-export function MetaProperty(node: Object, print: NodePrinter) {
- print.plain(node.meta);
+export function MetaProperty(node: Object) {
+ this.print(node.meta, node);
this.push(".");
- print.plain(node.property);
+ this.print(node.property, node);
}
diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js
index 190d6887b7..a487c3a4e0 100644
--- a/packages/babel-generator/src/generators/flow.js
+++ b/packages/babel-generator/src/generators/flow.js
@@ -1,14 +1,13 @@
/* @flow */
-import type NodePrinter from "../node/printer";
import * as t from "babel-types";
export function AnyTypeAnnotation() {
this.push("any");
}
-export function ArrayTypeAnnotation(node: Object, print: NodePrinter) {
- print.plain(node.elementType);
+export function ArrayTypeAnnotation(node: Object) {
+ this.print(node.elementType, node);
this.push("[");
this.push("]");
}
@@ -21,36 +20,36 @@ export function BooleanLiteralTypeAnnotation(node: Object) {
this.push(node.value ? "true" : "false");
}
-export function DeclareClass(node: Object, print: NodePrinter) {
+export function DeclareClass(node: Object) {
this.push("declare class ");
- this._interfaceish(node, print);
+ this._interfaceish(node);
}
-export function DeclareFunction(node: Object, print: NodePrinter) {
+export function DeclareFunction(node: Object) {
this.push("declare function ");
- print.plain(node.id);
- print.plain(node.id.typeAnnotation.typeAnnotation);
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation.typeAnnotation, node);
this.semicolon();
}
-export function DeclareModule(node: Object, print: NodePrinter) {
+export function DeclareModule(node: Object) {
this.push("declare module ");
- print.plain(node.id);
+ this.print(node.id, node);
this.space();
- print.plain(node.body);
+ this.print(node.body, node);
}
-export function DeclareVariable(node: Object, print: NodePrinter) {
- this.push("declare let ");
- print.plain(node.id);
- print.plain(node.id.typeAnnotation);
+export function DeclareVariable(node: Object) {
+ this.push("declare var ");
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation, node);
this.semicolon();
}
-export function FunctionTypeAnnotation(node: Object, print: NodePrinter, parent: Object) {
- print.plain(node.typeParameters);
+export function FunctionTypeAnnotation(node: Object, parent: Object) {
+ this.print(node.typeParameters, node);
this.push("(");
- print.list(node.params);
+ this.printList(node.params, node);
if (node.rest) {
if (node.params.length) {
@@ -58,7 +57,7 @@ export function FunctionTypeAnnotation(node: Object, print: NodePrinter, parent:
this.space();
}
this.push("...");
- print.plain(node.rest);
+ this.print(node.rest, node);
}
this.push(")");
@@ -72,51 +71,51 @@ export function FunctionTypeAnnotation(node: Object, print: NodePrinter, parent:
}
this.space();
- print.plain(node.returnType);
+ this.print(node.returnType, node);
}
-export function FunctionTypeParam(node: Object, print: NodePrinter) {
- print.plain(node.name);
+export function FunctionTypeParam(node: Object) {
+ this.print(node.name, node);
if (node.optional) this.push("?");
this.push(":");
this.space();
- print.plain(node.typeAnnotation);
+ this.print(node.typeAnnotation, node);
}
-export function InterfaceExtends(node: Object, print: NodePrinter) {
- print.plain(node.id);
- print.plain(node.typeParameters);
+export function InterfaceExtends(node: Object) {
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
}
export { InterfaceExtends as ClassImplements, InterfaceExtends as GenericTypeAnnotation };
-export function _interfaceish(node: Object, print: NodePrinter) {
- print.plain(node.id);
- print.plain(node.typeParameters);
+export function _interfaceish(node: Object) {
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
if (node.extends.length) {
this.push(" extends ");
- print.join(node.extends, { separator: ", " });
+ this.printJoin(node.extends, node, { separator: ", " });
}
this.space();
- print.plain(node.body);
+ this.print(node.body, node);
}
-export function InterfaceDeclaration(node: Object, print: NodePrinter) {
+export function InterfaceDeclaration(node: Object) {
this.push("interface ");
- this._interfaceish(node, print);
+ this._interfaceish(node);
}
-export function IntersectionTypeAnnotation(node: Object, print: NodePrinter) {
- print.join(node.types, { separator: " & " });
+export function IntersectionTypeAnnotation(node: Object) {
+ this.printJoin(node.types, node, { separator: " & " });
}
export function MixedTypeAnnotation() {
this.push("mixed");
}
-export function NullableTypeAnnotation(node: Object, print: NodePrinter) {
+export function NullableTypeAnnotation(node: Object) {
this.push("?");
- print.plain(node.typeAnnotation);
+ this.print(node.typeAnnotation, node);
}
export { NumberLiteral as NumberLiteralTypeAnnotation } from "./types";
@@ -133,41 +132,41 @@ export function StringTypeAnnotation() {
this.push("string");
}
-export function TupleTypeAnnotation(node: Object, print: NodePrinter) {
+export function TupleTypeAnnotation(node: Object) {
this.push("[");
- print.join(node.types, { separator: ", " });
+ this.printJoin(node.types, node, { separator: ", " });
this.push("]");
}
-export function TypeofTypeAnnotation(node: Object, print: NodePrinter) {
+export function TypeofTypeAnnotation(node: Object) {
this.push("typeof ");
- print.plain(node.argument);
+ this.print(node.argument, node);
}
-export function TypeAlias(node: Object, print: NodePrinter) {
+export function TypeAlias(node: Object) {
this.push("type ");
- print.plain(node.id);
- print.plain(node.typeParameters);
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
this.space();
this.push("=");
this.space();
- print.plain(node.right);
+ this.print(node.right, node);
this.semicolon();
}
-export function TypeAnnotation(node: Object, print: NodePrinter) {
+export function TypeAnnotation(node: Object) {
this.push(":");
this.space();
if (node.optional) this.push("?");
- print.plain(node.typeAnnotation);
+ this.print(node.typeAnnotation, node);
}
-export function TypeParameterInstantiation(node: Object, print: NodePrinter) {
+export function TypeParameterInstantiation(node: Object) {
this.push("<");
- print.join(node.params, {
+ this.printJoin(node.params, node, {
separator: ", ",
- iterator(node: Object) {
- print.plain(node.typeAnnotation);
+ iterator: (node: Object) => {
+ this.print(node.typeAnnotation, node);
}
});
this.push(">");
@@ -175,14 +174,14 @@ export function TypeParameterInstantiation(node: Object, print: NodePrinter) {
export { TypeParameterInstantiation as TypeParameterDeclaration };
-export function ObjectTypeAnnotation(node: Object, print: NodePrinter) {
+export function ObjectTypeAnnotation(node: Object) {
this.push("{");
let props = node.properties.concat(node.callProperties, node.indexers);
if (props.length) {
this.space();
- print.list(props, {
+ this.printJoin(props, node, {
separator: false,
indent: true,
iterator: () => {
@@ -199,49 +198,49 @@ export function ObjectTypeAnnotation(node: Object, print: NodePrinter) {
this.push("}");
}
-export function ObjectTypeCallProperty(node: Object, print: NodePrinter) {
+export function ObjectTypeCallProperty(node: Object) {
if (node.static) this.push("static ");
- print.plain(node.value);
+ this.print(node.value, node);
}
-export function ObjectTypeIndexer(node: Object, print: NodePrinter) {
+export function ObjectTypeIndexer(node: Object) {
if (node.static) this.push("static ");
this.push("[");
- print.plain(node.id);
+ this.print(node.id, node);
this.push(":");
this.space();
- print.plain(node.key);
+ this.print(node.key, node);
this.push("]");
this.push(":");
this.space();
- print.plain(node.value);
+ this.print(node.value, node);
}
-export function ObjectTypeProperty(node: Object, print: NodePrinter) {
+export function ObjectTypeProperty(node: Object) {
if (node.static) this.push("static ");
- print.plain(node.key);
+ this.print(node.key, node);
if (node.optional) this.push("?");
if (!t.isFunctionTypeAnnotation(node.value)) {
this.push(":");
this.space();
}
- print.plain(node.value);
+ this.print(node.value, node);
}
-export function QualifiedTypeIdentifier(node: Object, print: NodePrinter) {
- print.plain(node.qualification);
+export function QualifiedTypeIdentifier(node: Object) {
+ this.print(node.qualification, node);
this.push(".");
- print.plain(node.id);
+ this.print(node.id, node);
}
-export function UnionTypeAnnotation(node: Object, print: NodePrinter) {
- print.join(node.types, { separator: " | " });
+export function UnionTypeAnnotation(node: Object) {
+ this.printJoin(node.types, node, { separator: " | " });
}
-export function TypeCastExpression(node: Object, print: NodePrinter) {
+export function TypeCastExpression(node: Object) {
this.push("(");
- print.plain(node.expression);
- print.plain(node.typeAnnotation);
+ this.print(node.expression, node);
+ this.print(node.typeAnnotation, node);
this.push(")");
}
diff --git a/packages/babel-generator/src/generators/jsx.js b/packages/babel-generator/src/generators/jsx.js
index 54b881ca46..310a26209f 100644
--- a/packages/babel-generator/src/generators/jsx.js
+++ b/packages/babel-generator/src/generators/jsx.js
@@ -1,12 +1,10 @@
/* @flow */
-import type NodePrinter from "../node/printer";
-
-export function JSXAttribute(node: Object, print: NodePrinter) {
- print.plain(node.name);
+export function JSXAttribute(node: Object) {
+ this.print(node.name, node);
if (node.value) {
this.push("=");
- print.plain(node.value);
+ this.print(node.value, node);
}
}
@@ -14,27 +12,27 @@ export function JSXIdentifier(node: Object) {
this.push(node.name);
}
-export function JSXNamespacedName(node: Object, print: NodePrinter) {
- print.plain(node.namespace);
+export function JSXNamespacedName(node: Object) {
+ this.print(node.namespace, node);
this.push(":");
- print.plain(node.name);
+ this.print(node.name, node);
}
-export function JSXMemberExpression(node: Object, print: NodePrinter) {
- print.plain(node.object);
+export function JSXMemberExpression(node: Object) {
+ this.print(node.object, node);
this.push(".");
- print.plain(node.property);
+ this.print(node.property, node);
}
-export function JSXSpreadAttribute(node: Object, print: NodePrinter) {
+export function JSXSpreadAttribute(node: Object) {
this.push("{...");
- print.plain(node.argument);
+ this.print(node.argument, node);
this.push("}");
}
-export function JSXExpressionContainer(node: Object, print: NodePrinter) {
+export function JSXExpressionContainer(node: Object) {
this.push("{");
- print.plain(node.expression);
+ this.print(node.expression, node);
this.push("}");
}
@@ -42,33 +40,33 @@ export function JSXText(node: Object) {
this.push(node.value, true);
}
-export function JSXElement(node: Object, print: NodePrinter) {
+export function JSXElement(node: Object) {
let open = node.openingElement;
- print.plain(open);
+ this.print(open, node);
if (open.selfClosing) return;
this.indent();
for (let child of (node.children: Array)) {
- print.plain(child);
+ this.print(child, node);
}
this.dedent();
- print.plain(node.closingElement);
+ this.print(node.closingElement, node);
}
-export function JSXOpeningElement(node: Object, print: NodePrinter) {
+export function JSXOpeningElement(node: Object) {
this.push("<");
- print.plain(node.name);
+ this.print(node.name, node);
if (node.attributes.length > 0) {
this.push(" ");
- print.join(node.attributes, { separator: " " });
+ this.printJoin(node.attributes, node, { separator: " " });
}
this.push(node.selfClosing ? " />" : ">");
}
-export function JSXClosingElement(node: Object, print: NodePrinter) {
+export function JSXClosingElement(node: Object) {
this.push("");
- print.plain(node.name);
+ this.print(node.name, node);
this.push(">");
}
diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js
index 65c23a6312..a78d7ce927 100644
--- a/packages/babel-generator/src/generators/methods.js
+++ b/packages/babel-generator/src/generators/methods.js
@@ -1,25 +1,24 @@
/* @flow */
-import type NodePrinter from "../node/printer";
import * as t from "babel-types";
-export function _params(node: Object, print: NodePrinter) {
- print.plain(node.typeParameters);
+export function _params(node: Object) {
+ this.print(node.typeParameters, node);
this.push("(");
- print.list(node.params, {
+ this.printList(node.params, node, {
iterator: (node) =>{
if (node.optional) this.push("?");
- print.plain(node.typeAnnotation);
+ this.print(node.typeAnnotation, node);
}
});
this.push(")");
if (node.returnType) {
- print.plain(node.returnType);
+ this.print(node.returnType, node);
}
}
-export function _method(node: Object, print: NodePrinter) {
+export function _method(node: Object) {
let value = node.value;
let kind = node.kind;
let key = node.key;
@@ -38,43 +37,43 @@ export function _method(node: Object, print: NodePrinter) {
if (node.computed) {
this.push("[");
- print.plain(key);
+ this.print(key, node);
this.push("]");
} else {
- print.plain(key);
+ this.print(key, node);
}
- this._params(value, print);
+ this._params(value);
this.space();
- print.plain(value.body);
+ this.print(value.body, value);
}
-export function FunctionExpression(node: Object, print: NodePrinter) {
+export function FunctionExpression(node: Object) {
if (node.async) this.push("async ");
this.push("function");
if (node.generator) this.push("*");
if (node.id) {
this.push(" ");
- print.plain(node.id);
+ this.print(node.id, node);
} else {
this.space();
}
- this._params(node, print);
+ this._params(node);
this.space();
- print.plain(node.body);
+ this.print(node.body, node);
}
export { FunctionExpression as FunctionDeclaration };
-export function ArrowFunctionExpression(node: Object, print: NodePrinter) {
+export function ArrowFunctionExpression(node: Object) {
if (node.async) this.push("async ");
if (node.params.length === 1 && t.isIdentifier(node.params[0])) {
- print.plain(node.params[0]);
+ this.print(node.params[0], node);
} else {
- this._params(node, print);
+ this._params(node);
}
this.push(" => ");
@@ -85,7 +84,7 @@ export function ArrowFunctionExpression(node: Object, print: NodePrinter) {
this.push("(");
}
- print.plain(node.body);
+ this.print(node.body, node);
if (bodyNeedsParens) {
this.push(")");
diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js
index 7cd2106d50..860b720c87 100644
--- a/packages/babel-generator/src/generators/modules.js
+++ b/packages/babel-generator/src/generators/modules.js
@@ -1,62 +1,61 @@
/* @flow */
-import type NodePrinter from "../node/printer";
import * as t from "babel-types";
-export function ImportSpecifier(node: Object, print: NodePrinter) {
- print.plain(node.imported);
+export function ImportSpecifier(node: Object) {
+ this.print(node.imported, node);
if (node.local && node.local.name !== node.imported.name) {
this.push(" as ");
- print.plain(node.local);
+ this.print(node.local, node);
}
}
-export function ImportDefaultSpecifier(node: Object, print: NodePrinter) {
- print.plain(node.local);
+export function ImportDefaultSpecifier(node: Object) {
+ this.print(node.local, node);
}
-export function ExportDefaultSpecifier(node: Object, print: NodePrinter) {
- print.plain(node.exported);
+export function ExportDefaultSpecifier(node: Object) {
+ this.print(node.exported, node);
}
-export function ExportSpecifier(node: Object, print: NodePrinter) {
- print.plain(node.local);
+export function ExportSpecifier(node: Object) {
+ this.print(node.local, node);
if (node.exported && node.local.name !== node.exported.name) {
this.push(" as ");
- print.plain(node.exported);
+ this.print(node.exported, node);
}
}
-export function ExportNamespaceSpecifier(node: Object, print: NodePrinter) {
+export function ExportNamespaceSpecifier(node: Object) {
this.push("* as ");
- print.plain(node.exported);
+ this.print(node.exported, node);
}
-export function ExportAllDeclaration(node: Object, print: NodePrinter) {
+export function ExportAllDeclaration(node: Object) {
this.push("export *");
if (node.exported) {
this.push(" as ");
- print.plain(node.exported);
+ this.print(node.exported, node);
}
this.push(" from ");
- print.plain(node.source);
+ this.print(node.source, node);
this.semicolon();
}
-export function ExportNamedDeclaration(node: Object, print: NodePrinter) {
+export function ExportNamedDeclaration() {
this.push("export ");
- ExportDeclaration.call(this, node, print);
+ ExportDeclaration.apply(this, arguments);
}
-export function ExportDefaultDeclaration(node: Object, print: NodePrinter) {
+export function ExportDefaultDeclaration() {
this.push("export default ");
- ExportDeclaration.call(this, node, print);
+ ExportDeclaration.apply(this, arguments);
}
-function ExportDeclaration(node: Object, print: NodePrinter) {
+function ExportDeclaration(node: Object) {
if (node.declaration) {
let declar = node.declaration;
- print.plain(declar);
+ this.print(declar, node);
if (t.isStatement(declar) || t.isFunction(declar) || t.isClass(declar)) return;
} else {
if (node.exportKind === "type") {
@@ -69,7 +68,7 @@ function ExportDeclaration(node: Object, print: NodePrinter) {
let hasSpecial = false;
if (t.isExportDefaultSpecifier(first) || t.isExportNamespaceSpecifier(first)) {
hasSpecial = true;
- print.plain(specifiers.shift());
+ this.print(specifiers.shift(), node);
if (specifiers.length) {
this.push(", ");
}
@@ -79,7 +78,7 @@ function ExportDeclaration(node: Object, print: NodePrinter) {
this.push("{");
if (specifiers.length) {
this.space();
- print.join(specifiers, { separator: ", " });
+ this.printJoin(specifiers, node, { separator: ", " });
this.space();
}
this.push("}");
@@ -87,14 +86,14 @@ function ExportDeclaration(node: Object, print: NodePrinter) {
if (node.source) {
this.push(" from ");
- print.plain(node.source);
+ this.print(node.source, node);
}
}
this.ensureSemicolon();
}
-export function ImportDeclaration(node: Object, print: NodePrinter) {
+export function ImportDeclaration(node: Object) {
this.push("import ");
if (node.importKind === "type" || node.importKind === "typeof") {
@@ -105,7 +104,7 @@ export function ImportDeclaration(node: Object, print: NodePrinter) {
if (specifiers && specifiers.length) {
let first = specifiers[0];
if (t.isImportDefaultSpecifier(first) || t.isImportNamespaceSpecifier(first)) {
- print.plain(specifiers.shift());
+ this.print(specifiers.shift(), node);
if (specifiers.length) {
this.push(", ");
}
@@ -114,7 +113,7 @@ export function ImportDeclaration(node: Object, print: NodePrinter) {
if (specifiers.length) {
this.push("{");
this.space();
- print.join(specifiers, { separator: ", " });
+ this.printJoin(specifiers, node, { separator: ", " });
this.space();
this.push("}");
}
@@ -122,11 +121,11 @@ export function ImportDeclaration(node: Object, print: NodePrinter) {
this.push(" from ");
}
- print.plain(node.source);
+ this.print(node.source, node);
this.semicolon();
}
-export function ImportNamespaceSpecifier(node: Object, print: NodePrinter) {
+export function ImportNamespaceSpecifier(node: Object) {
this.push("* as ");
- print.plain(node.local);
+ this.print(node.local, node);
}
diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js
index 75ec354998..508a00ab59 100644
--- a/packages/babel-generator/src/generators/statements.js
+++ b/packages/babel-generator/src/generators/statements.js
@@ -1,97 +1,96 @@
/* @flow */
-import type NodePrinter from "../node/printer";
import repeating from "repeating";
import * as t from "babel-types";
-export function WithStatement(node: Object, print: NodePrinter) {
+export function WithStatement(node: Object) {
this.keyword("with");
this.push("(");
- print.plain(node.object);
+ this.print(node.object, node);
this.push(")");
- print.block(node.body);
+ this.printBlock(node);
}
-export function IfStatement(node: Object, print: NodePrinter) {
+export function IfStatement(node: Object) {
this.keyword("if");
this.push("(");
- print.plain(node.test);
+ this.print(node.test, node);
this.push(")");
this.space();
- print.indentOnComments(node.consequent);
+ this.printAndIndentOnComments(node.consequent, node);
if (node.alternate) {
if (this.isLast("}")) this.space();
this.push("else ");
- print.indentOnComments(node.alternate);
+ this.printAndIndentOnComments(node.alternate, node);
}
}
-export function ForStatement(node: Object, print: NodePrinter) {
+export function ForStatement(node: Object) {
this.keyword("for");
this.push("(");
- print.plain(node.init);
+ this.print(node.init, node);
this.push(";");
if (node.test) {
this.space();
- print.plain(node.test);
+ this.print(node.test, node);
}
this.push(";");
if (node.update) {
this.space();
- print.plain(node.update);
+ this.print(node.update, node);
}
this.push(")");
- print.block(node.body);
+ this.printBlock(node);
}
-export function WhileStatement(node: Object, print: NodePrinter) {
+export function WhileStatement(node: Object) {
this.keyword("while");
this.push("(");
- print.plain(node.test);
+ this.print(node.test, node);
this.push(")");
- print.block(node.body);
+ this.printBlock(node);
}
let buildForXStatement = function (op) {
- return function (node: Object, print: NodePrinter) {
+ return function (node: Object) {
this.keyword("for");
this.push("(");
- print.plain(node.left);
+ this.print(node.left, node);
this.push(` ${op} `);
- print.plain(node.right);
+ this.print(node.right, node);
this.push(")");
- print.block(node.body);
+ this.printBlock(node);
};
};
export let ForInStatement = buildForXStatement("in");
export let ForOfStatement = buildForXStatement("of");
-export function DoWhileStatement(node: Object, print: NodePrinter) {
+export function DoWhileStatement(node: Object) {
this.push("do ");
- print.plain(node.body);
+ this.print(node.body, node);
this.space();
this.keyword("while");
this.push("(");
- print.plain(node.test);
+ this.print(node.test, node);
this.push(");");
}
function buildLabelStatement(prefix, key = "label") {
- return function (node: Object, print: NodePrinter) {
+ return function (node: Object) {
this.push(prefix);
let label = node[key];
if (label) {
this.push(" ");
let terminatorState = this.startTerminatorless();
- print.plain(label);
+ this.print(label, node);
this.endTerminatorless(terminatorState);
}
@@ -104,50 +103,50 @@ export let ReturnStatement = buildLabelStatement("return", "argument");
export let BreakStatement = buildLabelStatement("break");
export let ThrowStatement = buildLabelStatement("throw", "argument");
-export function LabeledStatement(node: Object, print: NodePrinter) {
- print.plain(node.label);
+export function LabeledStatement(node: Object) {
+ this.print(node.label, node);
this.push(": ");
- print.plain(node.body);
+ this.print(node.body, node);
}
-export function TryStatement(node: Object, print: NodePrinter) {
+export function TryStatement(node: Object) {
this.keyword("try");
- print.plain(node.block);
+ this.print(node.block, node);
this.space();
// Esprima bug puts the catch clause in a `handlers` array.
// see https://code.google.com/p/esprima/issues/detail?id=433
// We run into this from regenerator generated ast.
if (node.handlers) {
- print.plain(node.handlers[0]);
+ this.print(node.handlers[0], node);
} else {
- print.plain(node.handler);
+ this.print(node.handler, node);
}
if (node.finalizer) {
this.space();
this.push("finally ");
- print.plain(node.finalizer);
+ this.print(node.finalizer, node);
}
}
-export function CatchClause(node: Object, print: NodePrinter) {
+export function CatchClause(node: Object) {
this.keyword("catch");
this.push("(");
- print.plain(node.param);
+ this.print(node.param, node);
this.push(") ");
- print.plain(node.body);
+ this.print(node.body, node);
}
-export function SwitchStatement(node: Object, print: NodePrinter) {
+export function SwitchStatement(node: Object) {
this.keyword("switch");
this.push("(");
- print.plain(node.discriminant);
+ this.print(node.discriminant, node);
this.push(")");
this.space();
this.push("{");
- print.sequence(node.cases, {
+ this.printSequence(node.cases, node, {
indent: true,
addNewlines(leading, cas) {
if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
@@ -157,10 +156,10 @@ export function SwitchStatement(node: Object, print: NodePrinter) {
this.push("}");
}
-export function SwitchCase(node: Object, print: NodePrinter) {
+export function SwitchCase(node: Object) {
if (node.test) {
this.push("case ");
- print.plain(node.test);
+ this.print(node.test, node);
this.push(":");
} else {
this.push("default:");
@@ -168,7 +167,7 @@ export function SwitchCase(node: Object, print: NodePrinter) {
if (node.consequent.length) {
this.newline();
- print.sequence(node.consequent, { indent: true });
+ this.printSequence(node.consequent, node, { indent: true });
}
}
@@ -176,7 +175,7 @@ export function DebuggerStatement() {
this.push("debugger;");
}
-export function VariableDeclaration(node: Object, print: NodePrinter, parent: Object) {
+export function VariableDeclaration(node: Object, parent: Object) {
this.push(node.kind + " ");
let hasInits = false;
@@ -209,7 +208,7 @@ export function VariableDeclaration(node: Object, print: NodePrinter, parent: Ob
//
- print.list(node.declarations, { separator: sep });
+ this.printList(node.declarations, node, { separator: sep });
if (t.isFor(parent)) {
// don't give semicolons to these nodes since they'll be inserted in the parent generator
@@ -219,13 +218,13 @@ export function VariableDeclaration(node: Object, print: NodePrinter, parent: Ob
this.semicolon();
}
-export function VariableDeclarator(node: Object, print: NodePrinter) {
- print.plain(node.id);
- print.plain(node.id.typeAnnotation);
+export function VariableDeclarator(node: Object) {
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation, node);
if (node.init) {
this.space();
this.push("=");
this.space();
- print.plain(node.init);
+ this.print(node.init, node);
}
}
diff --git a/packages/babel-generator/src/generators/template-literals.js b/packages/babel-generator/src/generators/template-literals.js
index d10f0d461e..ed644eedb0 100644
--- a/packages/babel-generator/src/generators/template-literals.js
+++ b/packages/babel-generator/src/generators/template-literals.js
@@ -1,28 +1,25 @@
/* @flow */
-import type NodePrinter from "../node/printer";
-
-export function TaggedTemplateExpression(node: Object, print: NodePrinter) {
- print.plain(node.tag);
- print.plain(node.quasi);
+export function TaggedTemplateExpression(node: Object) {
+ this.print(node.tag, node);
+ this.print(node.quasi, node);
}
export function TemplateElement(node: Object) {
this._push(node.value.raw);
}
-export function TemplateLiteral(node: Object, print: NodePrinter) {
+export function TemplateLiteral(node: Object) {
this.push("`");
let quasis = node.quasis;
- let len = quasis.length;
- for (let i = 0; i < len; i++) {
- print.plain(quasis[i]);
+ for (let i = 0; i < quasis.length; i++) {
+ this.print(quasis[i], node);
- if (i + 1 < len) {
+ if (i + 1 < quasis.length) {
this.push("${ ");
- print.plain(node.expressions[i]);
+ this.print(node.expressions[i], node);
this.push(" }");
}
}
diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js
index 4310509baa..a4c6881e07 100644
--- a/packages/babel-generator/src/generators/types.js
+++ b/packages/babel-generator/src/generators/types.js
@@ -2,29 +2,32 @@
/* eslint quotes: 0 */
-import type NodePrinter from "../node/printer";
import * as t from "babel-types";
export function Identifier(node: Object) {
this.push(node.name);
}
-export function RestElement(node: Object, print: NodePrinter) {
+export function RestElement(node: Object) {
this.push("...");
- print.plain(node.argument);
+ this.print(node.argument, node);
}
-export { RestElement as SpreadElement, RestElement as SpreadProperty };
+export {
+ RestElement as SpreadElement,
+ RestElement as SpreadProperty,
+ RestElement as RestProperty,
+};
-export function ObjectExpression(node: Object, print: NodePrinter) {
+export function ObjectExpression(node: Object) {
let props = node.properties;
this.push("{");
- print.printInnerComments();
+ this.printInnerComments(node);
if (props.length) {
this.space();
- print.list(props, { indent: true });
+ this.printList(props, node, { indent: true });
this.space();
}
@@ -33,24 +36,24 @@ export function ObjectExpression(node: Object, print: NodePrinter) {
export { ObjectExpression as ObjectPattern };
-export function Property(node: Object, print: NodePrinter) {
- print.list(node.decorators, { separator: "" });
+export function Property(node: Object) {
+ this.printJoin(node.decorators, node, { separator: "" });
if (node.method || node.kind === "get" || node.kind === "set") {
- this._method(node, print);
+ this._method(node);
} else {
if (node.computed) {
this.push("[");
- print.plain(node.key);
+ this.print(node.key, node);
this.push("]");
} else {
// print `({ foo: foo = 5 } = {})` as `({ foo = 5 } = {});`
if (t.isAssignmentPattern(node.value) && t.isIdentifier(node.key) && node.key.name === node.value.left.name) {
- print.plain(node.value);
+ this.print(node.value, node);
return;
}
- print.plain(node.key);
+ this.print(node.key, node);
// shorthand!
if (node.shorthand &&
@@ -63,22 +66,22 @@ export function Property(node: Object, print: NodePrinter) {
this.push(":");
this.space();
- print.plain(node.value);
+ this.print(node.value, node);
}
}
-export function ArrayExpression(node: Object, print: NodePrinter) {
+export function ArrayExpression(node: Object) {
let elems = node.elements;
let len = elems.length;
this.push("[");
- print.printInnerComments();
+ this.printInnerComments(node);
for (let i = 0; i < elems.length; i++) {
let elem = elems[i];
if (elem) {
if (i > 0) this.space();
- print.plain(elem);
+ this.print(elem, node);
if (i < len - 1) this.push(",");
} else {
// If the array expression ends with a hole, that hole
diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js
index d6b14dbf0e..a9a9a1783f 100644
--- a/packages/babel-generator/src/index.js
+++ b/packages/babel-generator/src/index.js
@@ -2,36 +2,37 @@
import detectIndent from "detect-indent";
import Whitespace from "./whitespace";
-import NodePrinter from "./node/printer";
-import repeating from "repeating";
import SourceMap from "./source-map";
import Position from "./position";
import * as messages from "babel-messages";
-import Buffer from "./buffer";
-import extend from "lodash/object/extend";
-import each from "lodash/collection/each";
-import n from "./node";
-import * as t from "babel-types";
+import Printer from "./printer";
/**
* Babel's code generator, turns an ast into code, maintaining sourcemaps,
* user preferences, and valid output.
*/
-class CodeGenerator {
+export class CodeGenerator extends Printer {
constructor(ast, opts, code) {
opts = opts || {};
- this.comments = ast.comments || [];
- this.tokens = ast.tokens || [];
- this.format = CodeGenerator.normalizeOptions(code, opts, this.tokens);
+ let comments = ast.comments || [];
+ let tokens = ast.tokens || [];
+ let format = CodeGenerator.normalizeOptions(code, opts, tokens);
+
+ let position = new Position;
+
+ super(position, format);
+
+ this.comments = comments;
+ this.position = position;
+ this.tokens = tokens;
+ this.format = format;
this.opts = opts;
this.ast = ast;
- this.whitespace = new Whitespace(this.tokens);
- this.position = new Position;
- this.map = new SourceMap(this.position, opts, code);
- this.buffer = new Buffer(this.position, this.format);
+ this.whitespace = new Whitespace(tokens);
+ this.map = new SourceMap(position, opts, code);
}
format: {
@@ -51,7 +52,6 @@ class CodeGenerator {
whitespace: Whitespace;
position: Position;
map: SourceMap;
- buffer: Buffer;
comments: Array;
tokens: Array;
opts: Object;
@@ -143,272 +143,11 @@ class CodeGenerator {
return {
map: this.map.get(),
- code: this.buffer.get()
+ code: this.get()
};
}
-
- /**
- * Build NodePrinter.
- */
-
- buildPrint(parent) {
- return new NodePrinter(this, parent);
- }
-
- catchUp(node) {
- // catch up to this nodes newline if we're behind
- if (node.loc && this.format.retainLines && this.buffer.buf) {
- while (this.position.line < node.loc.start.line) {
- this._push("\n");
- }
- }
- }
-
- _printNewline(leading, node, parent, opts) {
- if (!opts.statement && !n.isUserWhitespacable(node, parent)) {
- return;
- }
-
- let lines = 0;
-
- if (node.start != null && !node._ignoreUserWhitespace) {
- // user node
- if (leading) {
- lines = this.whitespace.getNewlinesBefore(node);
- } else {
- lines = this.whitespace.getNewlinesAfter(node);
- }
- } else {
- // generated node
- if (!leading) lines++; // always include at least a single line after
- if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;
-
- let needs = n.needsWhitespaceAfter;
- if (leading) needs = n.needsWhitespaceBefore;
- if (needs(node, parent)) lines++;
-
- // generated nodes can't add starting file whitespace
- if (!this.buffer.buf) lines = 0;
- }
-
- this.newline(lines);
- }
-
- print(node, parent, opts = {}) {
- if (!node) return;
-
- if (parent && parent._compact) {
- node._compact = true;
- }
-
- let oldConcise = this.format.concise;
- if (node._compact) {
- this.format.concise = true;
- }
-
- if (!this[node.type]) {
- throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node && node.constructor.name)}`);
- }
-
- let needsParens = n.needsParens(node, parent);
- if (needsParens) this.push("(");
-
- this.printLeadingComments(node, parent);
-
- this.catchUp(node);
-
- this._printNewline(true, node, parent, opts);
-
- if (opts.before) opts.before();
- this.map.mark(node, "start");
-
- this[node.type](node, this.buildPrint(node), parent);
-
- if (needsParens) this.push(")");
-
- this.map.mark(node, "end");
- if (opts.after) opts.after();
-
- this.format.concise = oldConcise;
-
- this._printNewline(false, node, parent, opts);
-
- this.printTrailingComments(node, parent);
- }
-
- printJoin(print, nodes: ?Array, opts = {}) {
- if (!nodes || !nodes.length) return;
-
- let len = nodes.length;
- let node, i;
-
- if (opts.indent) this.indent();
-
- let printOpts = {
- statement: opts.statement,
- addNewlines: opts.addNewlines,
- after: () => {
- if (opts.iterator) {
- opts.iterator(node, i);
- }
-
- if (opts.separator && i < len - 1) {
- this.push(opts.separator);
- }
- }
- };
-
- for (i = 0; i < nodes.length; i++) {
- node = nodes[i];
- print.plain(node, printOpts);
- }
-
- if (opts.indent) this.dedent();
- }
-
- printAndIndentOnComments(print, node) {
- let indent = !!node.leadingComments;
- if (indent) this.indent();
- print.plain(node);
- if (indent) this.dedent();
- }
-
- printBlock(print, node) {
- if (t.isEmptyStatement(node)) {
- this.semicolon();
- } else {
- this.push(" ");
- print.plain(node);
- }
- }
-
- generateComment(comment) {
- let val = comment.value;
- if (comment.type === "CommentLine") {
- val = `//${val}`;
- } else {
- val = `/*${val}*/`;
- }
- return val;
- }
-
- printTrailingComments(node, parent) {
- this._printComments(this.getComments("trailingComments", node, parent));
- }
-
- printLeadingComments(node, parent) {
- this._printComments(this.getComments("leadingComments", node, parent));
- }
-
- getComments(key, node, parent) {
- if (t.isExpressionStatement(parent)) {
- return [];
- }
-
- let comments = [];
- let nodes: Array = [node];
-
- if (t.isExpressionStatement(node)) {
- nodes.push(node.argument);
- }
-
- for (let node of nodes) {
- comments = comments.concat(this._getComments(key, node));
- }
-
- return comments;
- }
-
- _getComments(key, node) {
- return (node && node[key]) || [];
- }
-
- shouldPrintComment(comment) {
- if (this.format.shouldPrintComment) {
- return this.format.shouldPrintComment(comment.value);
- } else {
- if (comment.value.indexOf("@license") >= 0 || comment.value.indexOf("@preserve") >= 0) {
- return true;
- } else {
- return this.format.comments;
- }
- }
- }
-
- _printComments(comments) {
- if (!comments || !comments.length) return;
-
- for (let comment of (comments: Array)) {
- if (!this.shouldPrintComment(comment)) continue;
- if (comment._displayed) continue;
- comment._displayed = true;
-
- this.catchUp(comment);
-
- // whitespace before
- this.newline(this.whitespace.getNewlinesBefore(comment));
-
- let column = this.position.column;
- let val = this.generateComment(comment);
-
- if (column && !this.isLast(["\n", " ", "[", "{"])) {
- this._push(" ");
- column++;
- }
-
- //
- if (comment.type === "CommentBlock" && this.format.indent.adjustMultilineComment) {
- let offset = comment.loc && comment.loc.start.column;
- if (offset) {
- let newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
- val = val.replace(newlineRegex, "\n");
- }
-
- let indent = Math.max(this.indentSize(), column);
- val = val.replace(/\n/g, `\n${repeating(" ", indent)}`);
- }
-
- if (column === 0) {
- val = this.getIndent() + val;
- }
-
- // force a newline for line comments when retainLines is set in case the next printed node
- // doesn't catch up
- if ((this.format.compact || this.format.retainLines) && comment.type === "CommentLine") {
- val += "\n";
- }
-
- //
- this._push(val);
-
- // whitespace after
- this.newline(this.whitespace.getNewlinesAfter(comment));
- }
- }
}
-each(Buffer.prototype, function (fn, key) {
- CodeGenerator.prototype[key] = function () {
- return fn.apply(this.buffer, arguments);
- };
-});
-
-each([
- require("./generators/template-literals"),
- require("./generators/comprehensions"),
- require("./generators/expressions"),
- require("./generators/statements"),
- require("./generators/classes"),
- require("./generators/methods"),
- require("./generators/modules"),
- require("./generators/types"),
- require("./generators/flow"),
- require("./generators/base"),
- require("./generators/jsx")
-], function (generator) {
- extend(CodeGenerator.prototype, generator);
-});
-
export default function (ast: Object, opts: Object, code: string): Object {
let gen = new CodeGenerator(ast, opts, code);
return gen.generate();
diff --git a/packages/babel-generator/src/node/printer.js b/packages/babel-generator/src/node/printer.js
deleted file mode 100644
index f672d167df..0000000000
--- a/packages/babel-generator/src/node/printer.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/* @flow */
-
-/**
- * Printer for nodes, needs a `generator` and a `parent`.
- */
-
-export default class NodePrinter {
- constructor(generator, parent) {
- this.generator = generator;
- this.parent = parent;
- }
-
- /**
- * Description
- */
-
- printInnerComments() {
- if (!this.parent.innerComments) return;
- let gen = this.generator;
- gen.indent();
- gen._printComments(this.parent.innerComments);
- gen.dedent();
- }
-
- /**
- * Print a plain node.
- */
-
- plain(node, opts) {
- return this.generator.print(node, this.parent, opts);
- }
-
- /**
- * Print a sequence of nodes as statements.
- */
-
- sequence(nodes, opts = {}) {
- opts.statement = true;
- return this.generator.printJoin(this, nodes, opts);
- }
-
- /**
- * Print a sequence of nodes as expressions.
- */
-
- join(nodes, opts) {
- return this.generator.printJoin(this, nodes, opts);
- }
-
- /**
- * Print a list of nodes, with a customizable separator (defaults to ",").
- */
-
- list(items, opts = {}) {
- if (opts.separator == null) {
- opts.separator = ",";
- if (!this.generator.format.compact) opts.separator += " ";
- }
-
- return this.join(items, opts);
- }
-
- /**
- * Print a block-like node.
- */
-
- block(node) {
- return this.generator.printBlock(this, node);
- }
-
- /**
- * Print node and indent comments.
- */
-
- indentOnComments(node) {
- return this.generator.printAndIndentOnComments(this, node);
- }
-}
diff --git a/packages/babel-generator/src/printer.js b/packages/babel-generator/src/printer.js
new file mode 100644
index 0000000000..949d1dc3eb
--- /dev/null
+++ b/packages/babel-generator/src/printer.js
@@ -0,0 +1,280 @@
+/* @flow */
+
+import repeating from "repeating";
+import Buffer from "./buffer";
+import n from "./node";
+import * as t from "babel-types";
+
+export default class Printer extends Buffer {
+ print(node, parent, opts = {}) {
+ if (!node) return;
+
+ if (parent && parent._compact) {
+ node._compact = true;
+ }
+
+ let oldConcise = this.format.concise;
+ if (node._compact) {
+ this.format.concise = true;
+ }
+
+ let printMethod = this[node.type];
+ if (!printMethod) {
+ throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node && node.constructor.name)}`);
+ }
+
+ let needsParens = n.needsParens(node, parent);
+ if (needsParens) this.push("(");
+
+ this.printLeadingComments(node, parent);
+
+ this.catchUp(node);
+
+ this._printNewline(true, node, parent, opts);
+
+ if (opts.before) opts.before();
+ this.map.mark(node, "start");
+
+ //
+ this._print(node, parent);
+
+ if (needsParens) this.push(")");
+
+ this.map.mark(node, "end");
+ if (opts.after) opts.after();
+
+ this.format.concise = oldConcise;
+
+ this._printNewline(false, node, parent, opts);
+
+ this.printTrailingComments(node, parent);
+ }
+
+ _print(node, parent) {
+ let extra = node.extra;
+ if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) {
+ this.push("");
+ this._push(extra.raw);
+ } else {
+ let printMethod = this[node.type];
+ printMethod.call(this, node, parent);
+ }
+ }
+
+ printJoin(nodes: ?Array, parent: Object, opts = {}) {
+ if (!nodes || !nodes.length) return;
+
+ let len = nodes.length;
+ let node, i;
+
+ if (opts.indent) this.indent();
+
+ let printOpts = {
+ statement: opts.statement,
+ addNewlines: opts.addNewlines,
+ after: () => {
+ if (opts.iterator) {
+ opts.iterator(node, i);
+ }
+
+ if (opts.separator && i < len - 1) {
+ this.push(opts.separator);
+ }
+ }
+ };
+
+ for (i = 0; i < nodes.length; i++) {
+ node = nodes[i];
+ this.print(node, parent, printOpts);
+ }
+
+ if (opts.indent) this.dedent();
+ }
+
+ printAndIndentOnComments(node, parent) {
+ let indent = !!node.leadingComments;
+ if (indent) this.indent();
+ this.print(node, parent);
+ if (indent) this.dedent();
+ }
+
+ printBlock(parent) {
+ let node = parent.body;
+ if (t.isEmptyStatement(node)) {
+ this.semicolon();
+ } else {
+ this.push(" ");
+ this.print(node, parent);
+ }
+ }
+
+ generateComment(comment) {
+ let val = comment.value;
+ if (comment.type === "CommentLine") {
+ val = `//${val}`;
+ } else {
+ val = `/*${val}*/`;
+ }
+ return val;
+ }
+
+ printTrailingComments(node, parent) {
+ this._printComments(this.getComments("trailingComments", node, parent));
+ }
+
+ printLeadingComments(node, parent) {
+ this._printComments(this.getComments("leadingComments", node, parent));
+ }
+
+ printInnerComments(node, indent = true) {
+ if (!node.innerComments) return;
+ if (indent) this.indent();
+ this._printComments(node.innerComments);
+ if (indent) this.dedent();
+ }
+
+ printSequence(nodes, parent, opts = {}) {
+ opts.statement = true;
+ return this.printJoin(nodes, parent, opts);
+ }
+
+ printList(items, parent, opts = {}) {
+ if (opts.separator == null) {
+ opts.separator = ",";
+ if (!this.format.compact) opts.separator += " ";
+ }
+
+ return this.printJoin(items, parent, opts);
+ }
+
+ _printNewline(leading, node, parent, opts) {
+ if (!opts.statement && !n.isUserWhitespacable(node, parent)) {
+ return;
+ }
+
+ let lines = 0;
+
+ if (node.start != null && !node._ignoreUserWhitespace) {
+ // user node
+ if (leading) {
+ lines = this.whitespace.getNewlinesBefore(node);
+ } else {
+ lines = this.whitespace.getNewlinesAfter(node);
+ }
+ } else {
+ // generated node
+ if (!leading) lines++; // always include at least a single line after
+ if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;
+
+ let needs = n.needsWhitespaceAfter;
+ if (leading) needs = n.needsWhitespaceBefore;
+ if (needs(node, parent)) lines++;
+
+ // generated nodes can't add starting file whitespace
+ if (!this.buf) lines = 0;
+ }
+
+ this.newline(lines);
+ }
+
+ getComments(key, node, parent) {
+ if (t.isExpressionStatement(parent)) {
+ return [];
+ }
+
+ let comments = [];
+ let nodes: Array = [node];
+
+ if (t.isExpressionStatement(node)) {
+ nodes.push(node.argument);
+ }
+
+ for (let node of nodes) {
+ comments = comments.concat(this._getComments(key, node));
+ }
+
+ return comments;
+ }
+
+ _getComments(key, node) {
+ return (node && node[key]) || [];
+ }
+
+ shouldPrintComment(comment) {
+ if (this.format.shouldPrintComment) {
+ return this.format.shouldPrintComment(comment.value);
+ } else {
+ if (comment.value.indexOf("@license") >= 0 || comment.value.indexOf("@preserve") >= 0) {
+ return true;
+ } else {
+ return this.format.comments;
+ }
+ }
+ }
+
+ _printComments(comments) {
+ if (!comments || !comments.length) return;
+
+ for (let comment of (comments: Array)) {
+ if (!this.shouldPrintComment(comment)) continue;
+ if (comment._displayed) continue;
+ comment._displayed = true;
+
+ this.catchUp(comment);
+
+ // whitespace before
+ this.newline(this.whitespace.getNewlinesBefore(comment));
+
+ let column = this.position.column;
+ let val = this.generateComment(comment);
+
+ if (column && !this.isLast(["\n", " ", "[", "{"])) {
+ this._push(" ");
+ column++;
+ }
+
+ //
+ if (comment.type === "CommentBlock" && this.format.indent.adjustMultilineComment) {
+ let offset = comment.loc && comment.loc.start.column;
+ if (offset) {
+ let newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
+ val = val.replace(newlineRegex, "\n");
+ }
+
+ let indent = Math.max(this.indentSize(), column);
+ val = val.replace(/\n/g, `\n${repeating(" ", indent)}`);
+ }
+
+ if (column === 0) {
+ val = this.getIndent() + val;
+ }
+
+ // force a newline for line comments when retainLines is set in case the next printed node
+ // doesn't catch up
+ if ((this.format.compact || this.format.retainLines) && comment.type === "CommentLine") {
+ val += "\n";
+ }
+
+ //
+ this._push(val);
+
+ // whitespace after
+ this.newline(this.whitespace.getNewlinesAfter(comment));
+ }
+ }
+}
+
+for (let generator of [
+ require("./generators/template-literals"),
+ require("./generators/expressions"),
+ require("./generators/statements"),
+ require("./generators/classes"),
+ require("./generators/methods"),
+ require("./generators/modules"),
+ require("./generators/types"),
+ require("./generators/flow"),
+ require("./generators/base"),
+ require("./generators/jsx")
+]) {
+ Object.assign(Printer.prototype, generator);
+}
diff --git a/packages/babel-generator/test/fixtures/auto-indentation/hard-tab/actual.js b/packages/babel-generator/test/fixtures/auto-indentation/hard-tab/actual.js
new file mode 100644
index 0000000000..2beaed5903
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-indentation/hard-tab/actual.js
@@ -0,0 +1,6 @@
+function foo() {
+ bar();
+ if (foo) {
+ bar();
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/auto-indentation/hard-tab/expected.js b/packages/babel-generator/test/fixtures/auto-indentation/hard-tab/expected.js
new file mode 100644
index 0000000000..2beaed5903
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-indentation/hard-tab/expected.js
@@ -0,0 +1,6 @@
+function foo() {
+ bar();
+ if (foo) {
+ bar();
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/actual.js b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/actual.js
new file mode 100644
index 0000000000..017db5a0f8
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/actual.js
@@ -0,0 +1,6 @@
+function foo() {
+ bar();
+ if (foo) {
+ bar();
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/expected.js b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/expected.js
new file mode 100644
index 0000000000..017db5a0f8
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-2/expected.js
@@ -0,0 +1,6 @@
+function foo() {
+ bar();
+ if (foo) {
+ bar();
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/actual.js b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/actual.js
new file mode 100644
index 0000000000..9f080a2650
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/actual.js
@@ -0,0 +1,6 @@
+function foo() {
+ bar();
+ if (foo) {
+ bar();
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/expected.js b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/expected.js
new file mode 100644
index 0000000000..9f080a2650
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-indentation/soft-tab-4/expected.js
@@ -0,0 +1,6 @@
+function foo() {
+ bar();
+ if (foo) {
+ bar();
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/auto-string/double/actual.js b/packages/babel-generator/test/fixtures/auto-string/double/actual.js
new file mode 100644
index 0000000000..5a8fcf7e29
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-string/double/actual.js
@@ -0,0 +1,4 @@
+foo("foo");
+foo("foo\nlol");
+foo("foo\n\"lol");
+foo("foo\n\"'lol");
diff --git a/packages/babel-generator/test/fixtures/auto-string/double/expected.js b/packages/babel-generator/test/fixtures/auto-string/double/expected.js
new file mode 100644
index 0000000000..5a8fcf7e29
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-string/double/expected.js
@@ -0,0 +1,4 @@
+foo("foo");
+foo("foo\nlol");
+foo("foo\n\"lol");
+foo("foo\n\"'lol");
diff --git a/packages/babel-generator/test/fixtures/auto-string/single/actual.js b/packages/babel-generator/test/fixtures/auto-string/single/actual.js
new file mode 100644
index 0000000000..1d8e7531c9
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-string/single/actual.js
@@ -0,0 +1,4 @@
+foo('foo');
+foo('foo\nlol');
+foo('foo\n"lol');
+foo('foo\n"\'lol');
diff --git a/packages/babel-generator/test/fixtures/auto-string/single/expected.js b/packages/babel-generator/test/fixtures/auto-string/single/expected.js
new file mode 100644
index 0000000000..1d8e7531c9
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/auto-string/single/expected.js
@@ -0,0 +1,4 @@
+foo('foo');
+foo('foo\nlol');
+foo('foo\n"lol');
+foo('foo\n"\'lol');
diff --git a/packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/actual.js b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/actual.js
new file mode 100644
index 0000000000..aa61a9c8fe
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/actual.js
@@ -0,0 +1,10 @@
+function test() {
+
+
+ /*
+ * this is comment
+ */
+
+
+ var i = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/expected.js b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/expected.js
new file mode 100644
index 0000000000..62aee76944
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment-with-space/expected.js
@@ -0,0 +1,8 @@
+function test() {
+
+ /*
+ * this is comment
+ */
+
+ var i = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/2-space-multi-comment/actual.js b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment/actual.js
new file mode 100644
index 0000000000..1cacd84afd
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment/actual.js
@@ -0,0 +1,6 @@
+function test() {
+ /*
+ * this is comment
+ */
+ var i = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/2-space-multi-comment/expected.js b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment/expected.js
new file mode 100644
index 0000000000..1cacd84afd
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/2-space-multi-comment/expected.js
@@ -0,0 +1,6 @@
+function test() {
+ /*
+ * this is comment
+ */
+ var i = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/actual.js b/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/actual.js
new file mode 100644
index 0000000000..5c85ac0e06
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/actual.js
@@ -0,0 +1,4 @@
+{
+ print("hello");
+ // comment
+}
diff --git a/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/expected.js b/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/expected.js
new file mode 100644
index 0000000000..5c85ac0e06
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/expected.js
@@ -0,0 +1,4 @@
+{
+ print("hello");
+ // comment
+}
diff --git a/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/options.json b/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/options.json
new file mode 100644
index 0000000000..97925bbcb6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/block-line-comment-with-retainlines-option/options.json
@@ -0,0 +1,3 @@
+{
+ "retainLines": true
+}
diff --git a/packages/babel-generator/test/fixtures/comments/block-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/block-line-comment/actual.js
new file mode 100644
index 0000000000..ddc9499b49
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/block-line-comment/actual.js
@@ -0,0 +1,4 @@
+// Leading to block
+{
+ print("hello");
+}
diff --git a/packages/babel-generator/test/fixtures/comments/block-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/block-line-comment/expected.js
new file mode 100644
index 0000000000..ddc9499b49
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/block-line-comment/expected.js
@@ -0,0 +1,4 @@
+// Leading to block
+{
+ print("hello");
+}
diff --git a/packages/babel-generator/test/fixtures/comments/comment-only-with-space/actual.js b/packages/babel-generator/test/fixtures/comments/comment-only-with-space/actual.js
new file mode 100644
index 0000000000..befcf38bfa
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-only-with-space/actual.js
@@ -0,0 +1,7 @@
+
+// from #23
+
+/**/
+
+/*
+*/
diff --git a/packages/babel-generator/test/fixtures/comments/comment-only-with-space/expected.js b/packages/babel-generator/test/fixtures/comments/comment-only-with-space/expected.js
new file mode 100644
index 0000000000..befcf38bfa
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-only-with-space/expected.js
@@ -0,0 +1,7 @@
+
+// from #23
+
+/**/
+
+/*
+*/
diff --git a/packages/babel-generator/test/fixtures/comments/comment-only/actual.js b/packages/babel-generator/test/fixtures/comments/comment-only/actual.js
new file mode 100644
index 0000000000..acfb1b9a7b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-only/actual.js
@@ -0,0 +1,4 @@
+// from #23
+/**/
+/*
+*/
diff --git a/packages/babel-generator/test/fixtures/comments/comment-only/expected.js b/packages/babel-generator/test/fixtures/comments/comment-only/expected.js
new file mode 100644
index 0000000000..acfb1b9a7b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-only/expected.js
@@ -0,0 +1,4 @@
+// from #23
+/**/
+/*
+*/
diff --git a/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/actual.js b/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/actual.js
new file mode 100644
index 0000000000..7f2608b525
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/actual.js
@@ -0,0 +1,5 @@
+// comment
+print("hello");
+
+// comment2
+print("hello2");
diff --git a/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/expected.js b/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/expected.js
new file mode 100644
index 0000000000..7f2608b525
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/expected.js
@@ -0,0 +1,5 @@
+// comment
+print("hello");
+
+// comment2
+print("hello2");
diff --git a/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/options.json b/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/options.json
new file mode 100644
index 0000000000..97925bbcb6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/comment-statement-with-retainlines-option/options.json
@@ -0,0 +1,3 @@
+{
+ "retainLines": true
+}
diff --git a/packages/babel-generator/test/fixtures/comments/computed-property-comments-2/actual.js b/packages/babel-generator/test/fixtures/comments/computed-property-comments-2/actual.js
new file mode 100644
index 0000000000..0c0c0272a5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/computed-property-comments-2/actual.js
@@ -0,0 +1,10 @@
+var test = {
+ /**
+ * Before bracket init
+ */
+ ["a"]:"1",
+ [/*
+ * Inside bracket init
+ */
+ "b"]:"2"
+ }, ok = 42;
diff --git a/packages/babel-generator/test/fixtures/comments/computed-property-comments-2/expected.js b/packages/babel-generator/test/fixtures/comments/computed-property-comments-2/expected.js
new file mode 100644
index 0000000000..1ad3a0f35f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/computed-property-comments-2/expected.js
@@ -0,0 +1,11 @@
+var test = {
+ /**
+ * Before bracket init
+ */
+ ["a"]: "1",
+ [/*
+ * Inside bracket init
+ */
+ "b"]: "2"
+},
+ ok = 42;
diff --git a/packages/babel-generator/test/fixtures/comments/computed-property-comments/actual.js b/packages/babel-generator/test/fixtures/comments/computed-property-comments/actual.js
new file mode 100644
index 0000000000..0c7aae7d18
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/computed-property-comments/actual.js
@@ -0,0 +1,28 @@
+var test = {
+ /**
+ * Before bracket init
+ */
+ ["a"]:"1",
+
+ [/*
+ * Inside bracket init
+ */
+ "b"]:"2",
+
+ ["c"
+ /*
+ * After bracket key
+ */]:"3",
+
+ // Before bracket, line comment
+ [
+ "d"]:"4",
+
+ [
+ // Inside bracket, line comment
+ "e"]:"5",
+
+ ["f"
+ // After bracket, line comment
+ ]:"6"
+};
diff --git a/packages/babel-generator/test/fixtures/comments/computed-property-comments/expected.js b/packages/babel-generator/test/fixtures/comments/computed-property-comments/expected.js
new file mode 100644
index 0000000000..c6ffd441f8
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/computed-property-comments/expected.js
@@ -0,0 +1,27 @@
+var test = {
+ /**
+ * Before bracket init
+ */
+ ["a"]: "1",
+
+ [/*
+ * Inside bracket init
+ */
+ "b"]: "2",
+
+ ["c"
+ /*
+ * After bracket key
+ */]: "3",
+
+ // Before bracket, line comment
+ ["d"]: "4",
+
+ [
+ // Inside bracket, line comment
+ "e"]: "5",
+
+ ["f"
+ // After bracket, line comment
+ ]: "6"
+};
diff --git a/packages/babel-generator/test/fixtures/comments/do-while-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/do-while-line-comment/actual.js
new file mode 100644
index 0000000000..760ae4934e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/do-while-line-comment/actual.js
@@ -0,0 +1,3 @@
+do {
+} // LINE
+while (true);
diff --git a/packages/babel-generator/test/fixtures/comments/do-while-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/do-while-line-comment/expected.js
new file mode 100644
index 0000000000..dbcec4152a
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/do-while-line-comment/expected.js
@@ -0,0 +1,2 @@
+do {} // LINE
+while (true);
diff --git a/packages/babel-generator/test/fixtures/comments/empty-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/empty-line-comment/actual.js
new file mode 100644
index 0000000000..ea9f2a7244
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/empty-line-comment/actual.js
@@ -0,0 +1,4 @@
+function test() {
+// Leading to EmptyStatement
+; // Trailing to EmptyStatement
+}
diff --git a/packages/babel-generator/test/fixtures/comments/empty-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/empty-line-comment/expected.js
new file mode 100644
index 0000000000..118cbc17a2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/empty-line-comment/expected.js
@@ -0,0 +1,4 @@
+function test() {
+ // Leading to EmptyStatement
+ ; // Trailing to EmptyStatement
+}
diff --git a/packages/babel-generator/test/fixtures/comments/empty/actual.js b/packages/babel-generator/test/fixtures/comments/empty/actual.js
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/empty/actual.js
@@ -0,0 +1 @@
+
diff --git a/packages/babel-generator/test/fixtures/comments/empty/expected.js b/packages/babel-generator/test/fixtures/comments/empty/expected.js
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/empty/expected.js
@@ -0,0 +1 @@
+
diff --git a/packages/babel-generator/test/fixtures/comments/function-block-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/function-block-line-comment/actual.js
new file mode 100644
index 0000000000..105b25217c
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/function-block-line-comment/actual.js
@@ -0,0 +1,6 @@
+!function(){}//
+,42;
+!{get 42(){}//
+,foo:42};
+(function(){}//
+)
diff --git a/packages/babel-generator/test/fixtures/comments/function-block-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/function-block-line-comment/expected.js
new file mode 100644
index 0000000000..d6802cba24
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/function-block-line-comment/expected.js
@@ -0,0 +1,6 @@
+!function () {}, //
+42;
+!{ get 42() {}, //
+ foo: 42 };
+(function () {});
+//
diff --git a/packages/babel-generator/test/fixtures/comments/if-block-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/if-block-line-comment/actual.js
new file mode 100644
index 0000000000..a17714740f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/if-block-line-comment/actual.js
@@ -0,0 +1,5 @@
+if (cond)
+ // Leading to if-block
+{
+ print("hello");
+} // Trailing to if-block
diff --git a/packages/babel-generator/test/fixtures/comments/if-block-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/if-block-line-comment/expected.js
new file mode 100644
index 0000000000..cc93b54438
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/if-block-line-comment/expected.js
@@ -0,0 +1,5 @@
+if (cond)
+ // Leading to if-block
+ {
+ print("hello");
+ } // Trailing to if-block
diff --git a/packages/babel-generator/test/fixtures/comments/if-empty-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/if-empty-line-comment/actual.js
new file mode 100644
index 0000000000..524b81aa7e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/if-empty-line-comment/actual.js
@@ -0,0 +1,3 @@
+if (cond)
+// Leading to EmptyStatement
+ ; // Trailing to EmptyStatement
diff --git a/packages/babel-generator/test/fixtures/comments/if-empty-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/if-empty-line-comment/expected.js
new file mode 100644
index 0000000000..bcb989f64f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/if-empty-line-comment/expected.js
@@ -0,0 +1,3 @@
+if (cond)
+ // Leading to EmptyStatement
+ ; // Trailing to EmptyStatement
diff --git a/packages/babel-generator/test/fixtures/comments/if-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/if-line-comment/actual.js
new file mode 100644
index 0000000000..c6ce430feb
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/if-line-comment/actual.js
@@ -0,0 +1,5 @@
+function test() {
+// Leading if statement
+ if (cond) {print("hello") }
+// Trailing if-block statement
+}
diff --git a/packages/babel-generator/test/fixtures/comments/if-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/if-line-comment/expected.js
new file mode 100644
index 0000000000..065ba70e81
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/if-line-comment/expected.js
@@ -0,0 +1,7 @@
+function test() {
+ // Leading if statement
+ if (cond) {
+ print("hello");
+ }
+ // Trailing if-block statement
+}
diff --git a/packages/babel-generator/test/fixtures/comments/object_comments/actual.js b/packages/babel-generator/test/fixtures/comments/object_comments/actual.js
new file mode 100644
index 0000000000..ec76f88897
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/object_comments/actual.js
@@ -0,0 +1,12 @@
+var test = {
+ /**
+ * Test 2
+ */
+ a:"1",
+ /*
+ * Test 1
+ */
+ b:"2",
+ // Test 3
+ c:"3"
+};
diff --git a/packages/babel-generator/test/fixtures/comments/object_comments/expected.js b/packages/babel-generator/test/fixtures/comments/object_comments/expected.js
new file mode 100644
index 0000000000..d835befd05
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/object_comments/expected.js
@@ -0,0 +1,12 @@
+var test = {
+ /**
+ * Test 2
+ */
+ a: "1",
+ /*
+ * Test 1
+ */
+ b: "2",
+ // Test 3
+ c: "3"
+};
diff --git a/packages/babel-generator/test/fixtures/comments/return-no-argument/actual.js b/packages/babel-generator/test/fixtures/comments/return-no-argument/actual.js
new file mode 100644
index 0000000000..a43f15d232
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/return-no-argument/actual.js
@@ -0,0 +1,3 @@
+(function() {
+ return; // comment
+}());
diff --git a/packages/babel-generator/test/fixtures/comments/return-no-argument/expected.js b/packages/babel-generator/test/fixtures/comments/return-no-argument/expected.js
new file mode 100644
index 0000000000..0dc96b3a8c
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/return-no-argument/expected.js
@@ -0,0 +1,3 @@
+(function () {
+ return; // comment
+})();
diff --git a/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/actual.js
new file mode 100644
index 0000000000..4b9cd6df29
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/actual.js
@@ -0,0 +1,49 @@
+// Copyright (C) 2012 Yusuke Suzuki
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+function test() {
+}
+
+
+
+// Copyright (C) 2012 Yusuke Suzuki
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/expected.js
new file mode 100644
index 0000000000..47869b2606
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-line-comment/expected.js
@@ -0,0 +1,45 @@
+// Copyright (C) 2012 Yusuke Suzuki
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+function test() {}
+
+// Copyright (C) 2012 Yusuke Suzuki
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/actual.js b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/actual.js
new file mode 100644
index 0000000000..1076529e0b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/actual.js
@@ -0,0 +1,51 @@
+/*
+ Copyright (C) 2012 Yusuke Suzuki
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+function test() {
+
+}
+
+/*
+ Copyright (C) 2012 Yusuke Suzuki
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
diff --git a/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/expected.js b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/expected.js
new file mode 100644
index 0000000000..de284d6c01
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-a-lot-of-multi-comment/expected.js
@@ -0,0 +1,49 @@
+/*
+ Copyright (C) 2012 Yusuke Suzuki
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+function test() {}
+
+/*
+ Copyright (C) 2012 Yusuke Suzuki
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
diff --git a/packages/babel-generator/test/fixtures/comments/simple-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/simple-line-comment/actual.js
new file mode 100644
index 0000000000..780a9c2b4a
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-line-comment/actual.js
@@ -0,0 +1,3 @@
+// Leading
+var i = 20;
+// Trailing
diff --git a/packages/babel-generator/test/fixtures/comments/simple-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/simple-line-comment/expected.js
new file mode 100644
index 0000000000..780a9c2b4a
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-line-comment/expected.js
@@ -0,0 +1,3 @@
+// Leading
+var i = 20;
+// Trailing
diff --git a/packages/babel-generator/test/fixtures/comments/simple-multi-comment/actual.js b/packages/babel-generator/test/fixtures/comments/simple-multi-comment/actual.js
new file mode 100644
index 0000000000..e0ad4c2075
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-multi-comment/actual.js
@@ -0,0 +1,22 @@
+function test() {
+ /*
+ * Leading comment
+ */
+
+ /*
+ *
+ * Leading comment 2
+ *
+ */
+
+ var i = 20;
+ /*
+ * Trailing comment
+ */
+
+ /*
+ *
+ * Trailing comment 2
+ *
+ */
+}
diff --git a/packages/babel-generator/test/fixtures/comments/simple-multi-comment/expected.js b/packages/babel-generator/test/fixtures/comments/simple-multi-comment/expected.js
new file mode 100644
index 0000000000..e0ad4c2075
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-multi-comment/expected.js
@@ -0,0 +1,22 @@
+function test() {
+ /*
+ * Leading comment
+ */
+
+ /*
+ *
+ * Leading comment 2
+ *
+ */
+
+ var i = 20;
+ /*
+ * Trailing comment
+ */
+
+ /*
+ *
+ * Trailing comment 2
+ *
+ */
+}
diff --git a/packages/babel-generator/test/fixtures/comments/simple-statement-comment/actual.js b/packages/babel-generator/test/fixtures/comments/simple-statement-comment/actual.js
new file mode 100644
index 0000000000..322d46769b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-statement-comment/actual.js
@@ -0,0 +1 @@
+; // Trailing
diff --git a/packages/babel-generator/test/fixtures/comments/simple-statement-comment/expected.js b/packages/babel-generator/test/fixtures/comments/simple-statement-comment/expected.js
new file mode 100644
index 0000000000..733f7f0c6b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/simple-statement-comment/expected.js
@@ -0,0 +1 @@
+; // Trailing
diff --git a/packages/babel-generator/test/fixtures/comments/try-block-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/try-block-line-comment/actual.js
new file mode 100644
index 0000000000..2ef66cdb71
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/try-block-line-comment/actual.js
@@ -0,0 +1,12 @@
+try{}//
+finally{}
+
+try{}
+catch(e){}//
+finally{}
+
+{
+try{}
+catch(e){}//
+finally{}
+}
diff --git a/packages/babel-generator/test/fixtures/comments/try-block-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/try-block-line-comment/expected.js
new file mode 100644
index 0000000000..034d32569f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/try-block-line-comment/expected.js
@@ -0,0 +1,10 @@
+try {} //
+finally {}
+
+try {} catch (e) {} //
+finally {}
+
+{
+ try {} catch (e) {} //
+ finally {}
+}
diff --git a/packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/actual.js b/packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/actual.js
new file mode 100644
index 0000000000..5cc784bea2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/actual.js
@@ -0,0 +1,9 @@
+function test() {
+ var
+ // Leading to VariableDeclarator
+ // Leading to VariableDeclarator
+ i = 20,
+ // Leading to VariableDeclarator
+ // Leading to VariableDeclarator
+ j = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/expected.js b/packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/expected.js
new file mode 100644
index 0000000000..a7c1703428
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/variable-declarator-line-comment/expected.js
@@ -0,0 +1,10 @@
+function test() {
+ var
+ // Leading to VariableDeclarator
+ // Leading to VariableDeclarator
+ i = 20,
+
+ // Leading to VariableDeclarator
+ // Leading to VariableDeclarator
+ j = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/actual.js b/packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/actual.js
new file mode 100644
index 0000000000..41dcd3d3a9
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/actual.js
@@ -0,0 +1,13 @@
+function test() {
+ var
+ /*
+ * Leading to VariableDeclarator
+ * Leading to VariableDeclarator
+ */
+ i = 20,
+ /*
+ * Leading to VariableDeclarator
+ * Leading to VariableDeclarator
+ */
+ j = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/expected.js b/packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/expected.js
new file mode 100644
index 0000000000..84354421c2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/variable-declarator-multi-comment/expected.js
@@ -0,0 +1,14 @@
+function test() {
+ var
+ /*
+ * Leading to VariableDeclarator
+ * Leading to VariableDeclarator
+ */
+ i = 20,
+
+ /*
+ * Leading to VariableDeclarator
+ * Leading to VariableDeclarator
+ */
+ j = 20;
+}
diff --git a/packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/actual.js b/packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/actual.js
new file mode 100644
index 0000000000..4ae8f0b59d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/actual.js
@@ -0,0 +1,16 @@
+{
+ var t = 20; /*
+ * This is trailing comment
+ */
+}
+
+{
+ var tt = 20; /*
+ * This is trailing comment
+ */
+}
+{{
+ var t = 20; /*
+ * This is trailing comment
+ */
+}}
diff --git a/packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/expected.js b/packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/expected.js
new file mode 100644
index 0000000000..7819d36b16
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/comments/variable-declarator-trailing-comment/expected.js
@@ -0,0 +1,18 @@
+{
+ var t = 20; /*
+ * This is trailing comment
+ */
+}
+
+{
+ var tt = 20; /*
+ * This is trailing comment
+ */
+}
+{
+ {
+ var t = 20; /*
+ * This is trailing comment
+ */
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/compact/options.json b/packages/babel-generator/test/fixtures/compact/options.json
new file mode 100644
index 0000000000..eb4e948bfa
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/compact/options.json
@@ -0,0 +1,3 @@
+{
+ "compact": true
+}
diff --git a/packages/babel-generator/test/fixtures/compact/single-line-comment/actual.js b/packages/babel-generator/test/fixtures/compact/single-line-comment/actual.js
new file mode 100644
index 0000000000..e2589c7138
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/compact/single-line-comment/actual.js
@@ -0,0 +1,2 @@
+// foo
+bar();
diff --git a/packages/babel-generator/test/fixtures/compact/single-line-comment/expected.js b/packages/babel-generator/test/fixtures/compact/single-line-comment/expected.js
new file mode 100644
index 0000000000..e2589c7138
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/compact/single-line-comment/expected.js
@@ -0,0 +1,2 @@
+// foo
+bar();
diff --git a/packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/actual.js b/packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/actual.js
new file mode 100644
index 0000000000..7c6969bfc8
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/actual.js
@@ -0,0 +1,3 @@
+x | y ^ z;
+x | (y ^ z);
+(x | y) ^ z;
diff --git a/packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/expected.js b/packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/expected.js
new file mode 100644
index 0000000000..ffcf91adde
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/bitwise-precedence/expected.js
@@ -0,0 +1,3 @@
+x | y ^ z;
+x | y ^ z;
+(x | y) ^ z;
diff --git a/packages/babel-generator/test/fixtures/edgecase/floating-point/actual.js b/packages/babel-generator/test/fixtures/edgecase/floating-point/actual.js
new file mode 100644
index 0000000000..b38eebf513
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/floating-point/actual.js
@@ -0,0 +1,2 @@
+1.1.valueOf();
+(1e+300).valueOf();
diff --git a/packages/babel-generator/test/fixtures/edgecase/floating-point/expected.js b/packages/babel-generator/test/fixtures/edgecase/floating-point/expected.js
new file mode 100644
index 0000000000..f0c3126dbe
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/floating-point/expected.js
@@ -0,0 +1,2 @@
+1.1.valueOf();
+1e+300.valueOf();
diff --git a/packages/babel-generator/test/fixtures/edgecase/for-in-no-in/actual.js b/packages/babel-generator/test/fixtures/edgecase/for-in-no-in/actual.js
new file mode 100644
index 0000000000..f84b95ae6b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/for-in-no-in/actual.js
@@ -0,0 +1,12 @@
+for (var i = (1 in []) in []);
+for (var i = 1 in [] in []);
+for (var i = (10 * 10 in []) in []);
+for (var i = (10 + 10 in []) in []);
+for (var i = 10 + (10 in []) in []);
+for (var i = 10 + 10 in [] in []);
+for (var i = (1 in []);;);
+for ((1 in []);;);
+for (1 * (1 in []);;);
+for (1 * (1 + 1 in []);;);
+for (1 * ((1 + 1) in []);;);
+for (1 * (1 + (1 in []));;);
diff --git a/packages/babel-generator/test/fixtures/edgecase/for-in-no-in/expected.js b/packages/babel-generator/test/fixtures/edgecase/for-in-no-in/expected.js
new file mode 100644
index 0000000000..029b11e515
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/for-in-no-in/expected.js
@@ -0,0 +1,12 @@
+for (var i = (1 in []) in []);
+for (var i = 1 in ([] in []));
+for (var i = (10 * 10 in []) in []);
+for (var i = (10 + 10 in []) in []);
+for (var i = 10 + (10 in []) in []);
+for (var i = 10 + 10 in ([] in []));
+for (var i = (1 in []);;);
+for ((1 in []);;);
+for (1 * (1 in []);;);
+for (1 * (1 + 1 in []);;);
+for (1 * (1 + 1 in []);;);
+for (1 * (1 + (1 in []));;);
diff --git a/packages/babel-generator/test/fixtures/edgecase/new-precedence/actual.js b/packages/babel-generator/test/fixtures/edgecase/new-precedence/actual.js
new file mode 100644
index 0000000000..7100c69c3d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/new-precedence/actual.js
@@ -0,0 +1,9 @@
+new (a().b)();
+new a().b();
+new (a()).b();
+new (a())();
+new new a(a)();
+new (new a())(a);
+(new a()).test;
+(new a().test);
+(new (a().test)());
diff --git a/packages/babel-generator/test/fixtures/edgecase/new-precedence/expected.js b/packages/babel-generator/test/fixtures/edgecase/new-precedence/expected.js
new file mode 100644
index 0000000000..646afe94da
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/new-precedence/expected.js
@@ -0,0 +1,9 @@
+new (a().b)();
+new a().b();
+new (a().b)();
+new (a())();
+new new a(a)();
+new new a()(a);
+new a().test;
+new a().test;
+new (a().test)();
diff --git a/packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/actual.js b/packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/actual.js
new file mode 100644
index 0000000000..cfbda48a0d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/actual.js
@@ -0,0 +1,3 @@
+dejavu.Class.declare({
+ method2: function () {}
+});
diff --git a/packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/expected.js b/packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/expected.js
new file mode 100644
index 0000000000..cfbda48a0d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/one-property-with-line-terminator/expected.js
@@ -0,0 +1,3 @@
+dejavu.Class.declare({
+ method2: function () {}
+});
diff --git a/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/actual.js b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/actual.js
new file mode 100644
index 0000000000..2a0e91f010
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/actual.js
@@ -0,0 +1,6 @@
+function foo(l) {
+ return (
+ // hi
+ l
+ );
+}
diff --git a/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/expected.js b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/expected.js
new file mode 100644
index 0000000000..042f71356d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/expected.js
@@ -0,0 +1,4 @@
+function foo(l){
+return (
+
+l);}
diff --git a/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/options.json b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/options.json
new file mode 100644
index 0000000000..a3e2539639
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-and-compact-option/options.json
@@ -0,0 +1,5 @@
+{
+ "comments": false,
+ "retainLines": true,
+ "compact": true
+}
diff --git a/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/actual.js b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/actual.js
new file mode 100644
index 0000000000..3d4fdd63e3
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/actual.js
@@ -0,0 +1,11 @@
+function foo(l) {
+ return (
+ l
+ );
+}
+
+function foo() {
+ return (
+ 1 && 2
+ ) || 3;
+}
diff --git a/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/expected.js b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/expected.js
new file mode 100644
index 0000000000..cc911760dc
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/expected.js
@@ -0,0 +1,10 @@
+function foo(l) {
+ return (
+ l);}
+
+
+
+function foo() {
+ return (
+ 1 && 2 ||
+ 3);}
diff --git a/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/options.json b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/options.json
new file mode 100644
index 0000000000..97925bbcb6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/return-with-retainlines-option/options.json
@@ -0,0 +1,3 @@
+{
+ "retainLines": true
+}
diff --git a/packages/babel-generator/test/fixtures/edgecase/unary-op/actual.js b/packages/babel-generator/test/fixtures/edgecase/unary-op/actual.js
new file mode 100644
index 0000000000..9f318cdb1f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/unary-op/actual.js
@@ -0,0 +1,5 @@
+delete delete i;
++ +i;
+!!i;
++ ++i;
+- --i;
diff --git a/packages/babel-generator/test/fixtures/edgecase/unary-op/expected.js b/packages/babel-generator/test/fixtures/edgecase/unary-op/expected.js
new file mode 100644
index 0000000000..9f318cdb1f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/unary-op/expected.js
@@ -0,0 +1,5 @@
+delete delete i;
++ +i;
+!!i;
++ ++i;
+- --i;
diff --git a/packages/babel-generator/test/fixtures/edgecase/variable-declaration/actual.js b/packages/babel-generator/test/fixtures/edgecase/variable-declaration/actual.js
new file mode 100644
index 0000000000..31fcb452eb
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/variable-declaration/actual.js
@@ -0,0 +1,4 @@
+var fact5 = function fact(n){
+ if (n <= 1) return 1
+ return n * fact(n - 1)
+}(5)
diff --git a/packages/babel-generator/test/fixtures/edgecase/variable-declaration/expected.js b/packages/babel-generator/test/fixtures/edgecase/variable-declaration/expected.js
new file mode 100644
index 0000000000..0af0dd6ac0
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/edgecase/variable-declaration/expected.js
@@ -0,0 +1,4 @@
+var fact5 = (function fact(n) {
+ if (n <= 1) return 1;
+ return n * fact(n - 1);
+})(5);
diff --git a/packages/babel-generator/test/fixtures/flow/array-types/actual.js b/packages/babel-generator/test/fixtures/flow/array-types/actual.js
new file mode 100644
index 0000000000..39f1c281a2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/array-types/actual.js
@@ -0,0 +1,6 @@
+var a: number[];
+var a: ?number[];
+var a: (?number)[];
+var a: () => number[];
+var a: (() => number)[];
+var a: typeof A[];
diff --git a/packages/babel-generator/test/fixtures/flow/array-types/expected.js b/packages/babel-generator/test/fixtures/flow/array-types/expected.js
new file mode 100644
index 0000000000..39f1c281a2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/array-types/expected.js
@@ -0,0 +1,6 @@
+var a: number[];
+var a: ?number[];
+var a: (?number)[];
+var a: () => number[];
+var a: (() => number)[];
+var a: typeof A[];
diff --git a/packages/babel-generator/test/fixtures/flow/boolean-literal-types/actual.js b/packages/babel-generator/test/fixtures/flow/boolean-literal-types/actual.js
new file mode 100644
index 0000000000..8573e6b69e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/boolean-literal-types/actual.js
@@ -0,0 +1,2 @@
+var foo: true;
+var bar: false;
diff --git a/packages/babel-generator/test/fixtures/flow/boolean-literal-types/expected.js b/packages/babel-generator/test/fixtures/flow/boolean-literal-types/expected.js
new file mode 100644
index 0000000000..8573e6b69e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/boolean-literal-types/expected.js
@@ -0,0 +1,2 @@
+var foo: true;
+var bar: false;
diff --git a/packages/babel-generator/test/fixtures/flow/call-properties/actual.js b/packages/babel-generator/test/fixtures/flow/call-properties/actual.js
new file mode 100644
index 0000000000..62f0a1b259
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/call-properties/actual.js
@@ -0,0 +1,5 @@
+var a: { (): number };
+var a: { (): number; };
+var a: { (): number; y: string; (x: string): string };
+var a: { (x: T): number; };
+interface A { (): number; };
diff --git a/packages/babel-generator/test/fixtures/flow/call-properties/expected.js b/packages/babel-generator/test/fixtures/flow/call-properties/expected.js
new file mode 100644
index 0000000000..11d4f2a107
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/call-properties/expected.js
@@ -0,0 +1,5 @@
+var a: { (): number };
+var a: { (): number };
+var a: { y: string; (): number; (x: string): string; };
+var a: { (x: T): number };
+interface A { (): number };
diff --git a/packages/babel-generator/test/fixtures/flow/declare-module/actual.js b/packages/babel-generator/test/fixtures/flow/declare-module/actual.js
new file mode 100644
index 0000000000..7612b7dc0d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/declare-module/actual.js
@@ -0,0 +1,5 @@
+declare module A {}
+declare module "./a/b.js" {}
+declare module A { declare var x: number; }
+declare module A { declare function foo(): number; }
+declare module A { declare class B { foo(): number; } }
diff --git a/packages/babel-generator/test/fixtures/flow/declare-module/expected.js b/packages/babel-generator/test/fixtures/flow/declare-module/expected.js
new file mode 100644
index 0000000000..0b6fbd09e0
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/declare-module/expected.js
@@ -0,0 +1,11 @@
+declare module A {}
+declare module "./a/b.js" {}
+declare module A {
+ declare var x: number;
+}
+declare module A {
+ declare function foo(): number;
+}
+declare module A {
+ declare class B { foo(): number }
+}
diff --git a/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js b/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js
new file mode 100644
index 0000000000..369f608fa2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js
@@ -0,0 +1,11 @@
+declare var foo
+declare var foo;
+declare function foo(): void
+declare function foo(): void;
+declare function foo(): void;
+declare function foo(x: number, y: string): void;
+declare class A {}
+declare class A extends B { x: number }
+declare class A { static foo(): number; static x : string }
+declare class A { static [ indexer: number]: string }
+declare class A { static () : number }
diff --git a/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js b/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js
new file mode 100644
index 0000000000..323cc86f70
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js
@@ -0,0 +1,11 @@
+declare var foo;
+declare var foo;
+declare function foo(): void;
+declare function foo(): void;
+declare function foo(): void;
+declare function foo(x: number, y: string): void;
+declare class A {}
+declare class A extends B { x: number }
+declare class A { static foo(): number; static x: string; }
+declare class A { static [indexer: number]: string }
+declare class A { static (): number }
diff --git a/packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/actual.js b/packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/actual.js
new file mode 100644
index 0000000000..f55148215c
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/actual.js
@@ -0,0 +1,9 @@
+interface A {};
+interface A extends B {};
+interface A extends B, C {};
+interface A { foo: () => number; };
+interface Dictionary { [index: string]: string; length: number; };
+class Foo implements Bar {}
+class Foo extends Bar implements Bat, Man {}
+class Foo extends class Bar implements Bat {} {}
+class Foo extends class Bar implements Bat {} implements Man {}
diff --git a/packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/expected.js b/packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/expected.js
new file mode 100644
index 0000000000..90aafb539e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/interfaces-module-and-script/expected.js
@@ -0,0 +1,9 @@
+interface A {};
+interface A extends B {};
+interface A extends B, C {};
+interface A { foo(): number };
+interface Dictionary { length: number; [index: string]: string; };
+class Foo implements Bar {}
+class Foo extends Bar implements Bat, Man {}
+class Foo extends class Bar implements Bat {} {}
+class Foo extends class Bar implements Bat {} implements Man {}
diff --git a/packages/babel-generator/test/fixtures/flow/number-literal-types/actual.js b/packages/babel-generator/test/fixtures/flow/number-literal-types/actual.js
new file mode 100644
index 0000000000..8aa0ffac4b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/number-literal-types/actual.js
@@ -0,0 +1,5 @@
+var a: 123;
+var a: 123.0;
+var a: 0x7B;
+var a: 0b1111011;
+var a: 0o173;
diff --git a/packages/babel-generator/test/fixtures/flow/number-literal-types/expected.js b/packages/babel-generator/test/fixtures/flow/number-literal-types/expected.js
new file mode 100644
index 0000000000..8aa0ffac4b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/number-literal-types/expected.js
@@ -0,0 +1,5 @@
+var a: 123;
+var a: 123.0;
+var a: 0x7B;
+var a: 0b1111011;
+var a: 0o173;
diff --git a/packages/babel-generator/test/fixtures/flow/qualified-generic-type/actual.js b/packages/babel-generator/test/fixtures/flow/qualified-generic-type/actual.js
new file mode 100644
index 0000000000..040a63c165
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/qualified-generic-type/actual.js
@@ -0,0 +1,4 @@
+var a: A.B;
+var a: A.B.C;
+var a: A.B;
+var a: typeof A.B;
diff --git a/packages/babel-generator/test/fixtures/flow/qualified-generic-type/expected.js b/packages/babel-generator/test/fixtures/flow/qualified-generic-type/expected.js
new file mode 100644
index 0000000000..040a63c165
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/qualified-generic-type/expected.js
@@ -0,0 +1,4 @@
+var a: A.B;
+var a: A.B.C;
+var a: A.B;
+var a: typeof A.B;
diff --git a/packages/babel-generator/test/fixtures/flow/string-literal-types/actual.js b/packages/babel-generator/test/fixtures/flow/string-literal-types/actual.js
new file mode 100644
index 0000000000..6acd7f1342
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/string-literal-types/actual.js
@@ -0,0 +1,2 @@
+function createElement(tagName: "div"): HTMLDivElement {}
+function createElement(tagName: 'div'): HTMLDivElement {}
diff --git a/packages/babel-generator/test/fixtures/flow/string-literal-types/expected.js b/packages/babel-generator/test/fixtures/flow/string-literal-types/expected.js
new file mode 100644
index 0000000000..6acd7f1342
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/string-literal-types/expected.js
@@ -0,0 +1,2 @@
+function createElement(tagName: "div"): HTMLDivElement {}
+function createElement(tagName: 'div'): HTMLDivElement {}
diff --git a/packages/babel-generator/test/fixtures/flow/tuples/actual.js b/packages/babel-generator/test/fixtures/flow/tuples/actual.js
new file mode 100644
index 0000000000..4c4291e8b2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/tuples/actual.js
@@ -0,0 +1,4 @@
+var a: [] = [];
+var a: [Foo] = [foo];
+var a: [number,] = [123,];
+var a: [number, string] = [123, "duck"];
diff --git a/packages/babel-generator/test/fixtures/flow/tuples/expected.js b/packages/babel-generator/test/fixtures/flow/tuples/expected.js
new file mode 100644
index 0000000000..2fb1a921e0
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/tuples/expected.js
@@ -0,0 +1,4 @@
+var a: [] = [];
+var a: [Foo] = [foo];
+var a: [number] = [123];
+var a: [number, string] = [123, "duck"];
diff --git a/packages/babel-generator/test/fixtures/flow/type-alias/actual.js b/packages/babel-generator/test/fixtures/flow/type-alias/actual.js
new file mode 100644
index 0000000000..a56fa1a17b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/type-alias/actual.js
@@ -0,0 +1,3 @@
+type FBID = number;
+type Foo = Bar
+export type Foo = number;
diff --git a/packages/babel-generator/test/fixtures/flow/type-alias/expected.js b/packages/babel-generator/test/fixtures/flow/type-alias/expected.js
new file mode 100644
index 0000000000..f0a50c1904
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/type-alias/expected.js
@@ -0,0 +1,3 @@
+type FBID = number;
+type Foo = Bar;
+export type Foo = number;
diff --git a/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js b/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js
new file mode 100644
index 0000000000..2acac2f2d8
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js
@@ -0,0 +1,100 @@
+function foo(numVal: any) {}
+function foo(numVal: number) {}
+function foo(numVal: number, strVal: string) {}
+function foo(numVal: number, untypedVal) {}
+function foo(untypedVal, numVal: number) {}
+function foo(nullableNum: ?number) {}
+function foo(callback: () => void) {}
+function foo(callback: () => number) {}
+function foo(callback: (_: bool) => number) {}
+function foo(callback: (_1: bool, _2: string) => number) {}
+function foo(callback: (_1: bool, ...foo: Array) => number) {}
+function foo(): number{}
+function foo():() => void {}
+function foo():(_:bool) => number{}
+function foo():(_?:bool) => number{}
+function foo(): {} {}
+function foo() {}
+function foo() {}
+function foo() {}
+a = function() {};
+a = { set fooProp(value: number) {} };
+a = { set fooProp(value: number): void {} };
+a = { get fooProp():number{} };
+a = { id(x: T): T {} };
+a = { *id(x: T): T {} };
+a = { async id(x: T): T {} };
+a = { 123(x: T): T {} };
+class Foo {
+ set fooProp(value: number) {}
+}
+class Foo {
+ set fooProp(value: number): void {}
+}
+class Foo {
+ get fooProp(): number {}
+}
+var numVal: number;
+var numVal: number = otherNumVal;
+var a: { numVal: number };
+var a: { numVal: number; };
+var a: { numVal: number; [indexer: string]: number };
+var a: ?{ numVal: number };
+var a: { numVal: number; strVal: string }
+var a: { subObj: {strVal: string} }
+var a: { subObj: ?{strVal: string} }
+var a: { param1: number; param2: string }
+var a: { param1: number; param2?: string }
+var a: { [a: number]: string; [b: number]: string; };
+var a: { add(x: number, ...y: Array): void };
+var a: { id(x: T): T; };
+var a:Array = [1, 2, 3]
+a = class Foo {}
+a = class Foo extends Bar {}
+class Foo {}
+class Foo extends Bar {}
+class Foo extends mixin(Bar) {}
+class Foo {
+ bar():number { return 42; }
+}
+class Foo {
+ "bar"() {}
+}
+function foo(requiredParam, optParam?) {}
+class Foo {
+ prop1: string;
+ prop2: number;
+}
+class Foo {
+ static prop1: string;
+ prop2: number;
+}
+var x: number | string = 4;
+class Array { concat(items:number | string) {}; }
+var x: () => number | () => string = fn;
+var x: typeof Y = Y;
+var x: typeof Y | number = Y;
+var {x}: {x: string; } = { x: "hello" };
+var {x}: {x: string } = { x: "hello" };
+var [x]: Array = [ "hello" ];
+function foo({x}: { x: string; }) {}
+function foo([x]: Array) {}
+function foo(...rest: Array) {}
+(function (...rest: Array) {});
+((...rest: Array) => rest);
+var a: Map >
+var a: Map>
+var a: number[]
+var a: ?string[]
+var a: Promise[]
+var a:(...rest:Array) => number
+var identity: (x: T) => T
+var identity: (x: T, ...y:T[]) => T
+import type foo from "bar";
+import type { foo, bar } from "baz";
+import type { foo as bar } from "baz";
+import type from "foo";
+import type, { foo } from "bar";
+import type * as namespace from "bar";
+export type { foo };
+export type { foo } from "bar";
diff --git a/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js b/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js
new file mode 100644
index 0000000000..f263cf9bd5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js
@@ -0,0 +1,104 @@
+function foo(numVal: any) {}
+function foo(numVal: number) {}
+function foo(numVal: number, strVal: string) {}
+function foo(numVal: number, untypedVal) {}
+function foo(untypedVal, numVal: number) {}
+function foo(nullableNum: ?number) {}
+function foo(callback: () => void) {}
+function foo(callback: () => number) {}
+function foo(callback: (_: bool) => number) {}
+function foo(callback: (_1: bool, _2: string) => number) {}
+function foo(callback: (_1: bool, ...foo: Array) => number) {}
+function foo(): number {}
+function foo(): () => void {}
+function foo(): (_: bool) => number {}
+function foo(): (_?: bool) => number {}
+function foo(): {} {}
+function foo() {}
+function foo() {}
+function foo() {}
+a = function () {};
+a = { set fooProp(value: number) {} };
+a = { set fooProp(value: number): void {} };
+a = { get fooProp(): number {} };
+a = { id(x: T): T {} };
+a = { *id(x: T): T {} };
+a = { async id(x: T): T {} };
+a = { 123(x: T): T {} };
+class Foo {
+ set fooProp(value: number) {}
+}
+class Foo {
+ set fooProp(value: number): void {}
+}
+class Foo {
+ get fooProp(): number {}
+}
+var numVal: number;
+var numVal: number = otherNumVal;
+var a: { numVal: number };
+var a: { numVal: number };
+var a: { numVal: number; [indexer: string]: number; };
+var a: ?{ numVal: number };
+var a: { numVal: number; strVal: string; };
+var a: { subObj: { strVal: string } };
+var a: { subObj: ?{ strVal: string } };
+var a: { param1: number; param2: string; };
+var a: { param1: number; param2?: string; };
+var a: { [a: number]: string; [b: number]: string; };
+var a: { add(x: number, ...y: Array): void };
+var a: { id(x: T): T };
+var a: Array = [1, 2, 3];
+a = class Foo {};
+a = class Foo extends Bar {};
+class Foo {}
+class Foo extends Bar {}
+class Foo extends mixin(Bar) {}
+class Foo {
+ bar(): number {
+ return 42;
+ }
+}
+class Foo {
+ "bar"() {}
+}
+function foo(requiredParam, optParam?) {}
+class Foo {
+ prop1: string;
+ prop2: number;
+}
+class Foo {
+ static prop1: string;
+ prop2: number;
+}
+var x: number | string = 4;
+class Array {
+ concat(items: number | string) {}
+}
+var x: () => number | () => string = fn;
+var x: typeof Y = Y;
+var x: typeof Y | number = Y;
+var { x }: { x: string } = { x: "hello" };
+var { x }: { x: string } = { x: "hello" };
+var [x]: Array = ["hello"];
+function foo({ x }: { x: string }) {}
+function foo([x]: Array) {}
+function foo(...rest: Array) {}
+(function (...rest: Array) {});
+(...rest: Array) => rest;
+var a: Map>;
+var a: Map>;
+var a: number[];
+var a: ?string[];
+var a: Promise[];
+var a: (...rest: Array) => number;
+var identity: (x: T) => T;
+var identity: (x: T, ...y: T[]) => T;
+import type foo from "bar";
+import type { foo, bar } from "baz";
+import type { foo as bar } from "baz";
+import type from "foo";
+import type, { foo } from "bar";
+import type * as namespace from "bar";
+export type { foo };
+export type { foo } from "bar";
diff --git a/packages/babel-generator/test/fixtures/flow/typecasts/actual.js b/packages/babel-generator/test/fixtures/flow/typecasts/actual.js
new file mode 100644
index 0000000000..aa691e87d2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/typecasts/actual.js
@@ -0,0 +1,4 @@
+(xxx: number);
+({ xxx: 0, yyy: "hey" }: { xxx: number; yyy: string });
+(xxx => xxx + 1: (xxx: number) => number);
+((xxx: number), (yyy: string));
diff --git a/packages/babel-generator/test/fixtures/flow/typecasts/expected.js b/packages/babel-generator/test/fixtures/flow/typecasts/expected.js
new file mode 100644
index 0000000000..69c9dc4b93
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/flow/typecasts/expected.js
@@ -0,0 +1,4 @@
+(xxx: number);
+({ xxx: 0, yyy: "hey" }: { xxx: number; yyy: string; });
+(xxx => xxx + 1: (xxx: number) => number);
+(xxx: number), (yyy: string);
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/actual.js
new file mode 100644
index 0000000000..21333a47b5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/actual.js
@@ -0,0 +1,11 @@
+e => {
+ print("hello world");
+};
+(e1, e2, e3) => {
+ print("hello world");
+};
+e => e;
+(e1, e2, e3) => e;
+(e) => {
+};
+e => 20 + 20
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/expected.js
new file mode 100644
index 0000000000..665c99a5cb
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/arrow-function/expected.js
@@ -0,0 +1,10 @@
+e => {
+ print("hello world");
+};
+(e1, e2, e3) => {
+ print("hello world");
+};
+e => e;
+(e1, e2, e3) => e;
+e => {};
+e => 20 + 20;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/actual.js
new file mode 100644
index 0000000000..46e3476c79
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/actual.js
@@ -0,0 +1,56 @@
+class Test {
+}
+class Derived extends Super {
+}
+class StaticMethods {
+ static n1() {
+ }
+
+ static get get1() {
+ }
+
+ static set set1(value) {
+ }
+
+ static *gen1() {
+ }
+}
+class Methods {
+ n2() {
+ }
+
+ get get2() {
+ }
+
+ set set2(value) {
+ }
+
+ *gen1() {
+ }
+}
+class ComputedStaticMethods {
+ static [n1]() {
+ }
+
+ static get [get1]() {
+ }
+
+ static set [set1](value) {
+ }
+
+ static *[gen1]() {
+ }
+}
+class ComputedMethods {
+ [n2]() {
+ }
+
+ get [get2]() {
+ }
+
+ set [set2](value) {
+ }
+
+ *[gen1]() {
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/expected.js
new file mode 100644
index 0000000000..ee25d48aa9
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/class-declaration/expected.js
@@ -0,0 +1,38 @@
+class Test {}
+class Derived extends Super {}
+class StaticMethods {
+ static n1() {}
+
+ static get get1() {}
+
+ static set set1(value) {}
+
+ static *gen1() {}
+}
+class Methods {
+ n2() {}
+
+ get get2() {}
+
+ set set2(value) {}
+
+ *gen1() {}
+}
+class ComputedStaticMethods {
+ static [n1]() {}
+
+ static get [get1]() {}
+
+ static set [set1](value) {}
+
+ static *[gen1]() {}
+}
+class ComputedMethods {
+ [n2]() {}
+
+ get [get2]() {}
+
+ set [set2](value) {}
+
+ *[gen1]() {}
+}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/actual.js
new file mode 100644
index 0000000000..209eada40b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/actual.js
@@ -0,0 +1,55 @@
+(class Test { });
+(class Derived extends Super { });
+(class StaticMethods {
+ static n1() {
+ }
+
+ static get get1() {
+ }
+
+ static set set1(value) {
+ }
+
+ static *gen1() {
+ }
+});
+(class Methods {
+ n2() {
+ }
+
+ get get2() {
+ }
+
+ set set2(value) {
+ }
+
+ *gen1() {
+ }
+});
+(class ComputedStaticMethods {
+ static [n1]() {
+ }
+
+ static get [get1]() {
+ }
+
+ static set [set1](value) {
+ }
+
+ static *[gen1]() {
+ }
+});
+(class ComputedMethods {
+ [n2]() {
+ }
+
+ get [get2]() {
+ }
+
+ set [set2](value) {
+ }
+
+ *[gen1]() {
+ }
+});
+(class { });
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/expected.js
new file mode 100644
index 0000000000..d49bc099bc
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/class-expression/expected.js
@@ -0,0 +1,39 @@
+(class Test {});
+(class Derived extends Super {});
+(class StaticMethods {
+ static n1() {}
+
+ static get get1() {}
+
+ static set set1(value) {}
+
+ static *gen1() {}
+});
+(class Methods {
+ n2() {}
+
+ get get2() {}
+
+ set set2(value) {}
+
+ *gen1() {}
+});
+(class ComputedStaticMethods {
+ static [n1]() {}
+
+ static get [get1]() {}
+
+ static set [set1](value) {}
+
+ static *[gen1]() {}
+});
+(class ComputedMethods {
+ [n2]() {}
+
+ get [get2]() {}
+
+ set [set2](value) {}
+
+ *[gen1]() {}
+});
+(class {});
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/actual.js
new file mode 100644
index 0000000000..e5db5ac150
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/actual.js
@@ -0,0 +1,14 @@
+var object1 = {
+ get [Symbol.create]() { },
+ set [set()](value) { }
+};
+var object2 = {
+ *[generator()]() { }
+};
+var object3 = {
+ *[generator()]() { }
+};
+var object4 = {
+ [Symbol.xxx]: "hello",
+ [ok()]: 42
+};
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/expected.js
new file mode 100644
index 0000000000..f691ac68dc
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/computed-property/expected.js
@@ -0,0 +1,14 @@
+var object1 = {
+ get [Symbol.create]() {},
+ set [set()](value) {}
+};
+var object2 = {
+ *[generator()]() {}
+};
+var object3 = {
+ *[generator()]() {}
+};
+var object4 = {
+ [Symbol.xxx]: "hello",
+ [ok()]: 42
+};
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/actual.js
new file mode 100644
index 0000000000..aa61f5ec66
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/actual.js
@@ -0,0 +1,11 @@
+function a(p=20) {
+}
+
+function b(p, q=30) {
+}
+
+function c(p, q=30, ...r) {
+}
+
+(p = 20) => { };
+(p = 20, ...q) => { };
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/expected.js
new file mode 100644
index 0000000000..bc5604fa1b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/default-parameter/expected.js
@@ -0,0 +1,8 @@
+function a(p = 20) {}
+
+function b(p, q = 30) {}
+
+function c(p, q = 30, ...r) {}
+
+(p = 20) => {};
+(p = 20, ...q) => {};
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/actual.js
new file mode 100644
index 0000000000..b9325bbae1
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/actual.js
@@ -0,0 +1,18 @@
+function t1({responseText: responseText}) {
+}
+function t2({responseText}) {
+}
+function t3([a, b]) {
+}
+var [i, j, k] = array;
+var {
+ i,
+ j,
+ k
+} = obj;
+let {i, j, k} = obj;
+const {i, j, k} = obj;
+var { value } = obj;
+var {
+ value
+} = obj;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/expected.js
new file mode 100644
index 0000000000..d32b4e5bae
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/destructuring-assignment/expected.js
@@ -0,0 +1,15 @@
+function t1({ responseText: responseText }) {}
+function t2({ responseText }) {}
+function t3([a, b]) {}
+var [i, j, k] = array;
+var {
+ i,
+ j,
+ k
+} = obj;
+let { i, j, k } = obj;
+const { i, j, k } = obj;
+var { value } = obj;
+var {
+ value
+} = obj;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/actual.js
new file mode 100644
index 0000000000..3d8267c6c7
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/actual.js
@@ -0,0 +1 @@
+export default function a () { }
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/expected.js
new file mode 100644
index 0000000000..c33f5633d7
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/export-default-declaration/expected.js
@@ -0,0 +1 @@
+export default function a() {}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/exports/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/exports/actual.js
new file mode 100644
index 0000000000..d76fe5a8ad
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/exports/actual.js
@@ -0,0 +1,9 @@
+export * from "OK"
+export { name } from "OK"
+export { a as b, c as d } from "hello"
+export { a as b, c as d }
+export { }
+export default i = 20
+export function test() { }
+export var i = 20
+export let i = 42
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/exports/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/exports/expected.js
new file mode 100644
index 0000000000..269678f691
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/exports/expected.js
@@ -0,0 +1,9 @@
+export * from "OK";
+export { name } from "OK";
+export { a as b, c as d } from "hello";
+export { a as b, c as d };
+export {};
+export default i = 20;
+export function test() {}
+export var i = 20;
+export let i = 42;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/actual.js
new file mode 100644
index 0000000000..0cffaf8dc1
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/actual.js
@@ -0,0 +1,7 @@
+function test() {
+ for (var i of array) {
+ }
+
+ for (let i of array) {
+ }
+}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/expected.js
new file mode 100644
index 0000000000..be22a40333
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/for-of-statement/expected.js
@@ -0,0 +1,5 @@
+function test() {
+ for (var i of array) {}
+
+ for (let i of array) {}
+}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/actual.js
new file mode 100644
index 0000000000..7fb048846d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/actual.js
@@ -0,0 +1,7 @@
+import foo from "foo";
+import * as foo from "foo";
+import ok, {
+ foo as bar,
+ test as testing,
+ logging
+} from "foo";
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/expected.js
new file mode 100644
index 0000000000..530a0ce14b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/import-with-default/expected.js
@@ -0,0 +1,3 @@
+import foo from "foo";
+import * as foo from "foo";
+import ok, { foo as bar, test as testing, logging } from "foo";
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/imports/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/imports/actual.js
new file mode 100644
index 0000000000..98bbc6bbcb
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/imports/actual.js
@@ -0,0 +1,8 @@
+import "foo";
+import {foo} from "foo";
+import {foo as bar} from "foo";
+import {
+ foo as bar,
+ test as testing,
+ logging
+} from "foo";
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/imports/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/imports/expected.js
new file mode 100644
index 0000000000..d4d486ece9
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/imports/expected.js
@@ -0,0 +1,4 @@
+import "foo";
+import { foo } from "foo";
+import { foo as bar } from "foo";
+import { foo as bar, test as testing, logging } from "foo";
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/actual.js
new file mode 100644
index 0000000000..c4cd936913
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/actual.js
@@ -0,0 +1,5 @@
+var [a, b, ...rest] = array;
+const [a, b, ...rest] = array;
+function a([a, b, ...rest]) {
+}
+([a, b, ...rest]) => { };
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/expected.js
new file mode 100644
index 0000000000..bdad6cc5aa
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/spread-element/expected.js
@@ -0,0 +1,4 @@
+var [a, b, ...rest] = array;
+const [a, b, ...rest] = array;
+function a([a, b, ...rest]) {}
+([a, b, ...rest]) => {};
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/actual.js
new file mode 100644
index 0000000000..5d8a96d54f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/actual.js
@@ -0,0 +1,12 @@
+var escaped = `
+\u2028
+\u2029
+`;
+
+var escaped = `
+\v
+\b
+\t
+\n
+\r
+`;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/expected.js
new file mode 100644
index 0000000000..5d8a96d54f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/templates-escape/expected.js
@@ -0,0 +1,12 @@
+var escaped = `
+\u2028
+\u2029
+`;
+
+var escaped = `
+\v
+\b
+\t
+\n
+\r
+`;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/templates/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/templates/actual.js
new file mode 100644
index 0000000000..153f90d596
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/templates/actual.js
@@ -0,0 +1,31 @@
+var hello = `hello`;
+
+var hello = `
+line
+terminators`;
+
+var tagged = tagged`hello`;
+var tagged = member.call`hello`;
+var tagged = new call`hello`;
+var tagged = new (call`hello`());
+var tageed = member[call`hello`];
+
+var middles = `
+Is the order a rabbit?
+`;
+
+var middles = `
+Is the order ${ order }?
+`;
+
+var middles = `
+Is the order ${ order }?
+`;
+
+var middles = `
+1. ${ cocoa }
+2. ${ chino }
+3. ${ rize }
+4. ${ syaro }
+5. ${ chiya }
+`;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js
new file mode 100644
index 0000000000..93ff1e3ebb
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js
@@ -0,0 +1,31 @@
+var hello = `hello`;
+
+var hello = `
+line
+terminators`;
+
+var tagged = tagged`hello`;
+var tagged = member.call`hello`;
+var tagged = new call`hello`();
+var tagged = new (call`hello`())();
+var tageed = member[call`hello`];
+
+var middles = `
+Is the order a rabbit?
+`;
+
+var middles = `
+Is the order ${ order }?
+`;
+
+var middles = `
+Is the order ${ order }?
+`;
+
+var middles = `
+1. ${ cocoa }
+2. ${ chino }
+3. ${ rize }
+4. ${ syaro }
+5. ${ chiya }
+`;
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/actual.js b/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/actual.js
new file mode 100644
index 0000000000..c5cd08ca3a
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/actual.js
@@ -0,0 +1,7 @@
+function *foo () {
+ var a = yield wat(), b = 2;
+ var c = yield a = b;
+ yield a, yield b;
+ yield a = b;
+ return (yield 1) || (yield 2);
+}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js
new file mode 100644
index 0000000000..302ffe6c55
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js
@@ -0,0 +1,8 @@
+function* foo() {
+ var a = yield wat(),
+ b = 2;
+ var c = yield a = b;
+ yield a, yield b;
+ yield a = b;
+ return (yield 1) || (yield 2);
+}
diff --git a/packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/actual.js b/packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/actual.js
new file mode 100644
index 0000000000..d9187763fe
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/actual.js
@@ -0,0 +1,4 @@
+var foo = arr.map(v => ({
+ x: v.bar,
+ y: v.bar*2
+}));
diff --git a/packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/expected.js b/packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/expected.js
new file mode 100644
index 0000000000..18f4fa7da5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/parentheses/arrow-function-object-body/expected.js
@@ -0,0 +1,4 @@
+var foo = arr.map(v => ({
+ x: v.bar,
+ y: v.bar * 2
+}));
diff --git a/packages/babel-generator/test/fixtures/parentheses/terminator-break/actual.js b/packages/babel-generator/test/fixtures/parentheses/terminator-break/actual.js
new file mode 100644
index 0000000000..ad3ad2eecf
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/parentheses/terminator-break/actual.js
@@ -0,0 +1,12 @@
+function foo() {
+ return ( // foobar
+ "bar"
+ );
+}
+
+function foo() {
+ return (
+ // foobar
+ "bar"
+ );
+}
diff --git a/packages/babel-generator/test/fixtures/parentheses/terminator-break/expected.js b/packages/babel-generator/test/fixtures/parentheses/terminator-break/expected.js
new file mode 100644
index 0000000000..e6604a1cf0
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/parentheses/terminator-break/expected.js
@@ -0,0 +1,12 @@
+function foo() {
+ return (// foobar
+ "bar"
+ );
+}
+
+function foo() {
+ return(
+ // foobar
+ "bar"
+ );
+}
diff --git a/packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/actual.js b/packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/actual.js
new file mode 100644
index 0000000000..20076ec145
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/actual.js
@@ -0,0 +1,5 @@
+[a, b, c];
+[[], [b, c], []];
+[a,, b,];
+[a,,,, b];
+[a, b,, c];
diff --git a/packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/expected.js b/packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/expected.js
new file mode 100644
index 0000000000..472dd398ba
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ArrayExpression-ArrayPattern/expected.js
@@ -0,0 +1,5 @@
+[a, b, c];
+[[], [b, c], []];
+[a,, b];
+[a,,,, b];
+[a, b,, c];
diff --git a/packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/actual.js b/packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/actual.js
new file mode 100644
index 0000000000..359ef770df
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/actual.js
@@ -0,0 +1,4 @@
+var foo = x => x * x;
+var foo = (a, b) => a * b;
+var foo = async x => x * x;
+var foo = async (a, b) => a * b;
diff --git a/packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/expected.js b/packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/expected.js
new file mode 100644
index 0000000000..359ef770df
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ArrowFunctionExpression/expected.js
@@ -0,0 +1,4 @@
+var foo = x => x * x;
+var foo = (a, b) => a * b;
+var foo = async x => x * x;
+var foo = async (a, b) => a * b;
diff --git a/packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/actual.js b/packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/actual.js
new file mode 100644
index 0000000000..5cdce74d9b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/actual.js
@@ -0,0 +1,3 @@
+foo === bar;
+foo + bar;
+foo = bar;
diff --git a/packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/expected.js b/packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/expected.js
new file mode 100644
index 0000000000..5cdce74d9b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/AssignmentExpression-BinaryExpression-LogicalExpression/expected.js
@@ -0,0 +1,3 @@
+foo === bar;
+foo + bar;
+foo = bar;
diff --git a/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js b/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js
new file mode 100644
index 0000000000..17bd494915
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/AwaitExpression/actual.js
@@ -0,0 +1,7 @@
+async function foo() {
+ await bar();
+}
+
+async function bar() {
+ await* foo();
+}
diff --git a/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js b/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js
new file mode 100644
index 0000000000..17bd494915
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/AwaitExpression/expected.js
@@ -0,0 +1,7 @@
+async function foo() {
+ await bar();
+}
+
+async function bar() {
+ await* foo();
+}
diff --git a/packages/babel-generator/test/fixtures/types/BindExpression/actual.js b/packages/babel-generator/test/fixtures/types/BindExpression/actual.js
new file mode 100644
index 0000000000..c78d72da44
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/BindExpression/actual.js
@@ -0,0 +1,5 @@
+::foo.bar.foo;
+::foo.bar["foo"];
+
+ctx::foo.bar.foo;
+ctx::foo.bar["foo"];
diff --git a/packages/babel-generator/test/fixtures/types/BindExpression/expected.js b/packages/babel-generator/test/fixtures/types/BindExpression/expected.js
new file mode 100644
index 0000000000..c78d72da44
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/BindExpression/expected.js
@@ -0,0 +1,5 @@
+::foo.bar.foo;
+::foo.bar["foo"];
+
+ctx::foo.bar.foo;
+ctx::foo.bar["foo"];
diff --git a/packages/babel-generator/test/fixtures/types/BlockStatement/actual.js b/packages/babel-generator/test/fixtures/types/BlockStatement/actual.js
new file mode 100644
index 0000000000..f9ce0d4e58
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/BlockStatement/actual.js
@@ -0,0 +1,5 @@
+{}
+
+{
+ foo();
+}
diff --git a/packages/babel-generator/test/fixtures/types/BlockStatement/expected.js b/packages/babel-generator/test/fixtures/types/BlockStatement/expected.js
new file mode 100644
index 0000000000..f9ce0d4e58
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/BlockStatement/expected.js
@@ -0,0 +1,5 @@
+{}
+
+{
+ foo();
+}
diff --git a/packages/babel-generator/test/fixtures/types/BreakStatement/actual.js b/packages/babel-generator/test/fixtures/types/BreakStatement/actual.js
new file mode 100644
index 0000000000..21e486a7df
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/BreakStatement/actual.js
@@ -0,0 +1,7 @@
+for (var i in foo) {
+ break;
+}
+
+foo: for (var i in foo) {
+ break foo;
+}
diff --git a/packages/babel-generator/test/fixtures/types/BreakStatement/expected.js b/packages/babel-generator/test/fixtures/types/BreakStatement/expected.js
new file mode 100644
index 0000000000..21e486a7df
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/BreakStatement/expected.js
@@ -0,0 +1,7 @@
+for (var i in foo) {
+ break;
+}
+
+foo: for (var i in foo) {
+ break foo;
+}
diff --git a/packages/babel-generator/test/fixtures/types/CallExpression/actual.js b/packages/babel-generator/test/fixtures/types/CallExpression/actual.js
new file mode 100644
index 0000000000..356fa149e2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/CallExpression/actual.js
@@ -0,0 +1,5 @@
+foo();
+foo("foo");
+foo("foo", "bar");
+foo(bar());
+foo(bar("test"));
diff --git a/packages/babel-generator/test/fixtures/types/CallExpression/expected.js b/packages/babel-generator/test/fixtures/types/CallExpression/expected.js
new file mode 100644
index 0000000000..356fa149e2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/CallExpression/expected.js
@@ -0,0 +1,5 @@
+foo();
+foo("foo");
+foo("foo", "bar");
+foo(bar());
+foo(bar("test"));
diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js
new file mode 100644
index 0000000000..1e431aa75b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js
@@ -0,0 +1,13 @@
+class Foo {
+ async foo() {}
+ foo() {}
+ ["foo"]() {}
+ get foo() {}
+ set foo(bar) {}
+
+ static async foo() {}
+ static foo() {}
+ static ["foo"]() {}
+ static get foo() {}
+ static set foo(bar) {}
+}
diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js
new file mode 100644
index 0000000000..1e431aa75b
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js
@@ -0,0 +1,13 @@
+class Foo {
+ async foo() {}
+ foo() {}
+ ["foo"]() {}
+ get foo() {}
+ set foo(bar) {}
+
+ static async foo() {}
+ static foo() {}
+ static ["foo"]() {}
+ static get foo() {}
+ static set foo(bar) {}
+}
diff --git a/packages/babel-generator/test/fixtures/types/ClassDeclaration/actual.js b/packages/babel-generator/test/fixtures/types/ClassDeclaration/actual.js
new file mode 100644
index 0000000000..072c7c10e6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ClassDeclaration/actual.js
@@ -0,0 +1,2 @@
+var foo = class Foo {};
+var foo = class Foo extends Bar {};
diff --git a/packages/babel-generator/test/fixtures/types/ClassDeclaration/expected.js b/packages/babel-generator/test/fixtures/types/ClassDeclaration/expected.js
new file mode 100644
index 0000000000..072c7c10e6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ClassDeclaration/expected.js
@@ -0,0 +1,2 @@
+var foo = class Foo {};
+var foo = class Foo extends Bar {};
diff --git a/packages/babel-generator/test/fixtures/types/ClassExpression/actual.js b/packages/babel-generator/test/fixtures/types/ClassExpression/actual.js
new file mode 100644
index 0000000000..1931f1faea
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ClassExpression/actual.js
@@ -0,0 +1,2 @@
+class Foo {}
+class Foo extends Bar {}
diff --git a/packages/babel-generator/test/fixtures/types/ClassExpression/expected.js b/packages/babel-generator/test/fixtures/types/ClassExpression/expected.js
new file mode 100644
index 0000000000..1931f1faea
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ClassExpression/expected.js
@@ -0,0 +1,2 @@
+class Foo {}
+class Foo extends Bar {}
diff --git a/packages/babel-generator/test/fixtures/types/ConditionalExpression/actual.js b/packages/babel-generator/test/fixtures/types/ConditionalExpression/actual.js
new file mode 100644
index 0000000000..58ab924af4
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ConditionalExpression/actual.js
@@ -0,0 +1 @@
+foo ? foo : bar;
diff --git a/packages/babel-generator/test/fixtures/types/ConditionalExpression/expected.js b/packages/babel-generator/test/fixtures/types/ConditionalExpression/expected.js
new file mode 100644
index 0000000000..58ab924af4
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ConditionalExpression/expected.js
@@ -0,0 +1 @@
+foo ? foo : bar;
diff --git a/packages/babel-generator/test/fixtures/types/ContinueStatement/actual.js b/packages/babel-generator/test/fixtures/types/ContinueStatement/actual.js
new file mode 100644
index 0000000000..593fe2c367
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ContinueStatement/actual.js
@@ -0,0 +1,7 @@
+for (var i in foo) {
+ continue;
+}
+
+foo: for (var i in foo) {
+ continue foo;
+}
diff --git a/packages/babel-generator/test/fixtures/types/ContinueStatement/expected.js b/packages/babel-generator/test/fixtures/types/ContinueStatement/expected.js
new file mode 100644
index 0000000000..593fe2c367
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ContinueStatement/expected.js
@@ -0,0 +1,7 @@
+for (var i in foo) {
+ continue;
+}
+
+foo: for (var i in foo) {
+ continue foo;
+}
diff --git a/packages/babel-generator/test/fixtures/types/DebuggerStatement/actual.js b/packages/babel-generator/test/fixtures/types/DebuggerStatement/actual.js
new file mode 100644
index 0000000000..eab7469213
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/DebuggerStatement/actual.js
@@ -0,0 +1 @@
+debugger;
diff --git a/packages/babel-generator/test/fixtures/types/DebuggerStatement/expected.js b/packages/babel-generator/test/fixtures/types/DebuggerStatement/expected.js
new file mode 100644
index 0000000000..eab7469213
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/DebuggerStatement/expected.js
@@ -0,0 +1 @@
+debugger;
diff --git a/packages/babel-generator/test/fixtures/types/Decorator/actual.js b/packages/babel-generator/test/fixtures/types/Decorator/actual.js
new file mode 100644
index 0000000000..d0b6d43621
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/Decorator/actual.js
@@ -0,0 +1,31 @@
+var obj = {
+ @foo
+ @bar
+ foo: "bar",
+
+ @foo
+ @bar
+ foo() {},
+
+ @foo
+ get foo() {},
+
+ @bar
+ set bar(foo) {}
+};
+
+class Foo {
+ @foo
+ @bar
+ foo() {}
+
+ @foo
+ @bar
+ foo() {}
+
+ @foo
+ get foo() {}
+
+ @bar
+ set bar(foo) {}
+}
diff --git a/packages/babel-generator/test/fixtures/types/Decorator/expected.js b/packages/babel-generator/test/fixtures/types/Decorator/expected.js
new file mode 100644
index 0000000000..d0b6d43621
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/Decorator/expected.js
@@ -0,0 +1,31 @@
+var obj = {
+ @foo
+ @bar
+ foo: "bar",
+
+ @foo
+ @bar
+ foo() {},
+
+ @foo
+ get foo() {},
+
+ @bar
+ set bar(foo) {}
+};
+
+class Foo {
+ @foo
+ @bar
+ foo() {}
+
+ @foo
+ @bar
+ foo() {}
+
+ @foo
+ get foo() {}
+
+ @bar
+ set bar(foo) {}
+}
diff --git a/packages/babel-generator/test/fixtures/types/DoWhileStatement/actual.js b/packages/babel-generator/test/fixtures/types/DoWhileStatement/actual.js
new file mode 100644
index 0000000000..c567c9b0c5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/DoWhileStatement/actual.js
@@ -0,0 +1,5 @@
+do {
+ test();
+} while (true);
+
+do {} while (true);
diff --git a/packages/babel-generator/test/fixtures/types/DoWhileStatement/expected.js b/packages/babel-generator/test/fixtures/types/DoWhileStatement/expected.js
new file mode 100644
index 0000000000..c567c9b0c5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/DoWhileStatement/expected.js
@@ -0,0 +1,5 @@
+do {
+ test();
+} while (true);
+
+do {} while (true);
diff --git a/packages/babel-generator/test/fixtures/types/EmptyStatement/actual.js b/packages/babel-generator/test/fixtures/types/EmptyStatement/actual.js
new file mode 100644
index 0000000000..092bc2b041
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/EmptyStatement/actual.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/EmptyStatement/expected.js b/packages/babel-generator/test/fixtures/types/EmptyStatement/expected.js
new file mode 100644
index 0000000000..092bc2b041
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/EmptyStatement/expected.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/actual.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/actual.js
new file mode 100644
index 0000000000..288b335663
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/actual.js
@@ -0,0 +1,31 @@
+export default 42;
+export default {};
+export default [];
+export default foo;
+export default function () {}
+export default class {}
+export default function foo() {}
+export default class Foo {}
+export * from "foo";
+export * as foo from "foo";
+export foo from "foo";
+export * as foo, { bar } from "foo";
+export foo, { bar } from "foo";
+export { foo } from "foo";
+export { foo, bar } from "foo";
+export { foo as bar } from "foo";
+export { foo as default } from "foo";
+export { foo as default, bar } from "foo";
+export { foo };
+export { foo, bar };
+export { foo as bar };
+export { foo as default };
+export { foo as default, bar };
+export var foo = 1;
+export var foo2 = function () {};
+export var foo3;
+export let foo4 = 2;
+export let foo5;
+export const foo6 = 3;
+export function foo7() {}
+export class foo8 {}
diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/expected.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/expected.js
new file mode 100644
index 0000000000..288b335663
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/expected.js
@@ -0,0 +1,31 @@
+export default 42;
+export default {};
+export default [];
+export default foo;
+export default function () {}
+export default class {}
+export default function foo() {}
+export default class Foo {}
+export * from "foo";
+export * as foo from "foo";
+export foo from "foo";
+export * as foo, { bar } from "foo";
+export foo, { bar } from "foo";
+export { foo } from "foo";
+export { foo, bar } from "foo";
+export { foo as bar } from "foo";
+export { foo as default } from "foo";
+export { foo as default, bar } from "foo";
+export { foo };
+export { foo, bar };
+export { foo as bar };
+export { foo as default };
+export { foo as default, bar };
+export var foo = 1;
+export var foo2 = function () {};
+export var foo3;
+export let foo4 = 2;
+export let foo5;
+export const foo6 = 3;
+export function foo7() {}
+export class foo8 {}
diff --git a/packages/babel-generator/test/fixtures/types/ForInStatement/actual.js b/packages/babel-generator/test/fixtures/types/ForInStatement/actual.js
new file mode 100644
index 0000000000..f767fe3b0f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ForInStatement/actual.js
@@ -0,0 +1,5 @@
+for (var i in nums) {}
+
+for (var i in nums) {
+ nums[i] = nums[i] * nums[i];
+}
diff --git a/packages/babel-generator/test/fixtures/types/ForInStatement/expected.js b/packages/babel-generator/test/fixtures/types/ForInStatement/expected.js
new file mode 100644
index 0000000000..f767fe3b0f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ForInStatement/expected.js
@@ -0,0 +1,5 @@
+for (var i in nums) {}
+
+for (var i in nums) {
+ nums[i] = nums[i] * nums[i];
+}
diff --git a/packages/babel-generator/test/fixtures/types/ForOfStatement/actual.js b/packages/babel-generator/test/fixtures/types/ForOfStatement/actual.js
new file mode 100644
index 0000000000..190da9ebfa
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ForOfStatement/actual.js
@@ -0,0 +1,5 @@
+for (var x of nums) {}
+
+for (var x of nums) {
+ console.log(x * x);
+}
diff --git a/packages/babel-generator/test/fixtures/types/ForOfStatement/expected.js b/packages/babel-generator/test/fixtures/types/ForOfStatement/expected.js
new file mode 100644
index 0000000000..190da9ebfa
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ForOfStatement/expected.js
@@ -0,0 +1,5 @@
+for (var x of nums) {}
+
+for (var x of nums) {
+ console.log(x * x);
+}
diff --git a/packages/babel-generator/test/fixtures/types/ForStatement/actual.js b/packages/babel-generator/test/fixtures/types/ForStatement/actual.js
new file mode 100644
index 0000000000..1f82486abe
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ForStatement/actual.js
@@ -0,0 +1,3 @@
+for (var i = 0;;) {}
+for (var i = 0; i < 5;) {}
+for (var i = 0; i < 5; i++) {}
diff --git a/packages/babel-generator/test/fixtures/types/ForStatement/expected.js b/packages/babel-generator/test/fixtures/types/ForStatement/expected.js
new file mode 100644
index 0000000000..1f82486abe
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ForStatement/expected.js
@@ -0,0 +1,3 @@
+for (var i = 0;;) {}
+for (var i = 0; i < 5;) {}
+for (var i = 0; i < 5; i++) {}
diff --git a/packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/actual.js b/packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/actual.js
new file mode 100644
index 0000000000..3b31e93eb7
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/actual.js
@@ -0,0 +1,23 @@
+function foo(bar = "bar") {}
+
+function foo(bar = "bar", ...items) {}
+
+function foo(...items) {}
+
+function* foo() {}
+
+function foo() {}
+
+async function foo() {}
+
+var foo = function* foo() {};
+
+var foo = function foo() {};
+
+var foo = async function foo() {};
+
+var foo = function* () {};
+
+var foo = function () {};
+
+var foo = async function () {};
diff --git a/packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/expected.js b/packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/expected.js
new file mode 100644
index 0000000000..3b31e93eb7
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/FunctionDeclaration-FunctionExpression/expected.js
@@ -0,0 +1,23 @@
+function foo(bar = "bar") {}
+
+function foo(bar = "bar", ...items) {}
+
+function foo(...items) {}
+
+function* foo() {}
+
+function foo() {}
+
+async function foo() {}
+
+var foo = function* foo() {};
+
+var foo = function foo() {};
+
+var foo = async function foo() {};
+
+var foo = function* () {};
+
+var foo = function () {};
+
+var foo = async function () {};
diff --git a/packages/babel-generator/test/fixtures/types/Identifier/actual.js b/packages/babel-generator/test/fixtures/types/Identifier/actual.js
new file mode 100644
index 0000000000..ef20d940c5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/Identifier/actual.js
@@ -0,0 +1,2 @@
+foo;
+undefined;
diff --git a/packages/babel-generator/test/fixtures/types/Identifier/expected.js b/packages/babel-generator/test/fixtures/types/Identifier/expected.js
new file mode 100644
index 0000000000..ef20d940c5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/Identifier/expected.js
@@ -0,0 +1,2 @@
+foo;
+undefined;
diff --git a/packages/babel-generator/test/fixtures/types/IfStatement/actual.js b/packages/babel-generator/test/fixtures/types/IfStatement/actual.js
new file mode 100644
index 0000000000..4631d3503f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/IfStatement/actual.js
@@ -0,0 +1,25 @@
+if (foo) foobar();
+
+if (foo) {
+ foobar();
+}
+
+if (foo) {}
+
+if (foo) {
+ foo();
+} else bar();
+
+if (foo) {
+ foo();
+} else {
+ bar();
+}
+
+if (foo) {
+ foo();
+} else if (bar) {
+ foobar();
+} else {
+ bar();
+}
diff --git a/packages/babel-generator/test/fixtures/types/IfStatement/expected.js b/packages/babel-generator/test/fixtures/types/IfStatement/expected.js
new file mode 100644
index 0000000000..4631d3503f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/IfStatement/expected.js
@@ -0,0 +1,25 @@
+if (foo) foobar();
+
+if (foo) {
+ foobar();
+}
+
+if (foo) {}
+
+if (foo) {
+ foo();
+} else bar();
+
+if (foo) {
+ foo();
+} else {
+ bar();
+}
+
+if (foo) {
+ foo();
+} else if (bar) {
+ foobar();
+} else {
+ bar();
+}
diff --git a/packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/actual.js b/packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/actual.js
new file mode 100644
index 0000000000..b7a4a4b9fd
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/actual.js
@@ -0,0 +1,9 @@
+import "foo";
+import foo from "foo";
+import { default as foo } from "foo";
+import * as foo from "foo";
+import foo, { baz as xyz } from "foo";
+import { bar } from "foo";
+import { bar, baz } from "foo";
+import { bar as baz } from "foo";
+import { bar as baz, xyz } from "foo";
diff --git a/packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/expected.js b/packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/expected.js
new file mode 100644
index 0000000000..b7a4a4b9fd
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/expected.js
@@ -0,0 +1,9 @@
+import "foo";
+import foo from "foo";
+import { default as foo } from "foo";
+import * as foo from "foo";
+import foo, { baz as xyz } from "foo";
+import { bar } from "foo";
+import { bar, baz } from "foo";
+import { bar as baz } from "foo";
+import { bar as baz, xyz } from "foo";
diff --git a/packages/babel-generator/test/fixtures/types/LabeledStatement/actual.js b/packages/babel-generator/test/fixtures/types/LabeledStatement/actual.js
new file mode 100644
index 0000000000..2846749406
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/LabeledStatement/actual.js
@@ -0,0 +1 @@
+label: for (var i in test) {}
diff --git a/packages/babel-generator/test/fixtures/types/LabeledStatement/expected.js b/packages/babel-generator/test/fixtures/types/LabeledStatement/expected.js
new file mode 100644
index 0000000000..2846749406
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/LabeledStatement/expected.js
@@ -0,0 +1 @@
+label: for (var i in test) {}
diff --git a/packages/babel-generator/test/fixtures/types/Literal/actual.js b/packages/babel-generator/test/fixtures/types/Literal/actual.js
new file mode 100644
index 0000000000..6bd9f84a96
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/Literal/actual.js
@@ -0,0 +1,12 @@
+5;
+5.0;
+"foobar";
+"\n\r\u2028\u2029";
+/foobar/g;
+null;
+true;
+false;
+5.;
+0b10;
+0o70;
+0X1F;
diff --git a/packages/babel-generator/test/fixtures/types/Literal/expected.js b/packages/babel-generator/test/fixtures/types/Literal/expected.js
new file mode 100644
index 0000000000..6bd9f84a96
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/Literal/expected.js
@@ -0,0 +1,12 @@
+5;
+5.0;
+"foobar";
+"\n\r\u2028\u2029";
+/foobar/g;
+null;
+true;
+false;
+5.;
+0b10;
+0o70;
+0X1F;
diff --git a/packages/babel-generator/test/fixtures/types/MemberExpression/actual.js b/packages/babel-generator/test/fixtures/types/MemberExpression/actual.js
new file mode 100644
index 0000000000..b1b488aa12
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/MemberExpression/actual.js
@@ -0,0 +1,11 @@
+foo["bar"];
+foo.bar;
+
+foo.bar.foo;
+foo.bar["foo"];
+
+foo["foo"]["bar"];
+foo[test()][bar()];
+
+0..toString();
+0.5.toString();
diff --git a/packages/babel-generator/test/fixtures/types/MemberExpression/expected.js b/packages/babel-generator/test/fixtures/types/MemberExpression/expected.js
new file mode 100644
index 0000000000..b1b488aa12
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/MemberExpression/expected.js
@@ -0,0 +1,11 @@
+foo["bar"];
+foo.bar;
+
+foo.bar.foo;
+foo.bar["foo"];
+
+foo["foo"]["bar"];
+foo[test()][bar()];
+
+0..toString();
+0.5.toString();
diff --git a/packages/babel-generator/test/fixtures/types/NewExpression/actual.js b/packages/babel-generator/test/fixtures/types/NewExpression/actual.js
new file mode 100644
index 0000000000..2e4ccdb39d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/NewExpression/actual.js
@@ -0,0 +1,3 @@
+new Foo;
+new Foo();
+new Foo(bar);
diff --git a/packages/babel-generator/test/fixtures/types/NewExpression/expected.js b/packages/babel-generator/test/fixtures/types/NewExpression/expected.js
new file mode 100644
index 0000000000..962d55bf72
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/NewExpression/expected.js
@@ -0,0 +1,3 @@
+new Foo();
+new Foo();
+new Foo(bar);
diff --git a/packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/actual.js b/packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/actual.js
new file mode 100644
index 0000000000..5dff240f1e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/actual.js
@@ -0,0 +1,20 @@
+var foo = {};
+
+var foo = { x, y };
+
+var foo = { x: x, y: y };
+
+var foo = {
+ x: x,
+ y: y
+};
+
+var foo = {
+ ["bar"]: "foo",
+ ["foo"]() {},
+ foo() {},
+ async foo() {},
+ *foo() {},
+ get foo() {},
+ set foo(foo) {}
+};
diff --git a/packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/expected.js b/packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/expected.js
new file mode 100644
index 0000000000..5dff240f1e
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ObjectExpression-ObjectPattern-Property/expected.js
@@ -0,0 +1,20 @@
+var foo = {};
+
+var foo = { x, y };
+
+var foo = { x: x, y: y };
+
+var foo = {
+ x: x,
+ y: y
+};
+
+var foo = {
+ ["bar"]: "foo",
+ ["foo"]() {},
+ foo() {},
+ async foo() {},
+ *foo() {},
+ get foo() {},
+ set foo(foo) {}
+};
diff --git a/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js b/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js
new file mode 100644
index 0000000000..404a7c2e64
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ReturnStatement/actual.js
@@ -0,0 +1,7 @@
+function foo() {
+ return;
+}
+
+function bar() {
+ return "foo";
+}
diff --git a/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js b/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js
new file mode 100644
index 0000000000..404a7c2e64
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ReturnStatement/expected.js
@@ -0,0 +1,7 @@
+function foo() {
+ return;
+}
+
+function bar() {
+ return "foo";
+}
diff --git a/packages/babel-generator/test/fixtures/types/SequenceExpression/actual.js b/packages/babel-generator/test/fixtures/types/SequenceExpression/actual.js
new file mode 100644
index 0000000000..df1a8bc422
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/SequenceExpression/actual.js
@@ -0,0 +1,4 @@
+foo, bar;
+
+foo,
+bar;
diff --git a/packages/babel-generator/test/fixtures/types/SequenceExpression/expected.js b/packages/babel-generator/test/fixtures/types/SequenceExpression/expected.js
new file mode 100644
index 0000000000..8a6b86f823
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/SequenceExpression/expected.js
@@ -0,0 +1,3 @@
+foo, bar;
+
+foo, bar;
diff --git a/packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/actual.js b/packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/actual.js
new file mode 100644
index 0000000000..7a9e438858
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/actual.js
@@ -0,0 +1,3 @@
+[...foo];
+foo(bar, ...items);
+new Foo(...foo);
diff --git a/packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/expected.js b/packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/expected.js
new file mode 100644
index 0000000000..7a9e438858
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/SpreadElement-SpreadProperty/expected.js
@@ -0,0 +1,3 @@
+[...foo];
+foo(bar, ...items);
+new Foo(...foo);
diff --git a/packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/actual.js b/packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/actual.js
new file mode 100644
index 0000000000..dbfef765fe
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/actual.js
@@ -0,0 +1,39 @@
+switch (foo) {}
+
+switch (foo) {
+ case "foo":
+}
+
+switch (foo) {
+ default:
+}
+
+switch (foo) {
+ case "foo":
+ default:
+}
+
+switch (foo) {
+ case "foo":
+ case "bar":
+ default:
+}
+
+switch (foo) {
+ case "foo":
+ foo();
+ break;
+
+ case "bar":
+ bar();
+ break;
+
+ default:
+ yay();
+}
+
+switch (foo) {
+ case "foo": foo();
+ case "bar": bar();
+ default: yay();
+}
diff --git a/packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/expected.js b/packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/expected.js
new file mode 100644
index 0000000000..3fee51a4d2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/SwitchStatement-SwitchCase/expected.js
@@ -0,0 +1,42 @@
+switch (foo) {}
+
+switch (foo) {
+ case "foo":
+}
+
+switch (foo) {
+ default:
+}
+
+switch (foo) {
+ case "foo":
+ default:
+}
+
+switch (foo) {
+ case "foo":
+ case "bar":
+ default:
+}
+
+switch (foo) {
+ case "foo":
+ foo();
+ break;
+
+ case "bar":
+ bar();
+ break;
+
+ default:
+ yay();
+}
+
+switch (foo) {
+ case "foo":
+ foo();
+ case "bar":
+ bar();
+ default:
+ yay();
+}
diff --git a/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/actual.js b/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/actual.js
new file mode 100644
index 0000000000..455ed642b5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/actual.js
@@ -0,0 +1,12 @@
+html``;
+
+`multi
+ lines`;
+
+`test ${ interpolation } test`;
+
+`foob
+
+ asdf
+awer
+ erqer`;
diff --git a/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js b/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
new file mode 100644
index 0000000000..455ed642b5
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
@@ -0,0 +1,12 @@
+html``;
+
+`multi
+ lines`;
+
+`test ${ interpolation } test`;
+
+`foob
+
+ asdf
+awer
+ erqer`;
diff --git a/packages/babel-generator/test/fixtures/types/ThisExpression/actual.js b/packages/babel-generator/test/fixtures/types/ThisExpression/actual.js
new file mode 100644
index 0000000000..0ce825c42a
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ThisExpression/actual.js
@@ -0,0 +1,5 @@
+this;
+this.foo;
+this["foo"];
+this.foo();
+this["foo"]();
diff --git a/packages/babel-generator/test/fixtures/types/ThisExpression/expected.js b/packages/babel-generator/test/fixtures/types/ThisExpression/expected.js
new file mode 100644
index 0000000000..0ce825c42a
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ThisExpression/expected.js
@@ -0,0 +1,5 @@
+this;
+this.foo;
+this["foo"];
+this.foo();
+this["foo"]();
diff --git a/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js b/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js
new file mode 100644
index 0000000000..15dd4fc7b2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ThrowStatement/actual.js
@@ -0,0 +1,3 @@
+throw err;
+throw Error("foobar");
+throw new Error("foobar");
diff --git a/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js b/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js
new file mode 100644
index 0000000000..15dd4fc7b2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/ThrowStatement/expected.js
@@ -0,0 +1,3 @@
+throw err;
+throw Error("foobar");
+throw new Error("foobar");
diff --git a/packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/actual.js b/packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/actual.js
new file mode 100644
index 0000000000..95717a83b6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/actual.js
@@ -0,0 +1,25 @@
+try {} catch (err) {}
+
+try {
+ bar;
+} catch (err) {}
+
+try {
+ bar;
+} catch (err) {
+ foo();
+}
+
+try {
+ bar;
+} catch (err) {
+ foo();
+} finally {
+ yay();
+}
+
+try {
+ bar;
+} catch (err) {
+ foo();
+} finally {}
diff --git a/packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/expected.js b/packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/expected.js
new file mode 100644
index 0000000000..95717a83b6
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/TryStatement-CatchClause/expected.js
@@ -0,0 +1,25 @@
+try {} catch (err) {}
+
+try {
+ bar;
+} catch (err) {}
+
+try {
+ bar;
+} catch (err) {
+ foo();
+}
+
+try {
+ bar;
+} catch (err) {
+ foo();
+} finally {
+ yay();
+}
+
+try {
+ bar;
+} catch (err) {
+ foo();
+} finally {}
diff --git a/packages/babel-generator/test/fixtures/types/UnaryExpression/actual.js b/packages/babel-generator/test/fixtures/types/UnaryExpression/actual.js
new file mode 100644
index 0000000000..9f318cdb1f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/UnaryExpression/actual.js
@@ -0,0 +1,5 @@
+delete delete i;
++ +i;
+!!i;
++ ++i;
+- --i;
diff --git a/packages/babel-generator/test/fixtures/types/UnaryExpression/expected.js b/packages/babel-generator/test/fixtures/types/UnaryExpression/expected.js
new file mode 100644
index 0000000000..9f318cdb1f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/UnaryExpression/expected.js
@@ -0,0 +1,5 @@
+delete delete i;
++ +i;
+!!i;
++ ++i;
+- --i;
diff --git a/packages/babel-generator/test/fixtures/types/UpdateExpression/actual.js b/packages/babel-generator/test/fixtures/types/UpdateExpression/actual.js
new file mode 100644
index 0000000000..0aba7be1a0
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/UpdateExpression/actual.js
@@ -0,0 +1,3 @@
+++i;
+i++;
+(foo++).test();
diff --git a/packages/babel-generator/test/fixtures/types/UpdateExpression/expected.js b/packages/babel-generator/test/fixtures/types/UpdateExpression/expected.js
new file mode 100644
index 0000000000..0aba7be1a0
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/UpdateExpression/expected.js
@@ -0,0 +1,3 @@
+++i;
+i++;
+(foo++).test();
diff --git a/packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/actual.js b/packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/actual.js
new file mode 100644
index 0000000000..ede42c53ec
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/actual.js
@@ -0,0 +1,13 @@
+let foo;
+var foo;
+
+let foo = "foo";
+var foo = "bar";
+const foo = "foo";
+
+let foo, bar = "bar";
+var foo, bar = "bar";
+
+let foo = "foo", bar = "bar";
+var foo = "foo", bar = "bar";
+const foo = "foo", bar = "bar";
diff --git a/packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/expected.js b/packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/expected.js
new file mode 100644
index 0000000000..487fff2ae2
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/VariableDeclaration-VariableDeclarator/expected.js
@@ -0,0 +1,18 @@
+let foo;
+var foo;
+
+let foo = "foo";
+var foo = "bar";
+const foo = "foo";
+
+let foo,
+ bar = "bar";
+var foo,
+ bar = "bar";
+
+let foo = "foo",
+ bar = "bar";
+var foo = "foo",
+ bar = "bar";
+const foo = "foo",
+ bar = "bar";
diff --git a/packages/babel-generator/test/fixtures/types/WhileStatement/actual.js b/packages/babel-generator/test/fixtures/types/WhileStatement/actual.js
new file mode 100644
index 0000000000..616c1dcd45
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/WhileStatement/actual.js
@@ -0,0 +1,5 @@
+while (foo) {}
+
+while (foo) {
+ bar();
+}
diff --git a/packages/babel-generator/test/fixtures/types/WhileStatement/expected.js b/packages/babel-generator/test/fixtures/types/WhileStatement/expected.js
new file mode 100644
index 0000000000..616c1dcd45
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/WhileStatement/expected.js
@@ -0,0 +1,5 @@
+while (foo) {}
+
+while (foo) {
+ bar();
+}
diff --git a/packages/babel-generator/test/fixtures/types/WithStatement/actual.js b/packages/babel-generator/test/fixtures/types/WithStatement/actual.js
new file mode 100644
index 0000000000..eb30b5f541
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/WithStatement/actual.js
@@ -0,0 +1,5 @@
+with (foo) {}
+
+with (foo) {
+ bar();
+}
diff --git a/packages/babel-generator/test/fixtures/types/WithStatement/expected.js b/packages/babel-generator/test/fixtures/types/WithStatement/expected.js
new file mode 100644
index 0000000000..eb30b5f541
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/WithStatement/expected.js
@@ -0,0 +1,5 @@
+with (foo) {}
+
+with (foo) {
+ bar();
+}
diff --git a/packages/babel-generator/test/fixtures/types/XJSAttribute/actual.js b/packages/babel-generator/test/fixtures/types/XJSAttribute/actual.js
new file mode 100644
index 0000000000..ff8711dc2f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSAttribute/actual.js
@@ -0,0 +1,7 @@
+;
+
+text
;
+
+;
+
+text
;
diff --git a/packages/babel-generator/test/fixtures/types/XJSAttribute/expected.js b/packages/babel-generator/test/fixtures/types/XJSAttribute/expected.js
new file mode 100644
index 0000000000..ff8711dc2f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSAttribute/expected.js
@@ -0,0 +1,7 @@
+;
+
+text
;
+
+;
+
+text
;
diff --git a/packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/actual.js b/packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/actual.js
new file mode 100644
index 0000000000..4ef54fa621
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/actual.js
@@ -0,0 +1,5 @@
+;
+
+;
+
+text
;
diff --git a/packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/expected.js b/packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/expected.js
new file mode 100644
index 0000000000..4ef54fa621
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/expected.js
@@ -0,0 +1,5 @@
+;
+
+;
+
+text
;
diff --git a/packages/babel-generator/test/fixtures/types/XJSEmptyExpression/actual.js b/packages/babel-generator/test/fixtures/types/XJSEmptyExpression/actual.js
new file mode 100644
index 0000000000..a7a4a7e533
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSEmptyExpression/actual.js
@@ -0,0 +1 @@
+{};
diff --git a/packages/babel-generator/test/fixtures/types/XJSEmptyExpression/expected.js b/packages/babel-generator/test/fixtures/types/XJSEmptyExpression/expected.js
new file mode 100644
index 0000000000..a7a4a7e533
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSEmptyExpression/expected.js
@@ -0,0 +1 @@
+{};
diff --git a/packages/babel-generator/test/fixtures/types/XJSExpressionContainer/actual.js b/packages/babel-generator/test/fixtures/types/XJSExpressionContainer/actual.js
new file mode 100644
index 0000000000..b7c8a18a62
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSExpressionContainer/actual.js
@@ -0,0 +1 @@
+{this.props.children}
;
diff --git a/packages/babel-generator/test/fixtures/types/XJSExpressionContainer/expected.js b/packages/babel-generator/test/fixtures/types/XJSExpressionContainer/expected.js
new file mode 100644
index 0000000000..b7c8a18a62
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSExpressionContainer/expected.js
@@ -0,0 +1 @@
+{this.props.children}
;
diff --git a/packages/babel-generator/test/fixtures/types/XJSMemberExpression/actual.js b/packages/babel-generator/test/fixtures/types/XJSMemberExpression/actual.js
new file mode 100644
index 0000000000..875ffe4f32
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSMemberExpression/actual.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/XJSMemberExpression/expected.js b/packages/babel-generator/test/fixtures/types/XJSMemberExpression/expected.js
new file mode 100644
index 0000000000..875ffe4f32
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSMemberExpression/expected.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/XJSNamespacedName/actual.js b/packages/babel-generator/test/fixtures/types/XJSNamespacedName/actual.js
new file mode 100644
index 0000000000..33efe268cf
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSNamespacedName/actual.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/XJSNamespacedName/expected.js b/packages/babel-generator/test/fixtures/types/XJSNamespacedName/expected.js
new file mode 100644
index 0000000000..33efe268cf
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSNamespacedName/expected.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/actual.js b/packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/actual.js
new file mode 100644
index 0000000000..82aa5eb72d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/actual.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/expected.js b/packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/expected.js
new file mode 100644
index 0000000000..82aa5eb72d
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/XJSSpreadAttribute/expected.js
@@ -0,0 +1 @@
+;
diff --git a/packages/babel-generator/test/fixtures/types/YieldExpression/actual.js b/packages/babel-generator/test/fixtures/types/YieldExpression/actual.js
new file mode 100644
index 0000000000..b37159854f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/YieldExpression/actual.js
@@ -0,0 +1,7 @@
+function* foo() {
+ yield bar;
+}
+
+function* bar() {
+ yield* foo();
+}
diff --git a/packages/babel-generator/test/fixtures/types/YieldExpression/expected.js b/packages/babel-generator/test/fixtures/types/YieldExpression/expected.js
new file mode 100644
index 0000000000..b37159854f
--- /dev/null
+++ b/packages/babel-generator/test/fixtures/types/YieldExpression/expected.js
@@ -0,0 +1,7 @@
+function* foo() {
+ yield bar;
+}
+
+function* bar() {
+ yield* foo();
+}
diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js
new file mode 100644
index 0000000000..2eb653eea9
--- /dev/null
+++ b/packages/babel-generator/test/index.js
@@ -0,0 +1,49 @@
+var generate = require("../lib");
+var assert = require("assert");
+var parse = require("babylon").parse;
+var chai = require("chai");
+var t = require("babel-types");
+var _ = require("lodash");
+
+suite("generation", function () {
+ test("completeness", function () {
+ _.each(t.VISITOR_KEYS, function (keys, type) {
+ assert.ok(!!generate.CodeGenerator.prototype[type], type + " should exist");
+ });
+
+ _.each(generate.CodeGenerator.prototype, function (fn, type) {
+ if (!/[A-Z]/.test(type[0])) return;
+ assert.ok(t.VISITOR_KEYS[type], type + " should not exist");
+ });
+ });
+});
+
+var suites = require("babel-helper-fixtures")(__dirname + "/fixtures");
+
+suites.forEach(function (testSuite) {
+ suite("generation/" + testSuite.title, function () {
+ _.each(testSuite.tests, function (task) {
+ test(task.title, !task.disabled && function () {
+ var expect = task.expect;
+ var actual = task.actual;
+
+ var actualAst = parse(actual.code, {
+ filename: actual.loc,
+ plugins: [
+ "jsx",
+ "flow",
+ "decorators",
+ "asyncFunctions",
+ "exportExtensions",
+ "functionBind",
+ ],
+ strictMode: false,
+ sourceType: "module",
+ });
+
+ var actualCode = generate.default(actualAst, task.options, actual.code).code;
+ chai.expect(actualCode).to.equal(expect.code, actual.loc + " !== " + expect.loc);
+ });
+ });
+ });
+});
From 9113542b12008d58fab53af916f13d2c2d074a3b Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:37:49 +0100
Subject: [PATCH 130/174] add syntax plugins
---
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../babel-plugin-syntax-decorators/.npmignore | 3 ++
.../babel-plugin-syntax-decorators/README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../babel-plugin-syntax-flow/src/index.js | 6 +---
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
packages/babel-plugin-syntax-jsx/src/index.js | 2 +-
.../.npmignore | 3 ++
.../README.md | 35 +++++++++++++++++++
.../package.json | 11 ++++++
.../src/index.js | 7 ++++
.../src/index.js | 2 +-
35 files changed, 451 insertions(+), 7 deletions(-)
create mode 100644 packages/babel-plugin-syntax-async-functions/.npmignore
create mode 100644 packages/babel-plugin-syntax-async-functions/README.md
create mode 100644 packages/babel-plugin-syntax-async-functions/package.json
create mode 100644 packages/babel-plugin-syntax-async-functions/src/index.js
create mode 100644 packages/babel-plugin-syntax-class-properties/.npmignore
create mode 100644 packages/babel-plugin-syntax-class-properties/README.md
create mode 100644 packages/babel-plugin-syntax-class-properties/package.json
create mode 100644 packages/babel-plugin-syntax-class-properties/src/index.js
create mode 100644 packages/babel-plugin-syntax-decorators/.npmignore
create mode 100644 packages/babel-plugin-syntax-decorators/README.md
create mode 100644 packages/babel-plugin-syntax-decorators/package.json
create mode 100644 packages/babel-plugin-syntax-decorators/src/index.js
create mode 100644 packages/babel-plugin-syntax-do-expressions/.npmignore
create mode 100644 packages/babel-plugin-syntax-do-expressions/README.md
create mode 100644 packages/babel-plugin-syntax-do-expressions/package.json
create mode 100644 packages/babel-plugin-syntax-do-expressions/src/index.js
create mode 100644 packages/babel-plugin-syntax-exponentiation-operator/.npmignore
create mode 100644 packages/babel-plugin-syntax-exponentiation-operator/README.md
create mode 100644 packages/babel-plugin-syntax-exponentiation-operator/package.json
create mode 100644 packages/babel-plugin-syntax-exponentiation-operator/src/index.js
create mode 100644 packages/babel-plugin-syntax-export-extensions/.npmignore
create mode 100644 packages/babel-plugin-syntax-export-extensions/README.md
create mode 100644 packages/babel-plugin-syntax-export-extensions/package.json
create mode 100644 packages/babel-plugin-syntax-export-extensions/src/index.js
create mode 100644 packages/babel-plugin-syntax-function-bind/.npmignore
create mode 100644 packages/babel-plugin-syntax-function-bind/README.md
create mode 100644 packages/babel-plugin-syntax-function-bind/package.json
create mode 100644 packages/babel-plugin-syntax-function-bind/src/index.js
create mode 100644 packages/babel-plugin-syntax-object-rest-spread/.npmignore
create mode 100644 packages/babel-plugin-syntax-object-rest-spread/README.md
create mode 100644 packages/babel-plugin-syntax-object-rest-spread/package.json
create mode 100644 packages/babel-plugin-syntax-object-rest-spread/src/index.js
diff --git a/packages/babel-plugin-syntax-async-functions/.npmignore b/packages/babel-plugin-syntax-async-functions/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-async-functions/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-async-functions/README.md b/packages/babel-plugin-syntax-async-functions/README.md
new file mode 100644
index 0000000000..a2c13f519d
--- /dev/null
+++ b/packages/babel-plugin-syntax-async-functions/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-async-functions
+
+Allow parsing of async functions.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-async-functions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-async-functions"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-async-functions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-async-functions"]
+});
+```
diff --git a/packages/babel-plugin-syntax-async-functions/package.json b/packages/babel-plugin-syntax-async-functions/package.json
new file mode 100644
index 0000000000..9fce60af41
--- /dev/null
+++ b/packages/babel-plugin-syntax-async-functions/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-async-functions",
+ "version": "1.0.0",
+ "description": "Allow parsing of async functions",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-async-functions/src/index.js b/packages/babel-plugin-syntax-async-functions/src/index.js
new file mode 100644
index 0000000000..a95134d839
--- /dev/null
+++ b/packages/babel-plugin-syntax-async-functions/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("asyncFunctions");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-class-properties/.npmignore b/packages/babel-plugin-syntax-class-properties/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-class-properties/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-class-properties/README.md b/packages/babel-plugin-syntax-class-properties/README.md
new file mode 100644
index 0000000000..970049b47a
--- /dev/null
+++ b/packages/babel-plugin-syntax-class-properties/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-class-properties
+
+Allow parsing of class properties.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-class-properties
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-class-properties"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-class-properties script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-class-properties"]
+});
+```
diff --git a/packages/babel-plugin-syntax-class-properties/package.json b/packages/babel-plugin-syntax-class-properties/package.json
new file mode 100644
index 0000000000..edf59c1d57
--- /dev/null
+++ b/packages/babel-plugin-syntax-class-properties/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-class-properties",
+ "version": "1.0.0",
+ "description": "Allow parsing of class properties",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-class-properties/src/index.js b/packages/babel-plugin-syntax-class-properties/src/index.js
new file mode 100644
index 0000000000..d9ba5cf12f
--- /dev/null
+++ b/packages/babel-plugin-syntax-class-properties/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("classProperties");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-decorators/.npmignore b/packages/babel-plugin-syntax-decorators/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-decorators/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-decorators/README.md b/packages/babel-plugin-syntax-decorators/README.md
new file mode 100644
index 0000000000..a7b27efc88
--- /dev/null
+++ b/packages/babel-plugin-syntax-decorators/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-decorators
+
+Allow parsing of decorators.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-decorators
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-decorators"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-decorators script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-decorators"]
+});
+```
diff --git a/packages/babel-plugin-syntax-decorators/package.json b/packages/babel-plugin-syntax-decorators/package.json
new file mode 100644
index 0000000000..402281dcb8
--- /dev/null
+++ b/packages/babel-plugin-syntax-decorators/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-decorators",
+ "version": "1.0.0",
+ "description": "Allow parsing of decorators",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-decorators/src/index.js b/packages/babel-plugin-syntax-decorators/src/index.js
new file mode 100644
index 0000000000..db7392f158
--- /dev/null
+++ b/packages/babel-plugin-syntax-decorators/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("decorators");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-do-expressions/.npmignore b/packages/babel-plugin-syntax-do-expressions/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-do-expressions/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-do-expressions/README.md b/packages/babel-plugin-syntax-do-expressions/README.md
new file mode 100644
index 0000000000..9f7556a15d
--- /dev/null
+++ b/packages/babel-plugin-syntax-do-expressions/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-do-expressions
+
+Allow parsing of do expressions.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-do-expressions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-do-expressions"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-do-expressions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-do-expressions"]
+});
+```
diff --git a/packages/babel-plugin-syntax-do-expressions/package.json b/packages/babel-plugin-syntax-do-expressions/package.json
new file mode 100644
index 0000000000..2545e296aa
--- /dev/null
+++ b/packages/babel-plugin-syntax-do-expressions/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-do-expressions",
+ "version": "1.0.0",
+ "description": "Allow parsing of do expressions",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-do-expressions/src/index.js b/packages/babel-plugin-syntax-do-expressions/src/index.js
new file mode 100644
index 0000000000..469b32173e
--- /dev/null
+++ b/packages/babel-plugin-syntax-do-expressions/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("doExpressions");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-exponentiation-operator/.npmignore b/packages/babel-plugin-syntax-exponentiation-operator/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-exponentiation-operator/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-exponentiation-operator/README.md b/packages/babel-plugin-syntax-exponentiation-operator/README.md
new file mode 100644
index 0000000000..42057eaf23
--- /dev/null
+++ b/packages/babel-plugin-syntax-exponentiation-operator/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-exponentiation-operator
+
+Allow parsing of the exponentiation operator.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-exponentiation-operator
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-exponentiation-operator"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-exponentiation-operator script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-exponentiation-operator"]
+});
+```
diff --git a/packages/babel-plugin-syntax-exponentiation-operator/package.json b/packages/babel-plugin-syntax-exponentiation-operator/package.json
new file mode 100644
index 0000000000..f12524f751
--- /dev/null
+++ b/packages/babel-plugin-syntax-exponentiation-operator/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-exponentiation-operator",
+ "version": "1.0.0",
+ "description": "Allow parsing of the exponentiation operator",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-exponentiation-operator/src/index.js b/packages/babel-plugin-syntax-exponentiation-operator/src/index.js
new file mode 100644
index 0000000000..943542f771
--- /dev/null
+++ b/packages/babel-plugin-syntax-exponentiation-operator/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("exponentiationOperator");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-export-extensions/.npmignore b/packages/babel-plugin-syntax-export-extensions/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-export-extensions/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-export-extensions/README.md b/packages/babel-plugin-syntax-export-extensions/README.md
new file mode 100644
index 0000000000..97e99ccd3b
--- /dev/null
+++ b/packages/babel-plugin-syntax-export-extensions/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-export-extensions
+
+Allow parsing of export extensions.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-export-extensions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-export-extensions"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-export-extensions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-export-extensions"]
+});
+```
diff --git a/packages/babel-plugin-syntax-export-extensions/package.json b/packages/babel-plugin-syntax-export-extensions/package.json
new file mode 100644
index 0000000000..9b9a06bfbf
--- /dev/null
+++ b/packages/babel-plugin-syntax-export-extensions/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-export-extensions",
+ "version": "1.0.0",
+ "description": "Allow parsing of export extensions",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-export-extensions/src/index.js b/packages/babel-plugin-syntax-export-extensions/src/index.js
new file mode 100644
index 0000000000..8bc33ab44d
--- /dev/null
+++ b/packages/babel-plugin-syntax-export-extensions/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("exportExtensions");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-flow/src/index.js b/packages/babel-plugin-syntax-flow/src/index.js
index 499d12a023..ac230f4a25 100644
--- a/packages/babel-plugin-syntax-flow/src/index.js
+++ b/packages/babel-plugin-syntax-flow/src/index.js
@@ -1,11 +1,7 @@
export default function () {
return {
manipulateOptions(opts, parserOpts) {
- var jsx = parserOpts.plugins.jsx;
- delete parserOpts.plugins.jsx;
-
- parserOpts.plugins.flow = true;
- if (jsx) parserOpts.plugins.jsx = true;
+ parserOpts.plugins.push("flow");
}
};
}
diff --git a/packages/babel-plugin-syntax-function-bind/.npmignore b/packages/babel-plugin-syntax-function-bind/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-function-bind/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-function-bind/README.md b/packages/babel-plugin-syntax-function-bind/README.md
new file mode 100644
index 0000000000..aa133ea9e4
--- /dev/null
+++ b/packages/babel-plugin-syntax-function-bind/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-function-bind
+
+Allow parsing of function bind.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-function-bind
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-function-bind"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-function-bind script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-function-bind"]
+});
+```
diff --git a/packages/babel-plugin-syntax-function-bind/package.json b/packages/babel-plugin-syntax-function-bind/package.json
new file mode 100644
index 0000000000..f71a332476
--- /dev/null
+++ b/packages/babel-plugin-syntax-function-bind/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-function-bind",
+ "version": "1.0.0",
+ "description": "Allow parsing of function bind",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-function-bind/src/index.js b/packages/babel-plugin-syntax-function-bind/src/index.js
new file mode 100644
index 0000000000..2fdf90ffb0
--- /dev/null
+++ b/packages/babel-plugin-syntax-function-bind/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("functionBind");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-jsx/src/index.js b/packages/babel-plugin-syntax-jsx/src/index.js
index 2c2767cdf9..44e80e966a 100644
--- a/packages/babel-plugin-syntax-jsx/src/index.js
+++ b/packages/babel-plugin-syntax-jsx/src/index.js
@@ -1,7 +1,7 @@
export default function () {
return {
manipulateOptions(opts, parserOpts) {
- parserOpts.plugins.jsx = true;
+ parserOpts.plugins.push("jsx");
}
};
}
diff --git a/packages/babel-plugin-syntax-object-rest-spread/.npmignore b/packages/babel-plugin-syntax-object-rest-spread/.npmignore
new file mode 100644
index 0000000000..cace0d6ddc
--- /dev/null
+++ b/packages/babel-plugin-syntax-object-rest-spread/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/packages/babel-plugin-syntax-object-rest-spread/README.md b/packages/babel-plugin-syntax-object-rest-spread/README.md
new file mode 100644
index 0000000000..59392f71a4
--- /dev/null
+++ b/packages/babel-plugin-syntax-object-rest-spread/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-object-rest-spread
+
+Allow parsing of object rest/spread.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-object-rest-spread
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-object-rest-spread"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-object-rest-spread script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-object-rest-spread"]
+});
+```
diff --git a/packages/babel-plugin-syntax-object-rest-spread/package.json b/packages/babel-plugin-syntax-object-rest-spread/package.json
new file mode 100644
index 0000000000..474bd23447
--- /dev/null
+++ b/packages/babel-plugin-syntax-object-rest-spread/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "babel-plugin-syntax-object-rest-spread",
+ "version": "1.0.0",
+ "description": "Allow parsing of object rest/spread",
+ "repository": "babel/babel",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ]
+}
diff --git a/packages/babel-plugin-syntax-object-rest-spread/src/index.js b/packages/babel-plugin-syntax-object-rest-spread/src/index.js
new file mode 100644
index 0000000000..7792d54dd6
--- /dev/null
+++ b/packages/babel-plugin-syntax-object-rest-spread/src/index.js
@@ -0,0 +1,7 @@
+export default function () {
+ return {
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("objectRestSpread");
+ }
+ };
+}
diff --git a/packages/babel-plugin-syntax-trailing-function-commas/src/index.js b/packages/babel-plugin-syntax-trailing-function-commas/src/index.js
index a22832bd31..d50ddd959c 100644
--- a/packages/babel-plugin-syntax-trailing-function-commas/src/index.js
+++ b/packages/babel-plugin-syntax-trailing-function-commas/src/index.js
@@ -1,7 +1,7 @@
export default function () {
return {
manipulateOptions(opts, parserOpts) {
- parserOpts.features["es7.trailingFunctionCommas"] = true;
+ parserOpts.plugins.push("trailingFunctionCommas");
}
};
}
From 31e4d2e5157acb2de7d69769d34c6e0856eb0f9f Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:38:53 +0100
Subject: [PATCH 131/174] remove CLI aliases
---
packages/babel-cli/polyfill.js | 1 -
packages/babel-cli/register-without-polyfill.js | 1 -
packages/babel-cli/register.js | 1 -
3 files changed, 3 deletions(-)
delete mode 100644 packages/babel-cli/polyfill.js
delete mode 100644 packages/babel-cli/register-without-polyfill.js
delete mode 100644 packages/babel-cli/register.js
diff --git a/packages/babel-cli/polyfill.js b/packages/babel-cli/polyfill.js
deleted file mode 100644
index 0e1a27b99c..0000000000
--- a/packages/babel-cli/polyfill.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("babel-core/polyfill");
diff --git a/packages/babel-cli/register-without-polyfill.js b/packages/babel-cli/register-without-polyfill.js
deleted file mode 100644
index c9ca24585e..0000000000
--- a/packages/babel-cli/register-without-polyfill.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("babel-core/register-without-polyfill");
diff --git a/packages/babel-cli/register.js b/packages/babel-cli/register.js
deleted file mode 100644
index 865d8ceb23..0000000000
--- a/packages/babel-cli/register.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("babel-core/register");
From 6568aaa17589bdef2c24d8864b5fb948086c8d21 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:39:16 +0100
Subject: [PATCH 132/174] add babel-polyfill to CLI
---
packages/babel-cli/package.json | 1 +
packages/babel-cli/src/_babel-node.js | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json
index be27502a25..d68633db4b 100644
--- a/packages/babel-cli/package.json
+++ b/packages/babel-cli/package.json
@@ -9,6 +9,7 @@
"preferGlobal": true,
"dependencies": {
"babel-core": "^5.6.21",
+ "babel-polyfill": "^5.0.0",
"chokidar": "^1.0.0",
"commander": "^2.6.0",
"convert-source-map": "^1.1.0",
diff --git a/packages/babel-cli/src/_babel-node.js b/packages/babel-cli/src/_babel-node.js
index 8e89bf0e63..2f168b7f09 100644
--- a/packages/babel-cli/src/_babel-node.js
+++ b/packages/babel-cli/src/_babel-node.js
@@ -4,10 +4,12 @@ import Module from "module";
import { inspect } from "util";
import path from "path";
import repl from "repl";
+import register from "babel-core/register";
import { util } from "babel-core";
import * as babel from "babel-core";
import vm from "vm";
import _ from "lodash";
+import "babel-polyfill";
let program = new commander.Command("babel-node");
@@ -25,7 +27,7 @@ program.parse(process.argv);
//
-babel.register({
+register({
extensions: program.extensions,
optional: program.optional,
ignore: program.ignore,
From 55976b63928b2449e1c3e6687feabef0fbc8ead4 Mon Sep 17 00:00:00 2001
From: Sebastian McKenzie
Date: Mon, 5 Oct 2015 16:40:18 +0100
Subject: [PATCH 133/174] remove redundant generator tests
---
.../arguments-refers-to-parent-function.js | 57 ----------
.../empty-arrow-function.js | 2 -
.../handles-nested-context-bindings.js | 12 --
...rens-for-low-precedence-expression-body.js | 2 -
.../object-literal-needs-parens.js | 2 -
.../only-lexical-this-not-dynamic-this.js | 7 --
.../esnext/es6-arrow-functions/options.json | 3 -
.../es6-arrow-functions/passed-to-function.js | 2 -
.../single-param-does-not-need-parens.js | 2 -
.../esnext/es6-classes/anonymous-class.js | 29 -----
.../esnext/es6-classes/call-super-function.js | 21 ----
.../esnext/es6-classes/class-expressions.js | 9 --
.../esnext/es6-classes/class-extend.js | 15 ---
.../es6-classes/class-with-constructor.js | 14 ---
.../class-with-method-declaration.js | 10 --
.../esnext/es6-classes/empty-named-class.js | 5 -
.../fixtures/esnext/es6-classes/enumerable.js | 20 ----
.../explicit-super-in-constructor.js | 15 ---
.../esnext/es6-classes/extends-null.js | 4 -
.../esnext/es6-classes/getter-setter-super.js | 37 -------
.../esnext/es6-classes/getter-setter.js | 28 -----
.../method-declaration-with-arguments.js | 7 --
.../es6-classes/methods-are-writable.js | 12 --
.../es6-classes/methods-with-rest-params.js | 28 -----
.../esnext/es6-classes/static-getter.js | 12 --
.../esnext/es6-classes/static-method.js | 30 -----
.../esnext/es6-classes/static-setter.js | 7 --
.../esnext/es6-classes/super-change-proto.js | 21 ----
.../es6-computed-properties/accessor.js | 8 --
.../esnext/es6-computed-properties/method.js | 3 -
.../esnext/es6-computed-properties/nested.js | 4 -
.../es6-computed-properties/options.json | 3 -
.../esnext/es6-computed-properties/simple.js | 3 -
.../esnext/es6-default-parameters/arity.js | 3 -
.../es6-default-parameters/arrow-function.js | 8 --
.../null-vs-undefined.js | 5 -
.../esnext/es6-default-parameters/scope.js | 11 --
.../es6-default-parameters/simple-function.js | 4 -
.../es6-object-concise/method-arguments.js | 7 --
.../es6-object-concise/method-context.js | 9 --
.../es6-object-concise/method-has-name.js | 7 --
.../method-is-not-in-scope-inside.js | 9 --
.../esnext/es6-object-concise/method.js | 7 --
.../esnext/es6-rest-parameters/arrow-fn.js | 5 -
.../esnext/es6-rest-parameters/declaration.js | 5 -
.../esnext/es6-rest-parameters/rest.js | 5 -
.../esnext/es6-spread/arguments-as-array.js | 6 -
.../esnext/es6-spread/array-literal.js | 3 -
.../es6-spread/call-with-array-literal.js | 5 -
.../es6-spread/inside-function-expression.js | 10 --
.../fixtures/esnext/es6-spread/iterator.js | 16 ---
.../fixtures/esnext/es6-spread/new-object.js | 11 --
.../esnext/es6-spread/preserve-context.js | 35 ------
.../esnext/es6-spread/simple-function-call.js | 6 -
.../esnext/es6-templates/multi-line.js | 4 -
.../es6-templates/nested-interpolation.js | 4 -
.../esnext/es6-templates/no-interpolation.js | 2 -
.../esnext/es6-templates/options.json | 3 -
.../raw-tagged-template-expression.js | 6 -
.../es6-templates/simple-interpolation.js | 2 -
.../tagged-template-expression.js | 26 -----
.../auto-indentation/hard-tab/actual.js | 6 -
.../auto-indentation/hard-tab/expected.js | 6 -
.../auto-indentation/soft-tab-2/actual.js | 6 -
.../auto-indentation/soft-tab-2/expected.js | 6 -
.../auto-indentation/soft-tab-4/actual.js | 6 -
.../auto-indentation/soft-tab-4/expected.js | 6 -
.../generation/auto-string/double/actual.js | 4 -
.../generation/auto-string/double/expected.js | 4 -
.../generation/auto-string/single/actual.js | 4 -
.../generation/auto-string/single/expected.js | 4 -
.../actual.js | 10 --
.../expected.js | 8 --
.../comments/2-space-multi-comment/actual.js | 6 -
.../2-space-multi-comment/expected.js | 6 -
.../actual.js | 4 -
.../expected.js | 4 -
.../options.json | 3 -
.../comments/block-line-comment/actual.js | 4 -
.../comments/block-line-comment/expected.js | 4 -
.../comment-only-with-space/actual.js | 7 --
.../comment-only-with-space/expected.js | 7 --
.../comments/comment-only/actual.js | 4 -
.../comments/comment-only/expected.js | 4 -
.../actual.js | 5 -
.../expected.js | 5 -
.../options.json | 3 -
.../computed-property-comments-2/actual.js | 10 --
.../computed-property-comments-2/expected.js | 11 --
.../computed-property-comments/actual.js | 28 -----
.../computed-property-comments/expected.js | 27 -----
.../comments/do-while-line-comment/actual.js | 3 -
.../do-while-line-comment/expected.js | 2 -
.../comments/empty-line-comment/actual.js | 4 -
.../comments/empty-line-comment/expected.js | 4 -
.../generation/comments/empty/actual.js | 1 -
.../generation/comments/empty/expected.js | 1 -
.../function-block-line-comment/actual.js | 6 -
.../function-block-line-comment/expected.js | 6 -
.../comments/if-block-line-comment/actual.js | 5 -
.../if-block-line-comment/expected.js | 5 -
.../comments/if-empty-line-comment/actual.js | 3 -
.../if-empty-line-comment/expected.js | 3 -
.../comments/if-line-comment/actual.js | 5 -
.../comments/if-line-comment/expected.js | 7 --
.../comments/object_comments/actual.js | 12 --
.../comments/object_comments/expected.js | 12 --
.../comments/return-no-argument/actual.js | 3 -
.../comments/return-no-argument/expected.js | 3 -
.../simple-a-lot-of-line-comment/actual.js | 49 ---------
.../simple-a-lot-of-line-comment/expected.js | 45 --------
.../simple-a-lot-of-multi-comment/actual.js | 51 ---------
.../simple-a-lot-of-multi-comment/expected.js | 49 ---------
.../comments/simple-line-comment/actual.js | 3 -
.../comments/simple-line-comment/expected.js | 3 -
.../comments/simple-multi-comment/actual.js | 22 ----
.../comments/simple-multi-comment/expected.js | 22 ----
.../simple-statement-comment/actual.js | 1 -
.../simple-statement-comment/expected.js | 1 -
.../comments/try-block-line-comment/actual.js | 12 --
.../try-block-line-comment/expected.js | 10 --
.../actual.js | 9 --
.../expected.js | 10 --
.../actual.js | 13 ---
.../expected.js | 14 ---
.../actual.js | 16 ---
.../expected.js | 18 ---
.../fixtures/generation/compact/options.json | 3 -
.../compact/single-line-comment/actual.js | 2 -
.../compact/single-line-comment/expected.js | 2 -
.../edgecase/bitwise-precedence/actual.js | 3 -
.../edgecase/bitwise-precedence/expected.js | 3 -
.../edgecase/floating-point/actual.js | 2 -
.../edgecase/floating-point/expected.js | 2 -
.../edgecase/for-in-no-in/actual.js | 12 --
.../edgecase/for-in-no-in/expected.js | 12 --
.../edgecase/new-precedence/actual.js | 9 --
.../edgecase/new-precedence/expected.js | 9 --
.../actual.js | 3 -
.../expected.js | 3 -
.../actual.js | 6 -
.../expected.js | 4 -
.../options.json | 5 -
.../return-with-retainlines-option/actual.js | 11 --
.../expected.js | 10 --
.../options.json | 3 -
.../generation/edgecase/unary-op/actual.js | 5 -
.../generation/edgecase/unary-op/expected.js | 5 -
.../edgecase/variable-declaration/actual.js | 4 -
.../edgecase/variable-declaration/expected.js | 4 -
.../generation/flow/array-types/actual.js | 6 -
.../generation/flow/array-types/expected.js | 6 -
.../flow/boolean-literal-types/actual.js | 2 -
.../flow/boolean-literal-types/expected.js | 2 -
.../generation/flow/call-properties/actual.js | 5 -
.../flow/call-properties/expected.js | 5 -
.../generation/flow/declare-module/actual.js | 5 -
.../flow/declare-module/expected.js | 11 --
.../flow/declare-statements/actual.js | 11 --
.../flow/declare-statements/expected.js | 11 --
.../interfaces-module-and-script/actual.js | 9 --
.../interfaces-module-and-script/expected.js | 9 --
.../flow/number-literal-types/actual.js | 5 -
.../flow/number-literal-types/expected.js | 5 -
.../flow/qualified-generic-type/actual.js | 4 -
.../flow/qualified-generic-type/expected.js | 4 -
.../flow/string-literal-types/actual.js | 2 -
.../flow/string-literal-types/expected.js | 2 -
.../fixtures/generation/flow/tuples/actual.js | 4 -
.../generation/flow/tuples/expected.js | 4 -
.../generation/flow/type-alias/actual.js | 3 -
.../generation/flow/type-alias/expected.js | 3 -
.../flow/type-annotations/actual.js | 100 -----------------
.../flow/type-annotations/expected.js | 104 ------------------
.../generation/flow/typecasts/actual.js | 4 -
.../generation/flow/typecasts/expected.js | 4 -
.../harmony-edgecase/arrow-function/actual.js | 11 --
.../arrow-function/expected.js | 10 --
.../class-declaration/actual.js | 56 ----------
.../class-declaration/expected.js | 38 -------
.../class-expression/actual.js | 55 ---------
.../class-expression/expected.js | 39 -------
.../computed-property/actual.js | 14 ---
.../computed-property/expected.js | 14 ---
.../default-parameter/actual.js | 11 --
.../default-parameter/expected.js | 8 --
.../destructuring-assignment/actual.js | 18 ---
.../destructuring-assignment/expected.js | 15 ---
.../export-default-declaration/actual.js | 1 -
.../export-default-declaration/expected.js | 1 -
.../harmony-edgecase/exports/actual.js | 9 --
.../harmony-edgecase/exports/expected.js | 9 --
.../for-of-statement/actual.js | 7 --
.../for-of-statement/expected.js | 5 -
.../import-with-default/actual.js | 7 --
.../import-with-default/expected.js | 3 -
.../harmony-edgecase/imports/actual.js | 8 --
.../harmony-edgecase/imports/expected.js | 4 -
.../harmony-edgecase/spread-element/actual.js | 5 -
.../spread-element/expected.js | 4 -
.../templates-escape/actual.js | 12 --
.../templates-escape/expected.js | 12 --
.../harmony-edgecase/templates/actual.js | 31 ------
.../harmony-edgecase/templates/expected.js | 31 ------
.../yield-precedence/actual.js | 7 --
.../yield-precedence/expected.js | 8 --
.../arrow-function-object-body/actual.js | 4 -
.../arrow-function-object-body/expected.js | 4 -
.../parentheses/terminator-break/actual.js | 12 --
.../parentheses/terminator-break/expected.js | 12 --
.../ArrayExpression-ArrayPattern/actual.js | 5 -
.../ArrayExpression-ArrayPattern/expected.js | 5 -
.../types/ArrowFunctionExpression/actual.js | 4 -
.../types/ArrowFunctionExpression/expected.js | 4 -
.../actual.js | 3 -
.../expected.js | 3 -
.../types/AwaitExpression/actual.js | 7 --
.../types/AwaitExpression/expected.js | 7 --
.../generation/types/BindExpression/actual.js | 5 -
.../types/BindExpression/expected.js | 5 -
.../generation/types/BlockStatement/actual.js | 5 -
.../types/BlockStatement/expected.js | 5 -
.../generation/types/BreakStatement/actual.js | 7 --
.../types/BreakStatement/expected.js | 7 --
.../generation/types/CallExpression/actual.js | 5 -
.../types/CallExpression/expected.js | 5 -
.../ClassBody-MethodDefinition/actual.js | 13 ---
.../ClassBody-MethodDefinition/expected.js | 13 ---
.../types/ClassDeclaration/actual.js | 2 -
.../types/ClassDeclaration/expected.js | 2 -
.../types/ClassExpression/actual.js | 2 -
.../types/ClassExpression/expected.js | 2 -
.../actual.js | 9 --
.../expected.js | 9 --
.../types/ConditionalExpression/actual.js | 1 -
.../types/ConditionalExpression/expected.js | 1 -
.../types/ContinueStatement/actual.js | 7 --
.../types/ContinueStatement/expected.js | 7 --
.../types/DebuggerStatement/actual.js | 1 -
.../types/DebuggerStatement/expected.js | 1 -
.../generation/types/Decorator/actual.js | 31 ------
.../generation/types/Decorator/expected.js | 31 ------
.../types/DoWhileStatement/actual.js | 5 -
.../types/DoWhileStatement/expected.js | 5 -
.../generation/types/EmptyStatement/actual.js | 1 -
.../types/EmptyStatement/expected.js | 1 -
.../actual.js | 31 ------
.../expected.js | 31 ------
.../generation/types/ForInStatement/actual.js | 5 -
.../types/ForInStatement/expected.js | 5 -
.../generation/types/ForOfStatement/actual.js | 5 -
.../types/ForOfStatement/expected.js | 5 -
.../generation/types/ForStatement/actual.js | 3 -
.../generation/types/ForStatement/expected.js | 3 -
.../actual.js | 23 ----
.../expected.js | 23 ----
.../generation/types/Identifier/actual.js | 2 -
.../generation/types/Identifier/expected.js | 2 -
.../generation/types/IfStatement/actual.js | 25 -----
.../generation/types/IfStatement/expected.js | 25 -----
.../actual.js | 9 --
.../expected.js | 9 --
.../types/LabeledStatement/actual.js | 1 -
.../types/LabeledStatement/expected.js | 1 -
.../generation/types/Literal/actual.js | 12 --
.../generation/types/Literal/expected.js | 12 --
.../types/MemberExpression/actual.js | 11 --
.../types/MemberExpression/expected.js | 11 --
.../generation/types/NewExpression/actual.js | 3 -
.../types/NewExpression/expected.js | 3 -
.../actual.js | 20 ----
.../expected.js | 20 ----
.../types/ReturnStatement/actual.js | 7 --
.../types/ReturnStatement/expected.js | 7 --
.../types/SequenceExpression/actual.js | 4 -
.../types/SequenceExpression/expected.js | 3 -
.../SpreadElement-SpreadProperty/actual.js | 3 -
.../SpreadElement-SpreadProperty/expected.js | 3 -
.../SwitchStatement-SwitchCase/actual.js | 39 -------
.../SwitchStatement-SwitchCase/expected.js | 42 -------
.../actual.js | 12 --
.../expected.js | 12 --
.../generation/types/ThisExpression/actual.js | 5 -
.../types/ThisExpression/expected.js | 5 -
.../generation/types/ThrowStatement/actual.js | 3 -
.../types/ThrowStatement/expected.js | 3 -
.../types/TryStatement-CatchClause/actual.js | 25 -----
.../TryStatement-CatchClause/expected.js | 25 -----
.../types/UnaryExpression/actual.js | 5 -
.../types/UnaryExpression/expected.js | 5 -
.../types/UpdateExpression/actual.js | 3 -
.../types/UpdateExpression/expected.js | 3 -
.../actual.js | 13 ---
.../expected.js | 18 ---
.../generation/types/WhileStatement/actual.js | 5 -
.../types/WhileStatement/expected.js | 5 -
.../generation/types/WithStatement/actual.js | 5 -
.../types/WithStatement/expected.js | 5 -
.../generation/types/XJSAttribute/actual.js | 7 --
.../generation/types/XJSAttribute/expected.js | 7 --
.../actual.js | 5 -
.../expected.js | 5 -
.../types/XJSEmptyExpression/actual.js | 1 -
.../types/XJSEmptyExpression/expected.js | 1 -
.../types/XJSExpressionContainer/actual.js | 1 -
.../types/XJSExpressionContainer/expected.js | 1 -
.../types/XJSMemberExpression/actual.js | 1 -
.../types/XJSMemberExpression/expected.js | 1 -
.../types/XJSNamespacedName/actual.js | 1 -
.../types/XJSNamespacedName/expected.js | 1 -
.../types/XJSSpreadAttribute/actual.js | 1 -
.../types/XJSSpreadAttribute/expected.js | 1 -
.../types/YieldExpression/actual.js | 7 --
.../types/YieldExpression/expected.js | 7 --
314 files changed, 3079 deletions(-)
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/arguments-refers-to-parent-function.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/empty-arrow-function.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/handles-nested-context-bindings.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/no-parens-for-low-precedence-expression-body.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/object-literal-needs-parens.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/only-lexical-this-not-dynamic-this.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/options.json
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/passed-to-function.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-arrow-functions/single-param-does-not-need-parens.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/anonymous-class.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/call-super-function.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/class-expressions.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/class-extend.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/class-with-constructor.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/class-with-method-declaration.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/empty-named-class.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/enumerable.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/explicit-super-in-constructor.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/extends-null.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter-super.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/method-declaration-with-arguments.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/methods-are-writable.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/methods-with-rest-params.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/static-getter.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/static-method.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/static-setter.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-classes/super-change-proto.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-computed-properties/accessor.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-computed-properties/method.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-computed-properties/nested.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-computed-properties/options.json
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-computed-properties/simple.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-default-parameters/arity.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-default-parameters/arrow-function.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-default-parameters/null-vs-undefined.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-default-parameters/scope.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-default-parameters/simple-function.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-object-concise/method-arguments.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-object-concise/method-context.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-object-concise/method-has-name.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-object-concise/method-is-not-in-scope-inside.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-object-concise/method.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-rest-parameters/arrow-fn.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-rest-parameters/declaration.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-rest-parameters/rest.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/arguments-as-array.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/array-literal.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/call-with-array-literal.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/inside-function-expression.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/iterator.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/new-object.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/preserve-context.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-spread/simple-function-call.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/multi-line.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/nested-interpolation.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/no-interpolation.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/options.json
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/raw-tagged-template-expression.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/simple-interpolation.js
delete mode 100644 packages/babel-core/test/fixtures/esnext/es6-templates/tagged-template-expression.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-string/double/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-string/double/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-string/single/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/auto-string/single/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/options.json
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/block-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/block-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-only/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-only/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/options.json
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/computed-property-comments/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/computed-property-comments/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/empty-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/empty-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/empty/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/empty/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/if-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/if-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/object_comments/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/object_comments/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/return-no-argument/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/return-no-argument/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/compact/options.json
delete mode 100644 packages/babel-core/test/fixtures/generation/compact/single-line-comment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/compact/single-line-comment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/floating-point/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/floating-point/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/new-precedence/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/new-precedence/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/options.json
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/options.json
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/unary-op/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/unary-op/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/array-types/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/array-types/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/call-properties/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/call-properties/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/declare-module/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/declare-module/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/declare-statements/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/declare-statements/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/number-literal-types/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/number-literal-types/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/string-literal-types/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/string-literal-types/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/tuples/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/tuples/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/type-alias/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/type-alias/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/type-annotations/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/type-annotations/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/typecasts/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/flow/typecasts/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/arrow-function/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/arrow-function/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/class-declaration/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/class-declaration/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/class-expression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/class-expression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/computed-property/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/computed-property/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/default-parameter/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/default-parameter/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/destructuring-assignment/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/destructuring-assignment/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/export-default-declaration/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/export-default-declaration/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/exports/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/exports/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/for-of-statement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/for-of-statement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/import-with-default/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/import-with-default/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/imports/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/imports/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/spread-element/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/spread-element/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/templates-escape/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/templates-escape/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/templates/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/templates/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/yield-precedence/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/harmony-edgecase/yield-precedence/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/parentheses/arrow-function-object-body/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/parentheses/arrow-function-object-body/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/parentheses/terminator-break/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/parentheses/terminator-break/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ArrayExpression-ArrayPattern/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ArrayExpression-ArrayPattern/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ArrowFunctionExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ArrowFunctionExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/AssignmentExpression-BinaryExpression-LogicalExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/AssignmentExpression-BinaryExpression-LogicalExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/AwaitExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/AwaitExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/BindExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/BindExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/BlockStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/BlockStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/BreakStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/BreakStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/CallExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/CallExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ClassBody-MethodDefinition/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ClassBody-MethodDefinition/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ClassDeclaration/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ClassDeclaration/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ClassExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ClassExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ComprehensionBlock-ComprehensionExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ComprehensionBlock-ComprehensionExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ConditionalExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ConditionalExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ContinueStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ContinueStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/DebuggerStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/DebuggerStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/Decorator/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/Decorator/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/DoWhileStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/DoWhileStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/EmptyStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/EmptyStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ExportDefaultDeclaration-ExportSpecifier-ExportNamedDeclaration/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ForInStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ForInStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ForOfStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ForOfStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ForStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ForStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/FunctionDeclaration-FunctionExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/FunctionDeclaration-FunctionExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/Identifier/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/Identifier/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/IfStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/IfStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ImportDeclaration-ImportSpecifier-ImportNamespaceSpecifier/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/LabeledStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/LabeledStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/Literal/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/Literal/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/MemberExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/MemberExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/NewExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/NewExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ObjectExpression-ObjectPattern-Property/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ObjectExpression-ObjectPattern-Property/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ReturnStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ReturnStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/SequenceExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/SequenceExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/SpreadElement-SpreadProperty/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/SpreadElement-SpreadProperty/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/SwitchStatement-SwitchCase/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/SwitchStatement-SwitchCase/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ThisExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ThisExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ThrowStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/ThrowStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/TryStatement-CatchClause/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/TryStatement-CatchClause/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/UnaryExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/UnaryExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/UpdateExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/UpdateExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/VariableDeclaration-VariableDeclarator/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/VariableDeclaration-VariableDeclarator/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/WhileStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/WhileStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/WithStatement/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/WithStatement/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSAttribute/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSAttribute/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSElement-XJSOpeningElement-XJSClosingElement-XJSIdentifier/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSEmptyExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSEmptyExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSExpressionContainer/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSExpressionContainer/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSMemberExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSMemberExpression/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSNamespacedName/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSNamespacedName/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSSpreadAttribute/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/XJSSpreadAttribute/expected.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/YieldExpression/actual.js
delete mode 100644 packages/babel-core/test/fixtures/generation/types/YieldExpression/expected.js
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/arguments-refers-to-parent-function.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/arguments-refers-to-parent-function.js
deleted file mode 100644
index d299fb5379..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/arguments-refers-to-parent-function.js
+++ /dev/null
@@ -1,57 +0,0 @@
-function makeMultiplier() {
- // `arguments` should refer to `makeMultiplier`'s arguments.
- return (n) => [].slice.call(arguments).reduce((a, b) => a * b) * n;
-}
-
-function toArray() {
- // Intentionally nest arrow functions to ensure `arguments` is put inside
- // `toArray`'s scope.
- return (() => (arguments, (() => [].slice.call(arguments)).call())).call();
-}
-
-function returnDotArguments(object) {
- // Ensure `arguments` is not treated as a reference to the magic value.
- return (() => object.arguments).call();
-}
-
-function returnArgumentsObject() {
- // Ensure `arguments` is not treated as a reference to the magic value.
- return (() => ({arguments: 1})).call();
-}
-
-function makeArgumentsReturner() {
- return (() => function() {
- return [].slice.call(arguments);
- }).call();
-}
-
-// i.e. 2 * 3 * 4 == 24, not 16 (4 * 4)
-assert.equal(
- makeMultiplier(2, 3)(4),
- 24,
- 'ensure `arguments` is hoisted out to the first non-arrow scope'
-);
-
-assert.deepEqual(
- toArray(1, 2, 3),
- [1, 2, 3],
- 'ensure `arguments` is hoisted out to the first non-arrow scope'
-);
-
-assert.equal(
- returnDotArguments({arguments: 1}),
- 1,
- 'member accesses with `arguments` property should not be replaced'
-);
-
-assert.deepEqual(
- returnArgumentsObject(),
- {arguments: 1},
- 'object property keys named `arguments` should not be replaced'
-);
-
-assert.deepEqual(
- makeArgumentsReturner()(1, 2, 3),
- [1, 2, 3],
- 'arguments should not be hoisted from inside non-arrow functions'
-);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/empty-arrow-function.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/empty-arrow-function.js
deleted file mode 100644
index 0b95435853..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/empty-arrow-function.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var empty = () => {};
-assert.equal(empty(), undefined);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/handles-nested-context-bindings.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/handles-nested-context-bindings.js
deleted file mode 100644
index 03041f0297..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/handles-nested-context-bindings.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var obj = {
- method: function() {
- return () => (this, () => this);
- },
-
- method2: function() {
- return () => () => this;
- }
-};
-
-assert.strictEqual(obj.method()()(), obj);
-assert.strictEqual(obj.method2()()(), obj);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/no-parens-for-low-precedence-expression-body.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/no-parens-for-low-precedence-expression-body.js
deleted file mode 100644
index 66fad996e5..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/no-parens-for-low-precedence-expression-body.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var square = x => x * x;
-assert.equal(square(4), 16);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/object-literal-needs-parens.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/object-literal-needs-parens.js
deleted file mode 100644
index 3ec553b180..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/object-literal-needs-parens.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var keyMaker = val => ({ key: val });
-assert.deepEqual(keyMaker(9), { key: 9 });
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/only-lexical-this-not-dynamic-this.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/only-lexical-this-not-dynamic-this.js
deleted file mode 100644
index 68f68c14dc..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/only-lexical-this-not-dynamic-this.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var obj = {
- method: function() {
- return () => this;
- }
-};
-
-assert.strictEqual(obj.method()(), obj);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/options.json b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/options.json
deleted file mode 100644
index fc3d742263..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "plugins": ["transform-es2015-arrow-functions"]
-}
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/passed-to-function.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/passed-to-function.js
deleted file mode 100644
index 75fbefbacd..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/passed-to-function.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var odds = [0, 2, 4].map(v => v + 1);
-assert.deepEqual(odds, [1, 3, 5]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/single-param-does-not-need-parens.js b/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/single-param-does-not-need-parens.js
deleted file mode 100644
index c2b56e7bbc..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-arrow-functions/single-param-does-not-need-parens.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var identity = x => x;
-assert.equal(identity(1), 1);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/anonymous-class.js b/packages/babel-core/test/fixtures/esnext/es6-classes/anonymous-class.js
deleted file mode 100644
index 7349df95b6..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/anonymous-class.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var Animal = class {
- sayHi() {
- return 'Hi, I am a '+this.type()+'.';
- }
-
- static getName() {
- return 'Animal';
- }
-};
-
-var Dog = class extends Animal {
- type() { return 'dog'; }
-
- sayHi() {
- return super.sayHi() + ' WOOF!';
- }
-
- static getName() {
- return super.getName() + '/Dog';
- }
-};
-
-assert.equal(new Dog().sayHi(), 'Hi, I am a dog. WOOF!');
-assert.equal(Dog.getName(), 'Animal/Dog');
-
-var count = 0;
-var Cat = class extends (function(){ count++; return Animal; })() {};
-
-assert.equal(count, 1);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/call-super-function.js b/packages/babel-core/test/fixtures/esnext/es6-classes/call-super-function.js
deleted file mode 100644
index 5c7efe0dc6..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/call-super-function.js
+++ /dev/null
@@ -1,21 +0,0 @@
-class Animal {
- sayHi() {
- return 'I am an animal.'
- }
-
- sayOther() {
- return 'WAT?!';
- }
-}
-
-class Horse extends Animal {
- sayHi() {
- return super.sayOther();
- }
-
- sayOther() {
- return 'I see dead objects.';
- }
-}
-
-assert.equal(new Horse().sayHi(), 'WAT?!');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/class-expressions.js b/packages/babel-core/test/fixtures/esnext/es6-classes/class-expressions.js
deleted file mode 100644
index 1c2bb96a80..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/class-expressions.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var Person = (class Person {});
-assert.equal(typeof Person, 'function');
-
-assert.equal(
- (function(){ return (class Person {}); })().name,
- 'Person'
-);
-
-assert.equal(typeof (class {}), 'function');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/class-extend.js b/packages/babel-core/test/fixtures/esnext/es6-classes/class-extend.js
deleted file mode 100644
index 894e18022a..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/class-extend.js
+++ /dev/null
@@ -1,15 +0,0 @@
-class Animal {
- sayHi() {
- return 'Hi, I am a '+this.type()+'.';
- }
-}
-
-class Dog extends Animal {
- type() { return 'dog'; }
-
- sayHi() {
- return super.sayHi() + ' WOOF!';
- }
-}
-
-assert.equal(new Dog().sayHi(), 'Hi, I am a dog. WOOF!');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/class-with-constructor.js b/packages/babel-core/test/fixtures/esnext/es6-classes/class-with-constructor.js
deleted file mode 100644
index 4dcf3296f0..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/class-with-constructor.js
+++ /dev/null
@@ -1,14 +0,0 @@
-class Multiplier {
- constructor(n=1) {
- this.n = n;
- }
-
- multiply(n=1) {
- return n * this.n;
- }
-}
-
-assert.equal(new Multiplier().n, 1);
-assert.equal(new Multiplier(6).n, 6);
-assert.equal(new Multiplier().multiply(), 1);
-assert.equal(new Multiplier(2).multiply(3), 6);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/class-with-method-declaration.js b/packages/babel-core/test/fixtures/esnext/es6-classes/class-with-method-declaration.js
deleted file mode 100644
index f8d9d7a207..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/class-with-method-declaration.js
+++ /dev/null
@@ -1,10 +0,0 @@
-class Person {
- getName() {
- return this.firstName + ' ' + this.lastName;
- }
-}
-
-var me = new Person();
-me.firstName = 'Brian';
-me.lastName = 'Donovan';
-assert.equal(me.getName(), 'Brian Donovan');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/empty-named-class.js b/packages/babel-core/test/fixtures/esnext/es6-classes/empty-named-class.js
deleted file mode 100644
index 602a6702d3..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/empty-named-class.js
+++ /dev/null
@@ -1,5 +0,0 @@
-class Foo {
-}
-
-assert.equal(new Foo().constructor, Foo, 'Foo instances should have Foo as constructor');
-assert.ok(new Foo() instanceof Foo, 'Foo instances should be `instanceof` Foo');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/enumerable.js b/packages/babel-core/test/fixtures/esnext/es6-classes/enumerable.js
deleted file mode 100644
index fe5c02d113..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/enumerable.js
+++ /dev/null
@@ -1,20 +0,0 @@
-class Point {
- constructor(x, y) {
- this.x = x;
- this.y = y;
- }
-
- toString() {
- return '(' + this.x + ', ' + this.y + ')';
- }
-}
-
-var point = new Point(1, 2);
-var keys = [];
-
-for (var key in point) {
- keys.push(key);
-}
-
-assert.equal(point.toString(), '(1, 2)');
-assert.deepEqual(keys.sort(), ['x', 'y']);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/explicit-super-in-constructor.js b/packages/babel-core/test/fixtures/esnext/es6-classes/explicit-super-in-constructor.js
deleted file mode 100644
index d30f21cba5..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/explicit-super-in-constructor.js
+++ /dev/null
@@ -1,15 +0,0 @@
-class Point {
- constructor(x, y) {
- this.x = x;
- this.y = y;
- }
-}
-
-class ZeroPoint extends Point {
- constructor() {
- super(0, 0);
- }
-}
-
-assert.equal(new ZeroPoint().x, 0);
-assert.equal(new ZeroPoint().y, 0);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/extends-null.js b/packages/babel-core/test/fixtures/esnext/es6-classes/extends-null.js
deleted file mode 100644
index fa3821d8c7..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/extends-null.js
+++ /dev/null
@@ -1,4 +0,0 @@
-class Obj extends null {}
-
-assert.strictEqual(Obj.toString, Function.toString);
-assert.strictEqual(new Obj().toString, undefined);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter-super.js b/packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter-super.js
deleted file mode 100644
index 218ccbd2fe..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter-super.js
+++ /dev/null
@@ -1,37 +0,0 @@
-class Base {
- get sound() {
- return 'I am a ' + this.type + '.';
- }
-
- get name() {
- return this._name;
- }
-
- set name(val) {
- this._name = val;
- }
-}
-
-class Animal extends Base {}
-
-class Cat extends Animal {
- get type() { return 'cat'; }
-
- get sound() {
- return super.sound + ' MEOW!';
- }
-
- get name() {
- return super.name;
- }
-
- set name(val) {
- super.name = val + ' Cat';
- }
-}
-
-var cat = new Cat();
-
-assert.equal(cat.sound, 'I am a cat. MEOW!');
-cat.name = 'Nyan';
-assert.equal(cat.name, 'Nyan Cat');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter.js b/packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter.js
deleted file mode 100644
index 155f09a150..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/getter-setter.js
+++ /dev/null
@@ -1,28 +0,0 @@
-class Person {
- constructor(firstName, lastName) {
- this.firstName = firstName;
- this.lastName = lastName;
- }
-
- get name() {
- return this.firstName + ' ' + this.lastName;
- }
-
- set name(name) {
- var parts = name.split(' ');
- this.firstName = parts[0];
- this.lastName = parts[1];
- }
-}
-
-var mazer = new Person('Mazer', 'Rackham');
-assert.equal(mazer.name, 'Mazer Rackham');
-mazer.name = 'Ender Wiggin';
-assert.equal(mazer.firstName, 'Ender');
-assert.equal(mazer.lastName, 'Wiggin');
-
-var forLoopProperties = [];
-for (var key in mazer) {
- forLoopProperties.push(key);
-}
-assert.ok(forLoopProperties.indexOf('name') === -1, 'getters/setters should be unenumerable');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/method-declaration-with-arguments.js b/packages/babel-core/test/fixtures/esnext/es6-classes/method-declaration-with-arguments.js
deleted file mode 100644
index b70c56e68c..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/method-declaration-with-arguments.js
+++ /dev/null
@@ -1,7 +0,0 @@
-class Tripler {
- triple(n) {
- return n * 3;
- }
-}
-
-assert.equal(new Tripler().triple(2), 6);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/methods-are-writable.js b/packages/babel-core/test/fixtures/esnext/es6-classes/methods-are-writable.js
deleted file mode 100644
index 19ffd5aa73..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/methods-are-writable.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var value;
-
-class Foo {
- foo() {
- value = 1;
- }
-}
-
-var foo = new Foo();
-foo.foo = function() { value = 2; };
-foo.foo();
-assert.equal(value, 2);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/methods-with-rest-params.js b/packages/babel-core/test/fixtures/esnext/es6-classes/methods-with-rest-params.js
deleted file mode 100644
index 77b7bb0774..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/methods-with-rest-params.js
+++ /dev/null
@@ -1,28 +0,0 @@
-class Joiner {
- constructor(string) {
- this.string = string;
- }
-
- join(...items) {
- return items.join(this.string);
- }
-
- static join(string, ...items) {
- var joiner = new this(string);
- // TODO: use spread params here
- return joiner.join.apply(joiner, items);
- }
-}
-
-class ArrayLike {
- constructor(...items) {
- items.forEach(function(item, i) {
- this[i] = item;
- }.bind(this));
- this.length = items.length;
- }
-}
-
-var joiner = new Joiner(' & ');
-assert.equal(joiner.join(4, 5, 6), '4 & 5 & 6');
-assert.equal(new ArrayLike('a', 'b')[1], 'b');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/static-getter.js b/packages/babel-core/test/fixtures/esnext/es6-classes/static-getter.js
deleted file mode 100644
index af9fe0afe6..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/static-getter.js
+++ /dev/null
@@ -1,12 +0,0 @@
-class Point {
- constructor(x, y) {
- this.x = x;
- this.y = y;
- }
-
- static get ORIGIN() {
- return new this(0, 0);
- }
-}
-
-assert.deepEqual(Point.ORIGIN, new Point(0, 0));
\ No newline at end of file
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/static-method.js b/packages/babel-core/test/fixtures/esnext/es6-classes/static-method.js
deleted file mode 100644
index 42e6e6e170..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/static-method.js
+++ /dev/null
@@ -1,30 +0,0 @@
-class Tripler {
- static triple(n=1) {
- return n * 3;
- }
-
- static toString() {
- return '3' + super.toString() + '3';
- }
-}
-
-class MegaTripler extends Tripler {
- static triple(n=1) {
- return super.triple(n) * super.triple(n);
- }
-}
-
-var tripler = new Tripler();
-
-assert.equal(Tripler.triple(), 3);
-assert.equal(Tripler.triple(2), 6);
-assert.equal(tripler.triple, undefined);
-
-assert.equal(Tripler.toString(), '3' + Object.toString.call(Tripler) + '3');
-
-var mega = new MegaTripler();
-
-assert.equal(MegaTripler.triple(2), 36);
-assert.equal(mega.triple, undefined);
-
-assert.equal(MegaTripler.toString(), '3' + Object.toString.call(MegaTripler) + '3');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/static-setter.js b/packages/babel-core/test/fixtures/esnext/es6-classes/static-setter.js
deleted file mode 100644
index 08fae30af5..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/static-setter.js
+++ /dev/null
@@ -1,7 +0,0 @@
-class Person {
- static set DB(value) {
- assert.equal(value, 'mysql');
- }
-}
-
-Person.DB = 'mysql';
diff --git a/packages/babel-core/test/fixtures/esnext/es6-classes/super-change-proto.js b/packages/babel-core/test/fixtures/esnext/es6-classes/super-change-proto.js
deleted file mode 100644
index 01058549c9..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-classes/super-change-proto.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var log = '';
-
-class Base {
- p() { log += '[Base]'; }
-}
-
-class OtherBase {
- p() { log += '[OtherBase]'; }
-}
-
-class Derived extends Base {
- p() {
- log += '[Derived]';
- super.p();
- Derived.prototype.__proto__ = OtherBase.prototype;
- super.p();
- }
-}
-
-new Derived().p();
-assert.equal(log, '[Derived][Base][OtherBase]');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/accessor.js b/packages/babel-core/test/fixtures/esnext/es6-computed-properties/accessor.js
deleted file mode 100644
index bedcb7785a..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/accessor.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var x = 'y';
-
-var foo = {
- get [x]() { return this._y; },
- set [x](v) { this._y = v; }
-};
-
-assert.equal((foo.y = 10, foo.y), 10);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/method.js b/packages/babel-core/test/fixtures/esnext/es6-computed-properties/method.js
deleted file mode 100644
index e28e4d18d5..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/method.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var x = 'y';
-assert.equal({[x]: function() { return 10; }}.y(), 10);
-assert.equal({[x + 'y']() { return 10; }}.yy(), 10);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/nested.js b/packages/babel-core/test/fixtures/esnext/es6-computed-properties/nested.js
deleted file mode 100644
index ea11b2c6f6..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/nested.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var x = 'y';
-var foo = {[x]: 10, z: {[x]: 10}};
-assert.equal(foo.y + foo.z.y, 20);
-assert.equal({[x]: {[x]: {[x]: 10}}}.y.y.y, 10);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/options.json b/packages/babel-core/test/fixtures/esnext/es6-computed-properties/options.json
deleted file mode 100644
index ed96b856f3..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "plugins": ["transform-es2015-computed-properties"]
-}
diff --git a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/simple.js b/packages/babel-core/test/fixtures/esnext/es6-computed-properties/simple.js
deleted file mode 100644
index 21e56afe58..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-computed-properties/simple.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var x = 'y';
-assert.equal({[x]: 10}.y, 10);
-assert.equal({[x + 'y']: 10}.yy, 10);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/arity.js b/packages/babel-core/test/fixtures/esnext/es6-default-parameters/arity.js
deleted file mode 100644
index 030f3e08ea..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/arity.js
+++ /dev/null
@@ -1,3 +0,0 @@
-assert.equal((function(a){}).length, 1);
-assert.equal((function(a=5){}).length, 0);
-assert.equal((function(a, b, c=5){}).length, 2);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/arrow-function.js b/packages/babel-core/test/fixtures/esnext/es6-default-parameters/arrow-function.js
deleted file mode 100644
index 66c0068d94..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/arrow-function.js
+++ /dev/null
@@ -1,8 +0,0 @@
-function makeMultiplier(x=1) {
- return (y=1) => x * y;
-}
-
-assert.equal(makeMultiplier()(), 1);
-assert.equal(makeMultiplier(2)(3), 6);
-assert.deepEqual([1, 2, 3].map(makeMultiplier(2)), [2, 4, 6]);
-assert.deepEqual([undefined, null, 0].map(makeMultiplier(2)), [2, 0, 0]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/null-vs-undefined.js b/packages/babel-core/test/fixtures/esnext/es6-default-parameters/null-vs-undefined.js
deleted file mode 100644
index b028ba3e09..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/null-vs-undefined.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function foo(x=5, y=6) {
- return [x, y];
-}
-
-assert.deepEqual(foo(undefined, null), [5, null]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/scope.js b/packages/babel-core/test/fixtures/esnext/es6-default-parameters/scope.js
deleted file mode 100644
index 54848cd8f2..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/scope.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function call(fn, context=this) {
- return fn.call(context);
-}
-
-var context = {a: 99};
-
-// use the default parameter
-assert.strictEqual(call.call(context, function(){ return this.a; }), 99);
-
-// explicitly provide the default parameter value
-assert.strictEqual(call(function(){ return this.a; }, context), 99);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/simple-function.js b/packages/babel-core/test/fixtures/esnext/es6-default-parameters/simple-function.js
deleted file mode 100644
index d7bf1bfa1c..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-default-parameters/simple-function.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function foo(x=5) {
- return x;
-}
-assert.equal(foo(), 5);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-arguments.js b/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-arguments.js
deleted file mode 100644
index 392586fc9b..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-arguments.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var a = {
- echo(c) {
- return c;
- }
-};
-
-assert.strictEqual(a.echo(1), 1);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-context.js b/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-context.js
deleted file mode 100644
index 53c4bf3bc7..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-context.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var a = {
- b() {
- return this;
- }
-};
-
-var context = {};
-assert.strictEqual(a.b(), a);
-assert.strictEqual(a.b.call(context), context);
\ No newline at end of file
diff --git a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-has-name.js b/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-has-name.js
deleted file mode 100644
index 320ec33b54..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-has-name.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var a = {
- b() {
- return 'c';
- }
-};
-
-assert.equal(a.b.name, 'b');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-is-not-in-scope-inside.js b/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-is-not-in-scope-inside.js
deleted file mode 100644
index 4f58980df0..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method-is-not-in-scope-inside.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var b = 1;
-
-var a = {
- b() {
- return b;
- }
-};
-
-assert.equal(a.b(), 1);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method.js b/packages/babel-core/test/fixtures/esnext/es6-object-concise/method.js
deleted file mode 100644
index 1707a7aebb..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-object-concise/method.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var a = {
- b() {
- return 'c';
- }
-};
-
-assert.equal(a.b(), 'c');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/arrow-fn.js b/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/arrow-fn.js
deleted file mode 100644
index eb9d8ea8c5..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/arrow-fn.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var join = (joinStr, ...items) => {
- return items.join(joinStr);
-};
-
-assert.deepEqual(join(' ', 'a', 'b', 'c'), 'a b c');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/declaration.js b/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/declaration.js
deleted file mode 100644
index 2d3ca5d283..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/declaration.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function join(joinStr, ...items) {
- return items.join(joinStr);
-}
-
-assert.deepEqual(join(' ', 'a', 'b', 'c'), 'a b c');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/rest.js b/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/rest.js
deleted file mode 100644
index 769bf2d2a4..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-rest-parameters/rest.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var join = function(joinStr, ...items) {
- return items.join(joinStr);
-};
-
-assert.deepEqual(join(' ', 'a', 'b', 'c'), 'a b c');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/arguments-as-array.js b/packages/babel-core/test/fixtures/esnext/es6-spread/arguments-as-array.js
deleted file mode 100644
index d0957e35b4..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/arguments-as-array.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function arrayOf() {
- return [...arguments];
-}
-
-assert.equal(Object.prototype.toString.call(arrayOf()), '[object Array]');
-assert.deepEqual(arrayOf(1, 2, 3), [1, 2, 3]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/array-literal.js b/packages/babel-core/test/fixtures/esnext/es6-spread/array-literal.js
deleted file mode 100644
index 3c1bea826f..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/array-literal.js
+++ /dev/null
@@ -1,3 +0,0 @@
-var names = ['Brian', 'Madeline'];
-assert.deepEqual(['Thomas', ...names], ['Thomas', 'Brian', 'Madeline']);
-assert.deepEqual([1, 2, ...[3, 4, 5]], [1, 2, 3, 4, 5]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/call-with-array-literal.js b/packages/babel-core/test/fixtures/esnext/es6-spread/call-with-array-literal.js
deleted file mode 100644
index 19cffabc6d..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/call-with-array-literal.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function sum(...numbers) {
- return numbers.reduce(function(sum, n) { return n + sum; }, 0);
-}
-
-assert.equal(sum(4, 5, ...[10, 20, 30]), 69);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/inside-function-expression.js b/packages/babel-core/test/fixtures/esnext/es6-spread/inside-function-expression.js
deleted file mode 100644
index c2c06da399..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/inside-function-expression.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var object = {
- list: [],
-
- append: function(...items) {
- this.list.push(...items);
- }
-};
-
-object.append(1, 2, ...[3, 4]);
-assert.deepEqual(object.list, [1, 2, 3, 4]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/iterator.js b/packages/babel-core/test/fixtures/esnext/es6-spread/iterator.js
deleted file mode 100644
index 6e5ef15ba2..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/iterator.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var obj = {
- [Symbol.iterator]: function() {
- var ttl = 3;
- return {
- next: function() {
- if (ttl === 0) {
- return { done: true, value: null };
- } else {
- return { done: false, value: ttl-- };
- }
- }
- };
- }
-};
-
-assert.deepEqual([3, 2, 1], [...obj]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/new-object.js b/packages/babel-core/test/fixtures/esnext/es6-spread/new-object.js
deleted file mode 100644
index 6e4af74279..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/new-object.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var callCount = 0;
-function getArray() {
- callCount++;
- return Array;
-}
-
-assert.deepEqual([1, 2, 3], new Array(...[1, 2, 3]));
-
-// Ensure the expression of the function being initialized is not copied.
-assert.deepEqual([1, 2, 3], new (getArray())(...[1, 2, 3]));
-assert.equal(callCount, 1);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/preserve-context.js b/packages/babel-core/test/fixtures/esnext/es6-spread/preserve-context.js
deleted file mode 100644
index e63f88e788..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/preserve-context.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var MATH = {
- sum: function(...numbers) {
- return numbers.reduce(this.add, 0);
- },
-
- add: function(a, b) {
- return a + b;
- }
-};
-
-assert.equal(MATH.sum(1, ...[2, 3]), 6);
-
-// Ensure that the below does not expand to this:
-//
-// obj.getSelf().call.apply(obj.getSelf(), []);
-//
-
-var ops = [];
-var obj = {
- getSelf: function() {
- ops.push('getSelf');
- return this;
- },
-
- doCall: function() {
- ops.push('doCall', this);
- }
-};
-
-obj.getSelf().doCall(...[]);
-assert.deepEqual(ops, ['getSelf', 'doCall', obj]);
-
-ops = [];
-obj['getSelf']().doCall(...[]);
-assert.deepEqual(ops, ['getSelf', 'doCall', obj]);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-spread/simple-function-call.js b/packages/babel-core/test/fixtures/esnext/es6-spread/simple-function-call.js
deleted file mode 100644
index 106bfa55be..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-spread/simple-function-call.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function sum(...numbers) {
- return numbers.reduce(function(sum, n) { return n + sum; }, 0);
-}
-
-var numbers = [1, 2, 3];
-assert.equal(sum(...numbers), 6);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/multi-line.js b/packages/babel-core/test/fixtures/esnext/es6-templates/multi-line.js
deleted file mode 100644
index 6d1be1c2bc..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/multi-line.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var s = `a
- b
- c`;
-assert.equal(s, 'a\n b\n c');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/nested-interpolation.js b/packages/babel-core/test/fixtures/esnext/es6-templates/nested-interpolation.js
deleted file mode 100644
index 83083e9fd0..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/nested-interpolation.js
+++ /dev/null
@@ -1,4 +0,0 @@
-assert.strictEqual(
- `a${1}b${`${1+1}c`}3`,
- 'a1b2c3'
-);
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/no-interpolation.js b/packages/babel-core/test/fixtures/esnext/es6-templates/no-interpolation.js
deleted file mode 100644
index 1854b04ff5..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/no-interpolation.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var s = `str`;
-assert.equal(s, 'str');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/options.json b/packages/babel-core/test/fixtures/esnext/es6-templates/options.json
deleted file mode 100644
index 341222f184..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "plugins": ["transform-es2015-template-literals"]
-}
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/raw-tagged-template-expression.js b/packages/babel-core/test/fixtures/esnext/es6-templates/raw-tagged-template-expression.js
deleted file mode 100644
index 831ad050ab..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/raw-tagged-template-expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function r(strings) {
- assert.equal(strings.raw[0], '\\n');
- return strings.raw.join('');
-}
-
-assert.equal(r `\n`, '\\n');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/simple-interpolation.js b/packages/babel-core/test/fixtures/esnext/es6-templates/simple-interpolation.js
deleted file mode 100644
index b96a02a543..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/simple-interpolation.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var s = `1 + 1 = ${1 + 1}`;
-assert.equal(s, '1 + 1 = 2');
diff --git a/packages/babel-core/test/fixtures/esnext/es6-templates/tagged-template-expression.js b/packages/babel-core/test/fixtures/esnext/es6-templates/tagged-template-expression.js
deleted file mode 100644
index 5b894c55ac..0000000000
--- a/packages/babel-core/test/fixtures/esnext/es6-templates/tagged-template-expression.js
+++ /dev/null
@@ -1,26 +0,0 @@
-function tag(strings) {
- var values = [].slice.call(arguments, 1);
- assert.equal(strings[0], 'a');
- assert.equal(strings[1], 'b');
- assert.equal(values[0], 42);
- return 'whatever';
-}
-assert.equal(tag `a${ 42 }b`, 'whatever');
-
-function tagInterpolateFirst(strings) {
- var values = [].slice.call(arguments, 1);
- assert.equal(strings[0], '');
- assert.equal(strings[1], 'b');
- assert.equal(values[0], 42);
- return 'whatever';
-}
-assert.equal(tagInterpolateFirst `${ 42 }b`, 'whatever');
-
-function tagInterpolateLast(strings) {
- var values = [].slice.call(arguments, 1);
- assert.equal(strings[0], 'a');
- assert.equal(strings[1], '');
- assert.equal(values[0], 42);
- return 'whatever';
-}
-assert.equal(tagInterpolateLast `a${ 42 }`, 'whatever');
diff --git a/packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/actual.js b/packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/actual.js
deleted file mode 100644
index 2beaed5903..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo() {
- bar();
- if (foo) {
- bar();
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/expected.js b/packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/expected.js
deleted file mode 100644
index 2beaed5903..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-indentation/hard-tab/expected.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo() {
- bar();
- if (foo) {
- bar();
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/actual.js b/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/actual.js
deleted file mode 100644
index 017db5a0f8..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo() {
- bar();
- if (foo) {
- bar();
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/expected.js b/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/expected.js
deleted file mode 100644
index 017db5a0f8..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-2/expected.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo() {
- bar();
- if (foo) {
- bar();
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/actual.js b/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/actual.js
deleted file mode 100644
index 9f080a2650..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo() {
- bar();
- if (foo) {
- bar();
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/expected.js b/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/expected.js
deleted file mode 100644
index 9f080a2650..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-indentation/soft-tab-4/expected.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo() {
- bar();
- if (foo) {
- bar();
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/auto-string/double/actual.js b/packages/babel-core/test/fixtures/generation/auto-string/double/actual.js
deleted file mode 100644
index 5a8fcf7e29..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-string/double/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-foo("foo");
-foo("foo\nlol");
-foo("foo\n\"lol");
-foo("foo\n\"'lol");
diff --git a/packages/babel-core/test/fixtures/generation/auto-string/double/expected.js b/packages/babel-core/test/fixtures/generation/auto-string/double/expected.js
deleted file mode 100644
index 5a8fcf7e29..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-string/double/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-foo("foo");
-foo("foo\nlol");
-foo("foo\n\"lol");
-foo("foo\n\"'lol");
diff --git a/packages/babel-core/test/fixtures/generation/auto-string/single/actual.js b/packages/babel-core/test/fixtures/generation/auto-string/single/actual.js
deleted file mode 100644
index 1d8e7531c9..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-string/single/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-foo('foo');
-foo('foo\nlol');
-foo('foo\n"lol');
-foo('foo\n"\'lol');
diff --git a/packages/babel-core/test/fixtures/generation/auto-string/single/expected.js b/packages/babel-core/test/fixtures/generation/auto-string/single/expected.js
deleted file mode 100644
index 1d8e7531c9..0000000000
--- a/packages/babel-core/test/fixtures/generation/auto-string/single/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-foo('foo');
-foo('foo\nlol');
-foo('foo\n"lol');
-foo('foo\n"\'lol');
diff --git a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/actual.js b/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/actual.js
deleted file mode 100644
index aa61a9c8fe..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/actual.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function test() {
-
-
- /*
- * this is comment
- */
-
-
- var i = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/expected.js b/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/expected.js
deleted file mode 100644
index 62aee76944..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment-with-space/expected.js
+++ /dev/null
@@ -1,8 +0,0 @@
-function test() {
-
- /*
- * this is comment
- */
-
- var i = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/actual.js
deleted file mode 100644
index 1cacd84afd..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function test() {
- /*
- * this is comment
- */
- var i = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/expected.js
deleted file mode 100644
index 1cacd84afd..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/2-space-multi-comment/expected.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function test() {
- /*
- * this is comment
- */
- var i = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/actual.js b/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/actual.js
deleted file mode 100644
index 5c85ac0e06..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- print("hello");
- // comment
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/expected.js b/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/expected.js
deleted file mode 100644
index 5c85ac0e06..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- print("hello");
- // comment
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/options.json b/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/options.json
deleted file mode 100644
index 97925bbcb6..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/block-line-comment-with-retainlines-option/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "retainLines": true
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/block-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/block-line-comment/actual.js
deleted file mode 100644
index ddc9499b49..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/block-line-comment/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// Leading to block
-{
- print("hello");
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/block-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/block-line-comment/expected.js
deleted file mode 100644
index ddc9499b49..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/block-line-comment/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// Leading to block
-{
- print("hello");
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/actual.js b/packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/actual.js
deleted file mode 100644
index befcf38bfa..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/actual.js
+++ /dev/null
@@ -1,7 +0,0 @@
-
-// from #23
-
-/**/
-
-/*
-*/
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/expected.js b/packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/expected.js
deleted file mode 100644
index befcf38bfa..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-only-with-space/expected.js
+++ /dev/null
@@ -1,7 +0,0 @@
-
-// from #23
-
-/**/
-
-/*
-*/
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-only/actual.js b/packages/babel-core/test/fixtures/generation/comments/comment-only/actual.js
deleted file mode 100644
index acfb1b9a7b..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-only/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// from #23
-/**/
-/*
-*/
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-only/expected.js b/packages/babel-core/test/fixtures/generation/comments/comment-only/expected.js
deleted file mode 100644
index acfb1b9a7b..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-only/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-// from #23
-/**/
-/*
-*/
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/actual.js b/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/actual.js
deleted file mode 100644
index 7f2608b525..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-// comment
-print("hello");
-
-// comment2
-print("hello2");
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/expected.js b/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/expected.js
deleted file mode 100644
index 7f2608b525..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/expected.js
+++ /dev/null
@@ -1,5 +0,0 @@
-// comment
-print("hello");
-
-// comment2
-print("hello2");
diff --git a/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/options.json b/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/options.json
deleted file mode 100644
index 97925bbcb6..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/comment-statement-with-retainlines-option/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "retainLines": true
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/actual.js b/packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/actual.js
deleted file mode 100644
index 0c0c0272a5..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/actual.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var test = {
- /**
- * Before bracket init
- */
- ["a"]:"1",
- [/*
- * Inside bracket init
- */
- "b"]:"2"
- }, ok = 42;
diff --git a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/expected.js b/packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/expected.js
deleted file mode 100644
index 1ad3a0f35f..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments-2/expected.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var test = {
- /**
- * Before bracket init
- */
- ["a"]: "1",
- [/*
- * Inside bracket init
- */
- "b"]: "2"
-},
- ok = 42;
diff --git a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments/actual.js b/packages/babel-core/test/fixtures/generation/comments/computed-property-comments/actual.js
deleted file mode 100644
index 0c7aae7d18..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments/actual.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var test = {
- /**
- * Before bracket init
- */
- ["a"]:"1",
-
- [/*
- * Inside bracket init
- */
- "b"]:"2",
-
- ["c"
- /*
- * After bracket key
- */]:"3",
-
- // Before bracket, line comment
- [
- "d"]:"4",
-
- [
- // Inside bracket, line comment
- "e"]:"5",
-
- ["f"
- // After bracket, line comment
- ]:"6"
-};
diff --git a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments/expected.js b/packages/babel-core/test/fixtures/generation/comments/computed-property-comments/expected.js
deleted file mode 100644
index c6ffd441f8..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/computed-property-comments/expected.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var test = {
- /**
- * Before bracket init
- */
- ["a"]: "1",
-
- [/*
- * Inside bracket init
- */
- "b"]: "2",
-
- ["c"
- /*
- * After bracket key
- */]: "3",
-
- // Before bracket, line comment
- ["d"]: "4",
-
- [
- // Inside bracket, line comment
- "e"]: "5",
-
- ["f"
- // After bracket, line comment
- ]: "6"
-};
diff --git a/packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/actual.js
deleted file mode 100644
index 760ae4934e..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-do {
-} // LINE
-while (true);
diff --git a/packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/expected.js
deleted file mode 100644
index dbcec4152a..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/do-while-line-comment/expected.js
+++ /dev/null
@@ -1,2 +0,0 @@
-do {} // LINE
-while (true);
diff --git a/packages/babel-core/test/fixtures/generation/comments/empty-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/empty-line-comment/actual.js
deleted file mode 100644
index ea9f2a7244..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/empty-line-comment/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function test() {
-// Leading to EmptyStatement
-; // Trailing to EmptyStatement
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/empty-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/empty-line-comment/expected.js
deleted file mode 100644
index 118cbc17a2..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/empty-line-comment/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function test() {
- // Leading to EmptyStatement
- ; // Trailing to EmptyStatement
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/empty/actual.js b/packages/babel-core/test/fixtures/generation/comments/empty/actual.js
deleted file mode 100644
index 8b13789179..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/empty/actual.js
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/babel-core/test/fixtures/generation/comments/empty/expected.js b/packages/babel-core/test/fixtures/generation/comments/empty/expected.js
deleted file mode 100644
index 8b13789179..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/empty/expected.js
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/actual.js
deleted file mode 100644
index 105b25217c..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-!function(){}//
-,42;
-!{get 42(){}//
-,foo:42};
-(function(){}//
-)
diff --git a/packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/expected.js
deleted file mode 100644
index d6802cba24..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/function-block-line-comment/expected.js
+++ /dev/null
@@ -1,6 +0,0 @@
-!function () {}, //
-42;
-!{ get 42() {}, //
- foo: 42 };
-(function () {});
-//
diff --git a/packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/actual.js
deleted file mode 100644
index a17714740f..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-if (cond)
- // Leading to if-block
-{
- print("hello");
-} // Trailing to if-block
diff --git a/packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/expected.js
deleted file mode 100644
index cc93b54438..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/if-block-line-comment/expected.js
+++ /dev/null
@@ -1,5 +0,0 @@
-if (cond)
- // Leading to if-block
- {
- print("hello");
- } // Trailing to if-block
diff --git a/packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/actual.js
deleted file mode 100644
index 524b81aa7e..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-if (cond)
-// Leading to EmptyStatement
- ; // Trailing to EmptyStatement
diff --git a/packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/expected.js
deleted file mode 100644
index bcb989f64f..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/if-empty-line-comment/expected.js
+++ /dev/null
@@ -1,3 +0,0 @@
-if (cond)
- // Leading to EmptyStatement
- ; // Trailing to EmptyStatement
diff --git a/packages/babel-core/test/fixtures/generation/comments/if-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/if-line-comment/actual.js
deleted file mode 100644
index c6ce430feb..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/if-line-comment/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-function test() {
-// Leading if statement
- if (cond) {print("hello") }
-// Trailing if-block statement
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/if-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/if-line-comment/expected.js
deleted file mode 100644
index 065ba70e81..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/if-line-comment/expected.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function test() {
- // Leading if statement
- if (cond) {
- print("hello");
- }
- // Trailing if-block statement
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/object_comments/actual.js b/packages/babel-core/test/fixtures/generation/comments/object_comments/actual.js
deleted file mode 100644
index ec76f88897..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/object_comments/actual.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var test = {
- /**
- * Test 2
- */
- a:"1",
- /*
- * Test 1
- */
- b:"2",
- // Test 3
- c:"3"
-};
diff --git a/packages/babel-core/test/fixtures/generation/comments/object_comments/expected.js b/packages/babel-core/test/fixtures/generation/comments/object_comments/expected.js
deleted file mode 100644
index d835befd05..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/object_comments/expected.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var test = {
- /**
- * Test 2
- */
- a: "1",
- /*
- * Test 1
- */
- b: "2",
- // Test 3
- c: "3"
-};
diff --git a/packages/babel-core/test/fixtures/generation/comments/return-no-argument/actual.js b/packages/babel-core/test/fixtures/generation/comments/return-no-argument/actual.js
deleted file mode 100644
index a43f15d232..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/return-no-argument/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function() {
- return; // comment
-}());
diff --git a/packages/babel-core/test/fixtures/generation/comments/return-no-argument/expected.js b/packages/babel-core/test/fixtures/generation/comments/return-no-argument/expected.js
deleted file mode 100644
index 0dc96b3a8c..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/return-no-argument/expected.js
+++ /dev/null
@@ -1,3 +0,0 @@
-(function () {
- return; // comment
-})();
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/actual.js
deleted file mode 100644
index 4b9cd6df29..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/actual.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2012 Yusuke Suzuki
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-function test() {
-}
-
-
-
-// Copyright (C) 2012 Yusuke Suzuki
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/expected.js
deleted file mode 100644
index 47869b2606..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-line-comment/expected.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (C) 2012 Yusuke Suzuki
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-function test() {}
-
-// Copyright (C) 2012 Yusuke Suzuki
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/actual.js
deleted file mode 100644
index 1076529e0b..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/actual.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Copyright (C) 2012 Yusuke Suzuki
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-function test() {
-
-}
-
-/*
- Copyright (C) 2012 Yusuke Suzuki
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/expected.js
deleted file mode 100644
index de284d6c01..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-a-lot-of-multi-comment/expected.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (C) 2012 Yusuke Suzuki
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-function test() {}
-
-/*
- Copyright (C) 2012 Yusuke Suzuki
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/simple-line-comment/actual.js
deleted file mode 100644
index 780a9c2b4a..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-line-comment/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// Leading
-var i = 20;
-// Trailing
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/simple-line-comment/expected.js
deleted file mode 100644
index 780a9c2b4a..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-line-comment/expected.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// Leading
-var i = 20;
-// Trailing
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/actual.js
deleted file mode 100644
index e0ad4c2075..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/actual.js
+++ /dev/null
@@ -1,22 +0,0 @@
-function test() {
- /*
- * Leading comment
- */
-
- /*
- *
- * Leading comment 2
- *
- */
-
- var i = 20;
- /*
- * Trailing comment
- */
-
- /*
- *
- * Trailing comment 2
- *
- */
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/expected.js
deleted file mode 100644
index e0ad4c2075..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-multi-comment/expected.js
+++ /dev/null
@@ -1,22 +0,0 @@
-function test() {
- /*
- * Leading comment
- */
-
- /*
- *
- * Leading comment 2
- *
- */
-
- var i = 20;
- /*
- * Trailing comment
- */
-
- /*
- *
- * Trailing comment 2
- *
- */
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/actual.js
deleted file mode 100644
index 322d46769b..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/actual.js
+++ /dev/null
@@ -1 +0,0 @@
-; // Trailing
diff --git a/packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/expected.js
deleted file mode 100644
index 733f7f0c6b..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/simple-statement-comment/expected.js
+++ /dev/null
@@ -1 +0,0 @@
-; // Trailing
diff --git a/packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/actual.js
deleted file mode 100644
index 2ef66cdb71..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/actual.js
+++ /dev/null
@@ -1,12 +0,0 @@
-try{}//
-finally{}
-
-try{}
-catch(e){}//
-finally{}
-
-{
-try{}
-catch(e){}//
-finally{}
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/expected.js
deleted file mode 100644
index 034d32569f..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/try-block-line-comment/expected.js
+++ /dev/null
@@ -1,10 +0,0 @@
-try {} //
-finally {}
-
-try {} catch (e) {} //
-finally {}
-
-{
- try {} catch (e) {} //
- finally {}
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/actual.js
deleted file mode 100644
index 5cc784bea2..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/actual.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function test() {
- var
- // Leading to VariableDeclarator
- // Leading to VariableDeclarator
- i = 20,
- // Leading to VariableDeclarator
- // Leading to VariableDeclarator
- j = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/expected.js
deleted file mode 100644
index a7c1703428..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-line-comment/expected.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function test() {
- var
- // Leading to VariableDeclarator
- // Leading to VariableDeclarator
- i = 20,
-
- // Leading to VariableDeclarator
- // Leading to VariableDeclarator
- j = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/actual.js
deleted file mode 100644
index 41dcd3d3a9..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/actual.js
+++ /dev/null
@@ -1,13 +0,0 @@
-function test() {
- var
- /*
- * Leading to VariableDeclarator
- * Leading to VariableDeclarator
- */
- i = 20,
- /*
- * Leading to VariableDeclarator
- * Leading to VariableDeclarator
- */
- j = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/expected.js
deleted file mode 100644
index 84354421c2..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-multi-comment/expected.js
+++ /dev/null
@@ -1,14 +0,0 @@
-function test() {
- var
- /*
- * Leading to VariableDeclarator
- * Leading to VariableDeclarator
- */
- i = 20,
-
- /*
- * Leading to VariableDeclarator
- * Leading to VariableDeclarator
- */
- j = 20;
-}
diff --git a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/actual.js b/packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/actual.js
deleted file mode 100644
index 4ae8f0b59d..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/actual.js
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- var t = 20; /*
- * This is trailing comment
- */
-}
-
-{
- var tt = 20; /*
- * This is trailing comment
- */
-}
-{{
- var t = 20; /*
- * This is trailing comment
- */
-}}
diff --git a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/expected.js b/packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/expected.js
deleted file mode 100644
index 7819d36b16..0000000000
--- a/packages/babel-core/test/fixtures/generation/comments/variable-declarator-trailing-comment/expected.js
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- var t = 20; /*
- * This is trailing comment
- */
-}
-
-{
- var tt = 20; /*
- * This is trailing comment
- */
-}
-{
- {
- var t = 20; /*
- * This is trailing comment
- */
- }
-}
diff --git a/packages/babel-core/test/fixtures/generation/compact/options.json b/packages/babel-core/test/fixtures/generation/compact/options.json
deleted file mode 100644
index eb4e948bfa..0000000000
--- a/packages/babel-core/test/fixtures/generation/compact/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "compact": true
-}
diff --git a/packages/babel-core/test/fixtures/generation/compact/single-line-comment/actual.js b/packages/babel-core/test/fixtures/generation/compact/single-line-comment/actual.js
deleted file mode 100644
index e2589c7138..0000000000
--- a/packages/babel-core/test/fixtures/generation/compact/single-line-comment/actual.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// foo
-bar();
diff --git a/packages/babel-core/test/fixtures/generation/compact/single-line-comment/expected.js b/packages/babel-core/test/fixtures/generation/compact/single-line-comment/expected.js
deleted file mode 100644
index e2589c7138..0000000000
--- a/packages/babel-core/test/fixtures/generation/compact/single-line-comment/expected.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// foo
-bar();
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/actual.js
deleted file mode 100644
index 7c6969bfc8..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-x | y ^ z;
-x | (y ^ z);
-(x | y) ^ z;
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/expected.js
deleted file mode 100644
index ffcf91adde..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/bitwise-precedence/expected.js
+++ /dev/null
@@ -1,3 +0,0 @@
-x | y ^ z;
-x | y ^ z;
-(x | y) ^ z;
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/floating-point/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/floating-point/actual.js
deleted file mode 100644
index b38eebf513..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/floating-point/actual.js
+++ /dev/null
@@ -1,2 +0,0 @@
-1.1.valueOf();
-(1e+300).valueOf();
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/floating-point/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/floating-point/expected.js
deleted file mode 100644
index f0c3126dbe..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/floating-point/expected.js
+++ /dev/null
@@ -1,2 +0,0 @@
-1.1.valueOf();
-1e+300.valueOf();
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/actual.js
deleted file mode 100644
index f84b95ae6b..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/actual.js
+++ /dev/null
@@ -1,12 +0,0 @@
-for (var i = (1 in []) in []);
-for (var i = 1 in [] in []);
-for (var i = (10 * 10 in []) in []);
-for (var i = (10 + 10 in []) in []);
-for (var i = 10 + (10 in []) in []);
-for (var i = 10 + 10 in [] in []);
-for (var i = (1 in []);;);
-for ((1 in []);;);
-for (1 * (1 in []);;);
-for (1 * (1 + 1 in []);;);
-for (1 * ((1 + 1) in []);;);
-for (1 * (1 + (1 in []));;);
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/expected.js
deleted file mode 100644
index 029b11e515..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/for-in-no-in/expected.js
+++ /dev/null
@@ -1,12 +0,0 @@
-for (var i = (1 in []) in []);
-for (var i = 1 in ([] in []));
-for (var i = (10 * 10 in []) in []);
-for (var i = (10 + 10 in []) in []);
-for (var i = 10 + (10 in []) in []);
-for (var i = 10 + 10 in ([] in []));
-for (var i = (1 in []);;);
-for ((1 in []);;);
-for (1 * (1 in []);;);
-for (1 * (1 + 1 in []);;);
-for (1 * (1 + 1 in []);;);
-for (1 * (1 + (1 in []));;);
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/new-precedence/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/new-precedence/actual.js
deleted file mode 100644
index 7100c69c3d..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/new-precedence/actual.js
+++ /dev/null
@@ -1,9 +0,0 @@
-new (a().b)();
-new a().b();
-new (a()).b();
-new (a())();
-new new a(a)();
-new (new a())(a);
-(new a()).test;
-(new a().test);
-(new (a().test)());
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/new-precedence/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/new-precedence/expected.js
deleted file mode 100644
index 646afe94da..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/new-precedence/expected.js
+++ /dev/null
@@ -1,9 +0,0 @@
-new (a().b)();
-new a().b();
-new (a().b)();
-new (a())();
-new new a(a)();
-new new a()(a);
-new a().test;
-new a().test;
-new (a().test)();
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/actual.js
deleted file mode 100644
index cfbda48a0d..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-dejavu.Class.declare({
- method2: function () {}
-});
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/expected.js
deleted file mode 100644
index cfbda48a0d..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/one-property-with-line-terminator/expected.js
+++ /dev/null
@@ -1,3 +0,0 @@
-dejavu.Class.declare({
- method2: function () {}
-});
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/actual.js
deleted file mode 100644
index 2a0e91f010..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function foo(l) {
- return (
- // hi
- l
- );
-}
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/expected.js
deleted file mode 100644
index 042f71356d..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function foo(l){
-return (
-
-l);}
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/options.json b/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/options.json
deleted file mode 100644
index a3e2539639..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-and-compact-option/options.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "comments": false,
- "retainLines": true,
- "compact": true
-}
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/actual.js
deleted file mode 100644
index 3d4fdd63e3..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/actual.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function foo(l) {
- return (
- l
- );
-}
-
-function foo() {
- return (
- 1 && 2
- ) || 3;
-}
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/expected.js
deleted file mode 100644
index cc911760dc..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/expected.js
+++ /dev/null
@@ -1,10 +0,0 @@
-function foo(l) {
- return (
- l);}
-
-
-
-function foo() {
- return (
- 1 && 2 ||
- 3);}
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/options.json b/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/options.json
deleted file mode 100644
index 97925bbcb6..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/return-with-retainlines-option/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "retainLines": true
-}
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/unary-op/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/unary-op/actual.js
deleted file mode 100644
index 9f318cdb1f..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/unary-op/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-delete delete i;
-+ +i;
-!!i;
-+ ++i;
-- --i;
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/unary-op/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/unary-op/expected.js
deleted file mode 100644
index 9f318cdb1f..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/unary-op/expected.js
+++ /dev/null
@@ -1,5 +0,0 @@
-delete delete i;
-+ +i;
-!!i;
-+ ++i;
-- --i;
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/actual.js b/packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/actual.js
deleted file mode 100644
index 31fcb452eb..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var fact5 = function fact(n){
- if (n <= 1) return 1
- return n * fact(n - 1)
-}(5)
diff --git a/packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/expected.js b/packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/expected.js
deleted file mode 100644
index 0af0dd6ac0..0000000000
--- a/packages/babel-core/test/fixtures/generation/edgecase/variable-declaration/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var fact5 = (function fact(n) {
- if (n <= 1) return 1;
- return n * fact(n - 1);
-})(5);
diff --git a/packages/babel-core/test/fixtures/generation/flow/array-types/actual.js b/packages/babel-core/test/fixtures/generation/flow/array-types/actual.js
deleted file mode 100644
index 39f1c281a2..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/array-types/actual.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var a: number[];
-var a: ?number[];
-var a: (?number)[];
-var a: () => number[];
-var a: (() => number)[];
-var a: typeof A[];
diff --git a/packages/babel-core/test/fixtures/generation/flow/array-types/expected.js b/packages/babel-core/test/fixtures/generation/flow/array-types/expected.js
deleted file mode 100644
index 39f1c281a2..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/array-types/expected.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var a: number[];
-var a: ?number[];
-var a: (?number)[];
-var a: () => number[];
-var a: (() => number)[];
-var a: typeof A[];
diff --git a/packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/actual.js b/packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/actual.js
deleted file mode 100644
index 8573e6b69e..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/actual.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var foo: true;
-var bar: false;
diff --git a/packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/expected.js b/packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/expected.js
deleted file mode 100644
index 8573e6b69e..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/boolean-literal-types/expected.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var foo: true;
-var bar: false;
diff --git a/packages/babel-core/test/fixtures/generation/flow/call-properties/actual.js b/packages/babel-core/test/fixtures/generation/flow/call-properties/actual.js
deleted file mode 100644
index 62f0a1b259..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/call-properties/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var a: { (): number };
-var a: { (): number; };
-var a: { (): number; y: string; (x: string): string };
-var a: { (x: T): number; };
-interface A { (): number; };
diff --git a/packages/babel-core/test/fixtures/generation/flow/call-properties/expected.js b/packages/babel-core/test/fixtures/generation/flow/call-properties/expected.js
deleted file mode 100644
index 11d4f2a107..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/call-properties/expected.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var a: { (): number };
-var a: { (): number };
-var a: { y: string; (): number; (x: string): string; };
-var a: { (x: T): number };
-interface A { (): number };
diff --git a/packages/babel-core/test/fixtures/generation/flow/declare-module/actual.js b/packages/babel-core/test/fixtures/generation/flow/declare-module/actual.js
deleted file mode 100644
index 7612b7dc0d..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/declare-module/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-declare module A {}
-declare module "./a/b.js" {}
-declare module A { declare var x: number; }
-declare module A { declare function foo(): number; }
-declare module A { declare class B { foo(): number; } }
diff --git a/packages/babel-core/test/fixtures/generation/flow/declare-module/expected.js b/packages/babel-core/test/fixtures/generation/flow/declare-module/expected.js
deleted file mode 100644
index 0b6fbd09e0..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/declare-module/expected.js
+++ /dev/null
@@ -1,11 +0,0 @@
-declare module A {}
-declare module "./a/b.js" {}
-declare module A {
- declare var x: number;
-}
-declare module A {
- declare function foo(): number;
-}
-declare module A {
- declare class B { foo(): number }
-}
diff --git a/packages/babel-core/test/fixtures/generation/flow/declare-statements/actual.js b/packages/babel-core/test/fixtures/generation/flow/declare-statements/actual.js
deleted file mode 100644
index 369f608fa2..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/declare-statements/actual.js
+++ /dev/null
@@ -1,11 +0,0 @@
-declare var foo
-declare var foo;
-declare function foo(): void
-declare function foo(): void;
-declare function foo(): void;
-declare function foo(x: number, y: string): void;
-declare class A {}
-declare class A extends B { x: number }
-declare class A { static foo(): number; static x : string }
-declare class A { static [ indexer: number]: string }
-declare class A { static () : number }
diff --git a/packages/babel-core/test/fixtures/generation/flow/declare-statements/expected.js b/packages/babel-core/test/fixtures/generation/flow/declare-statements/expected.js
deleted file mode 100644
index 323cc86f70..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/declare-statements/expected.js
+++ /dev/null
@@ -1,11 +0,0 @@
-declare var foo;
-declare var foo;
-declare function foo(): void;
-declare function foo(): void;
-declare function foo(): void;
-declare function foo(x: number, y: string): void;
-declare class A {}
-declare class A extends B { x: number }
-declare class A { static foo(): number; static x: string; }
-declare class A { static [indexer: number]: string }
-declare class A { static (): number }
diff --git a/packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/actual.js b/packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/actual.js
deleted file mode 100644
index f55148215c..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/actual.js
+++ /dev/null
@@ -1,9 +0,0 @@
-interface A {};
-interface A extends B {};
-interface A extends B, C {};
-interface A { foo: () => number; };
-interface Dictionary { [index: string]: string; length: number; };
-class Foo implements Bar {}
-class Foo extends Bar implements Bat, Man {}
-class Foo extends class Bar implements Bat {} {}
-class Foo extends class Bar implements Bat {} implements Man {}
diff --git a/packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/expected.js b/packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/expected.js
deleted file mode 100644
index 90aafb539e..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/interfaces-module-and-script/expected.js
+++ /dev/null
@@ -1,9 +0,0 @@
-interface A {};
-interface A extends B {};
-interface A extends B, C {};
-interface A { foo(): number };
-interface Dictionary { length: number; [index: string]: string; };
-class Foo implements Bar {}
-class Foo extends Bar implements Bat, Man {}
-class Foo extends class Bar implements Bat {} {}
-class Foo extends class Bar implements Bat {} implements Man {}
diff --git a/packages/babel-core/test/fixtures/generation/flow/number-literal-types/actual.js b/packages/babel-core/test/fixtures/generation/flow/number-literal-types/actual.js
deleted file mode 100644
index 8aa0ffac4b..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/number-literal-types/actual.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var a: 123;
-var a: 123.0;
-var a: 0x7B;
-var a: 0b1111011;
-var a: 0o173;
diff --git a/packages/babel-core/test/fixtures/generation/flow/number-literal-types/expected.js b/packages/babel-core/test/fixtures/generation/flow/number-literal-types/expected.js
deleted file mode 100644
index 8aa0ffac4b..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/number-literal-types/expected.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var a: 123;
-var a: 123.0;
-var a: 0x7B;
-var a: 0b1111011;
-var a: 0o173;
diff --git a/packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/actual.js b/packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/actual.js
deleted file mode 100644
index 040a63c165..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var a: A.B;
-var a: A.B.C;
-var a: A.B;
-var a: typeof A.B;
diff --git a/packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/expected.js b/packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/expected.js
deleted file mode 100644
index 040a63c165..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/qualified-generic-type/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var a: A.B;
-var a: A.B.C;
-var a: A.B;
-var a: typeof A.B;
diff --git a/packages/babel-core/test/fixtures/generation/flow/string-literal-types/actual.js b/packages/babel-core/test/fixtures/generation/flow/string-literal-types/actual.js
deleted file mode 100644
index 6acd7f1342..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/string-literal-types/actual.js
+++ /dev/null
@@ -1,2 +0,0 @@
-function createElement(tagName: "div"): HTMLDivElement {}
-function createElement(tagName: 'div'): HTMLDivElement {}
diff --git a/packages/babel-core/test/fixtures/generation/flow/string-literal-types/expected.js b/packages/babel-core/test/fixtures/generation/flow/string-literal-types/expected.js
deleted file mode 100644
index 08c1053621..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/string-literal-types/expected.js
+++ /dev/null
@@ -1,2 +0,0 @@
-function createElement(tagName: "div"): HTMLDivElement {}
-function createElement(tagName: "div"): HTMLDivElement {}
diff --git a/packages/babel-core/test/fixtures/generation/flow/tuples/actual.js b/packages/babel-core/test/fixtures/generation/flow/tuples/actual.js
deleted file mode 100644
index 4c4291e8b2..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/tuples/actual.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var a: [] = [];
-var a: [Foo] = [foo];
-var a: [number,] = [123,];
-var a: [number, string] = [123, "duck"];
diff --git a/packages/babel-core/test/fixtures/generation/flow/tuples/expected.js b/packages/babel-core/test/fixtures/generation/flow/tuples/expected.js
deleted file mode 100644
index 2fb1a921e0..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/tuples/expected.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var a: [] = [];
-var a: [Foo] = [foo];
-var a: [number] = [123];
-var a: [number, string] = [123, "duck"];
diff --git a/packages/babel-core/test/fixtures/generation/flow/type-alias/actual.js b/packages/babel-core/test/fixtures/generation/flow/type-alias/actual.js
deleted file mode 100644
index a56fa1a17b..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/type-alias/actual.js
+++ /dev/null
@@ -1,3 +0,0 @@
-type FBID = number;
-type Foo = Bar
-export type Foo = number;
diff --git a/packages/babel-core/test/fixtures/generation/flow/type-alias/expected.js b/packages/babel-core/test/fixtures/generation/flow/type-alias/expected.js
deleted file mode 100644
index f0a50c1904..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/type-alias/expected.js
+++ /dev/null
@@ -1,3 +0,0 @@
-type FBID = number;
-type Foo = Bar;
-export type Foo = number;
diff --git a/packages/babel-core/test/fixtures/generation/flow/type-annotations/actual.js b/packages/babel-core/test/fixtures/generation/flow/type-annotations/actual.js
deleted file mode 100644
index 2acac2f2d8..0000000000
--- a/packages/babel-core/test/fixtures/generation/flow/type-annotations/actual.js
+++ /dev/null
@@ -1,100 +0,0 @@
-function foo(numVal: any) {}
-function foo(numVal: number) {}
-function foo(numVal: number, strVal: string) {}
-function foo(numVal: number, untypedVal) {}
-function foo(untypedVal, numVal: number) {}
-function foo(nullableNum: ?number) {}
-function foo(callback: () => void) {}
-function foo(callback: () => number) {}
-function foo(callback: (_: bool) => number) {}
-function foo(callback: (_1: bool, _2: string) => number) {}
-function foo(callback: (_1: bool, ...foo: Array) => number) {}
-function foo(): number{}
-function foo():() => void {}
-function foo():(_:bool) => number{}
-function foo():(_?:bool) => number{}
-function foo(): {} {}
-function foo() {}
-function foo() {}
-function foo