From b3e208fcd03f27e26eddd90d6fd0c5e940bb1dc1 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Wed, 15 Feb 2017 14:45:21 -0500 Subject: [PATCH 1/6] Update to babylon@7.0.0-beta.0 --- packages/babel-core/package.json | 2 +- packages/babel-generator/package.json | 2 +- packages/babel-template/package.json | 2 +- packages/babel-traverse/package.json | 2 +- packages/babel-types/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 4e44376e71..1932064bab 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -34,7 +34,7 @@ "babel-register": "^6.23.0", "babel-traverse": "^6.23.1", "babel-types": "^6.23.0", - "babylon": "^6.11.0", + "babylon": "7.0.0-beta.0", "convert-source-map": "^1.1.0", "debug": "^2.1.1", "json5": "^0.5.0", diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index e45347d974..f6fe18b283 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -21,6 +21,6 @@ }, "devDependencies": { "babel-helper-fixtures": "^6.22.0", - "babylon": "^6.11.0" + "babylon": "7.0.0-beta.0" } } diff --git a/packages/babel-template/package.json b/packages/babel-template/package.json index d75b97caaf..927e65ee01 100644 --- a/packages/babel-template/package.json +++ b/packages/babel-template/package.json @@ -8,7 +8,7 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-template", "main": "lib/index.js", "dependencies": { - "babylon": "^6.11.0", + "babylon": "7.0.0-beta.0", "babel-traverse": "^6.23.0", "babel-types": "^6.23.0", "lodash": "^4.2.0" diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index 40de088ff3..f8a095e696 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -11,7 +11,7 @@ "babel-code-frame": "^6.22.0", "babel-messages": "^6.23.0", "babel-types": "^6.23.0", - "babylon": "^6.15.0", + "babylon": "7.0.0-beta.0", "debug": "^2.2.0", "globals": "^9.0.0", "invariant": "^2.2.0", diff --git a/packages/babel-types/package.json b/packages/babel-types/package.json index 5ed4524a29..9c1508b651 100644 --- a/packages/babel-types/package.json +++ b/packages/babel-types/package.json @@ -13,6 +13,6 @@ "to-fast-properties": "^1.0.1" }, "devDependencies": { - "babylon": "^6.8.2" + "babylon": "7.0.0-beta.0" } } From bc8f476d3333edbf61a0a4256b29f63180f0f568 Mon Sep 17 00:00:00 2001 From: Charles Pick Date: Wed, 15 Feb 2017 19:54:27 +0000 Subject: [PATCH 2/6] [7.0] Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#5229) --- lib/types.js | 10 +++++----- packages/babel-generator/src/generators/flow.js | 2 +- packages/babel-types/README.md | 6 +++--- packages/babel-types/src/definitions/flow.js | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/types.js b/lib/types.js index e42a516b4a..49b68c99d1 100644 --- a/lib/types.js +++ b/lib/types.js @@ -632,8 +632,8 @@ declare class BabelNodeNullableTypeAnnotation extends BabelNode { typeAnnotation: any; } -declare class BabelNodeNumericLiteralTypeAnnotation extends BabelNode { - type: "NumericLiteralTypeAnnotation"; +declare class BabelNodeNumberLiteralTypeAnnotation extends BabelNode { + type: "NumberLiteralTypeAnnotation"; } declare class BabelNodeNumberTypeAnnotation extends BabelNode { @@ -873,7 +873,7 @@ type BabelNodeClass = BabelNodeClassDeclaration | BabelNodeClassExpression; type BabelNodeModuleDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration; type BabelNodeExportDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration; type BabelNodeModuleSpecifier = BabelNodeExportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier; -type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeClassProperty | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeExistentialTypeParam | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumericLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeQualifiedTypeIdentifier | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation; +type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeClassProperty | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeExistentialTypeParam | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeQualifiedTypeIdentifier | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation; type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeVoidTypeAnnotation; type BabelNodeFlowDeclaration = BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias; type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText; @@ -974,7 +974,7 @@ declare module "babel-types" { declare function intersectionTypeAnnotation(types: any): BabelNodeIntersectionTypeAnnotation; declare function mixedTypeAnnotation(): BabelNodeMixedTypeAnnotation; declare function nullableTypeAnnotation(typeAnnotation: any): BabelNodeNullableTypeAnnotation; - declare function numericLiteralTypeAnnotation(): BabelNodeNumericLiteralTypeAnnotation; + declare function numberLiteralTypeAnnotation(): BabelNodeNumberLiteralTypeAnnotation; declare function numberTypeAnnotation(): BabelNodeNumberTypeAnnotation; declare function stringLiteralTypeAnnotation(): BabelNodeStringLiteralTypeAnnotation; declare function stringTypeAnnotation(): BabelNodeStringTypeAnnotation; @@ -1110,7 +1110,7 @@ declare module "babel-types" { declare function isIntersectionTypeAnnotation(node: Object, opts?: Object): boolean; declare function isMixedTypeAnnotation(node: Object, opts?: Object): boolean; declare function isNullableTypeAnnotation(node: Object, opts?: Object): boolean; - declare function isNumericLiteralTypeAnnotation(node: Object, opts?: Object): boolean; + declare function isNumberLiteralTypeAnnotation(node: Object, opts?: Object): boolean; declare function isNumberTypeAnnotation(node: Object, opts?: Object): boolean; declare function isStringLiteralTypeAnnotation(node: Object, opts?: Object): boolean; declare function isStringTypeAnnotation(node: Object, opts?: Object): boolean; diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index d8de870dee..484b5714d5 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -183,7 +183,7 @@ export function NullableTypeAnnotation(node: Object) { } export { - NumericLiteral as NumericLiteralTypeAnnotation, + NumericLiteral as NumberLiteralTypeAnnotation, StringLiteral as StringLiteralTypeAnnotation, } from "./types"; diff --git a/packages/babel-types/README.md b/packages/babel-types/README.md index 6833883629..5f4b25237d 100644 --- a/packages/babel-types/README.md +++ b/packages/babel-types/README.md @@ -1296,12 +1296,12 @@ Aliases: `Expression`, `Pureish`, `Literal`, `Immutable` --- -### numericLiteralTypeAnnotation +### numberLiteralTypeAnnotation ```javascript -t.numericLiteralTypeAnnotation() +t.numberLiteralTypeAnnotation() ``` -See also `t.isNumericLiteralTypeAnnotation(node, opts)` and `t.assertNumericLiteralTypeAnnotation(node, opts)`. +See also `t.isNumberLiteralTypeAnnotation(node, opts)` and `t.assertNumberLiteralTypeAnnotation(node, opts)`. Aliases: `Flow` diff --git a/packages/babel-types/src/definitions/flow.js b/packages/babel-types/src/definitions/flow.js index 208382420c..c12a16c39b 100644 --- a/packages/babel-types/src/definitions/flow.js +++ b/packages/babel-types/src/definitions/flow.js @@ -179,7 +179,7 @@ defineType("NullableTypeAnnotation", { } }); -defineType("NumericLiteralTypeAnnotation", { +defineType("NumberLiteralTypeAnnotation", { aliases: ["Flow"], fields: { // todo From 9188be9ed5697e61c26cc62d32379a9e7433ebec Mon Sep 17 00:00:00 2001 From: Toru Kobayashi Date: Thu, 16 Feb 2017 04:58:07 +0900 Subject: [PATCH 3/6] [7.0] Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#5199) --- lib/types.js | 10 +++++----- packages/babel-generator/src/generators/flow.js | 2 +- packages/babel-types/README.md | 6 +++--- packages/babel-types/src/definitions/flow.js | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/types.js b/lib/types.js index 49b68c99d1..869cd587f8 100644 --- a/lib/types.js +++ b/lib/types.js @@ -581,8 +581,8 @@ declare class BabelNodeDeclareVariable extends BabelNode { id: any; } -declare class BabelNodeExistentialTypeParam extends BabelNode { - type: "ExistentialTypeParam"; +declare class BabelNodeExistsTypeAnnotation extends BabelNode { + type: "ExistsTypeAnnotation"; } declare class BabelNodeFunctionTypeAnnotation extends BabelNode { @@ -873,7 +873,7 @@ type BabelNodeClass = BabelNodeClassDeclaration | BabelNodeClassExpression; type BabelNodeModuleDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration; type BabelNodeExportDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration; type BabelNodeModuleSpecifier = BabelNodeExportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier; -type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeClassProperty | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeExistentialTypeParam | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeQualifiedTypeIdentifier | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation; +type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeClassProperty | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeExistsTypeAnnotation | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeQualifiedTypeIdentifier | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation; type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeVoidTypeAnnotation; type BabelNodeFlowDeclaration = BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareVariable | BabelNodeInterfaceDeclaration | BabelNodeTypeAlias; type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText; @@ -965,7 +965,7 @@ declare module "babel-types" { declare function declareModuleExports(typeAnnotation: any): BabelNodeDeclareModuleExports; declare function declareTypeAlias(id: any, typeParameters: any, right: any): BabelNodeDeclareTypeAlias; declare function declareVariable(id: any): BabelNodeDeclareVariable; - declare function existentialTypeParam(): BabelNodeExistentialTypeParam; + declare function existsTypeAnnotation(): BabelNodeExistsTypeAnnotation; declare function functionTypeAnnotation(typeParameters: any, params: any, rest: any, returnType: any): BabelNodeFunctionTypeAnnotation; declare function functionTypeParam(name: any, typeAnnotation: any): BabelNodeFunctionTypeParam; declare function genericTypeAnnotation(id: any, typeParameters: any): BabelNodeGenericTypeAnnotation; @@ -1101,7 +1101,7 @@ declare module "babel-types" { declare function isDeclareModuleExports(node: Object, opts?: Object): boolean; declare function isDeclareTypeAlias(node: Object, opts?: Object): boolean; declare function isDeclareVariable(node: Object, opts?: Object): boolean; - declare function isExistentialTypeParam(node: Object, opts?: Object): boolean; + declare function isExistsTypeAnnotation(node: Object, opts?: Object): boolean; declare function isFunctionTypeAnnotation(node: Object, opts?: Object): boolean; declare function isFunctionTypeParam(node: Object, opts?: Object): boolean; declare function isGenericTypeAnnotation(node: Object, opts?: Object): boolean; diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index 484b5714d5..5d15dd379a 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -79,7 +79,7 @@ export function DeclareVariable(node: Object) { this.semicolon(); } -export function ExistentialTypeParam() { +export function ExistsTypeAnnotation() { this.token("*"); } diff --git a/packages/babel-types/README.md b/packages/babel-types/README.md index 5f4b25237d..582654eb98 100644 --- a/packages/babel-types/README.md +++ b/packages/babel-types/README.md @@ -575,12 +575,12 @@ Aliases: `Flow`, `FlowBaseAnnotation` --- -### existentialTypeParam +### existsTypeAnnotation ```javascript -t.existentialTypeParam() +t.existsTypeAnnotation() ``` -See also `t.isExistentialTypeParam(node, opts)` and `t.assertExistentialTypeParam(node, opts)`. +See also `t.isExistsTypeAnnotation(node, opts)` and `t.assertExistsTypeAnnotation(node, opts)`. Aliases: `Flow` diff --git a/packages/babel-types/src/definitions/flow.js b/packages/babel-types/src/definitions/flow.js index c12a16c39b..f18e1561b6 100644 --- a/packages/babel-types/src/definitions/flow.js +++ b/packages/babel-types/src/definitions/flow.js @@ -111,7 +111,7 @@ defineType("DeclareVariable", { } }); -defineType("ExistentialTypeParam", { +defineType("ExistsTypeAnnotation", { aliases: ["Flow"] }); From ca78da65013d36d53da8843534c64561c6bdde35 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Wed, 15 Feb 2017 22:37:19 +0100 Subject: [PATCH 4/6] Fix variance (#5320) --- packages/babel-generator/src/generators/flow.js | 10 ++++++---- packages/babel-generator/src/generators/types.js | 8 ++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index 5d15dd379a..0d90aa3e1c 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -146,10 +146,12 @@ export function _interfaceish(node: Object) { } export function _variance(node) { - if (node.variance === "plus") { - this.token("+"); - } else if (node.variance === "minus") { - this.token("-"); + if (node.variance) { + if (node.variance.kind === "plus") { + this.token("+"); + } else if (node.variance.kind === "minus") { + this.token("-"); + } } } diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index 5fada08e79..b61b53e142 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -2,14 +2,10 @@ import * as t from "babel-types"; import jsesc from "jsesc"; export function Identifier(node: Object) { - // FIXME: We hang variance off Identifer to support Flow's def-site variance. - // This is a terrible hack, but changing type annotations to use a new, - // dedicated node would be a breaking change. This should be cleaned up in - // the next major. if (node.variance) { - if (node.variance === "plus") { + if (node.variance.kind === "plus") { this.token("+"); - } else if (node.variance === "minus") { + } else if (node.variance.kind === "minus") { this.token("-"); } } From 7c62278dcdc12476fc394e0eb60e3e9ed74dfdd6 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Wed, 15 Feb 2017 23:29:09 +0100 Subject: [PATCH 5/6] [7.0] Change for-await to use new AST (#5321) --- .../src/generators/statements.js | 4 +--- .../src/index.js | 3 ++- .../fixtures/object-rest/for-x/expected.js | 4 ++-- packages/babel-types/README.md | 18 ++---------------- packages/babel-types/src/definitions/es2015.js | 4 ++++ .../src/definitions/experimental.js | 16 ---------------- 6 files changed, 11 insertions(+), 38 deletions(-) diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js index b9e8e736b3..e1492ad77c 100644 --- a/packages/babel-generator/src/generators/statements.js +++ b/packages/babel-generator/src/generators/statements.js @@ -84,10 +84,9 @@ const buildForXStatement = function (op) { return function (node: Object) { this.word("for"); this.space(); - if (op === "await") { + if (op === "of" && node.await) { this.word("await"); this.space(); - op = "of"; } this.token("("); @@ -103,7 +102,6 @@ const buildForXStatement = function (op) { export const ForInStatement = buildForXStatement("in"); export const ForOfStatement = buildForXStatement("of"); -export const ForAwaitStatement = buildForXStatement("await"); export function DoWhileStatement(node: Object) { this.word("do"); diff --git a/packages/babel-helper-remap-async-to-generator/src/index.js b/packages/babel-helper-remap-async-to-generator/src/index.js index deca1eb650..8cabe9ee06 100644 --- a/packages/babel-helper-remap-async-to-generator/src/index.js +++ b/packages/babel-helper-remap-async-to-generator/src/index.js @@ -41,8 +41,9 @@ const awaitVisitor = { } }, - ForAwaitStatement(path, { file, wrapAwait }) { + ForOfStatement(path, { file, wrapAwait }) { const { node } = path; + if (!node.await) return; const build = rewriteForAwait(path, { getAsyncIterator: file.addHelper("asyncIterator"), diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/for-x/expected.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/for-x/expected.js index 9617d7b78f..0cffd92db6 100644 --- a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/for-x/expected.js +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/for-x/expected.js @@ -18,11 +18,11 @@ async function a() { for ({ a } in {}) {} for ({ a } of []) {} async function a() { - for ({ a } of []) {} + for await ({ a } of []) {} } for (a in {}) {} for (a of []) {} async function a() { - for (a of []) {} + for await (a of []) {} } diff --git a/packages/babel-types/README.md b/packages/babel-types/README.md index 582654eb98..d058be9b71 100644 --- a/packages/babel-types/README.md +++ b/packages/babel-types/README.md @@ -694,21 +694,6 @@ See also `t.isFile(node, opts)` and `t.assertFile(node, opts)`. --- -### forAwaitStatement -```javascript -t.forAwaitStatement(left, right, body) -``` - -See also `t.isForAwaitStatement(node, opts)` and `t.assertForAwaitStatement(node, opts)`. - -Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement` - - - `left`: `VariableDeclaration | LVal` (required) - - `right`: `Expression` (required) - - `body`: `Statement` (required) - ---- - ### forInStatement ```javascript t.forInStatement(left, right, body) @@ -726,7 +711,7 @@ Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement` ### forOfStatement ```javascript -t.forOfStatement(left, right, body) +t.forOfStatement(left, right, body, await) ``` See also `t.isForOfStatement(node, opts)` and `t.assertForOfStatement(node, opts)`. @@ -736,6 +721,7 @@ Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement` - `left`: `VariableDeclaration | LVal` (required) - `right`: `Expression` (required) - `body`: `Statement` (required) + - `await`: `boolean` (default: `false`) --- diff --git a/packages/babel-types/src/definitions/es2015.js b/packages/babel-types/src/definitions/es2015.js index f0231478d3..028e6a0b18 100644 --- a/packages/babel-types/src/definitions/es2015.js +++ b/packages/babel-types/src/definitions/es2015.js @@ -178,6 +178,10 @@ defineType("ForOfStatement", { }, body: { validate: assertNodeType("Statement") + }, + await: { + default: false, + validate: assertValueType("boolean") } } }); diff --git a/packages/babel-types/src/definitions/experimental.js b/packages/babel-types/src/definitions/experimental.js index 17949eaa4c..f7561a864b 100644 --- a/packages/babel-types/src/definitions/experimental.js +++ b/packages/babel-types/src/definitions/experimental.js @@ -11,22 +11,6 @@ defineType("AwaitExpression", { } }); -defineType("ForAwaitStatement", { - visitor: ["left", "right", "body"], - aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], - fields: { - left: { - validate: assertNodeType("VariableDeclaration", "LVal") - }, - right: { - validate: assertNodeType("Expression") - }, - body: { - validate: assertNodeType("Statement") - } - } -}); - defineType("BindExpression", { visitor: ["object", "callee"], aliases: ["Expression"], From 7e540cdcc9a31d42bef50ded1aa55c7244b17b25 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Sat, 18 Feb 2017 12:30:46 +0100 Subject: [PATCH 6/6] Remove obsolete code --- packages/babel-generator/src/generators/types.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index b61b53e142..3f39421400 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -2,14 +2,6 @@ import * as t from "babel-types"; import jsesc from "jsesc"; export function Identifier(node: Object) { - if (node.variance) { - if (node.variance.kind === "plus") { - this.token("+"); - } else if (node.variance.kind === "minus") { - this.token("-"); - } - } - this.word(node.name); }