From 128cd3dd627e8cfd346b1ba58d4b03fe02b9c02b Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Mon, 14 Oct 2019 22:22:09 +0800 Subject: [PATCH] asserts modifier as boolean --- .../src/generators/typescript.js | 5 +-- .../src/plugins/typescript/index.js | 20 +++------- packages/babel-parser/src/types.js | 3 +- .../predicate-types/output.json | 4 +- .../arrow-function/output.json | 40 +++---------------- .../assert-predicate/asserts-var/output.json | 20 ++-------- .../asserts-with-predicate/output.json | 20 ++-------- .../function-declaration/output.json | 40 +++---------------- .../function/predicate-types/output.json | 8 ++-- .../src/asserts/generated/index.js | 3 -- .../src/builders/generated/index.js | 5 --- .../babel-types/src/definitions/typescript.js | 3 +- .../src/validators/generated/index.js | 15 ------- 13 files changed, 33 insertions(+), 153 deletions(-) diff --git a/packages/babel-generator/src/generators/typescript.js b/packages/babel-generator/src/generators/typescript.js index e21ee7649013..aa5e4ce4cde6 100644 --- a/packages/babel-generator/src/generators/typescript.js +++ b/packages/babel-generator/src/generators/typescript.js @@ -162,9 +162,6 @@ export function TSNullKeyword() { export function TSNeverKeyword() { this.word("never"); } -export function TSAssertsKeyword() { - this.word("asserts"); -} export function TSThisType() { this.word("this"); @@ -201,7 +198,7 @@ export function TSTypeReference(node) { export function TSTypePredicate(node) { if (node.assertsModifier) { - this.print(node.assertsModifier); + this.word("asserts"); this.space(); } this.print(node.parameterName); diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 1b211762e2ec..7ebe0ad44420 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -919,7 +919,7 @@ export default (superClass: Class): Class => } // : asserts foo - const node = this.startNodeAtNode(assertsModifier); + const node = this.startNodeAtNode(t); node.parameterName = this.parseIdentifier(); node.assertsModifier = assertsModifier; t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); @@ -928,9 +928,7 @@ export default (superClass: Class): Class => // : foo is type const type = this.tsParseTypeAnnotation(/* eatColon */ false); - const node = this.startNodeAtNode( - assertsModifier ? assertsModifier : typePredicateVariable, - ); + const node = this.startNodeAtNode(t); node.parameterName = typePredicateVariable; node.typeAnnotation = type; node.assertsModifier = assertsModifier; @@ -961,9 +959,9 @@ export default (superClass: Class): Class => } } - tsParseTypePredicateAssertsModifier(): ?N.TsKeywordType { + tsParseTypePredicateAssertsModifier(): boolean { if (!this.tsIsIdentifier()) { - return; + return false; } const id = this.parseIdentifier(); @@ -972,16 +970,10 @@ export default (superClass: Class): Class => this.hasPrecedingLineBreak() || !this.tsIsIdentifier() ) { - return; + return false; } - const assertsKeyword = this.startNodeAtNode(id); - return this.finishNodeAt( - assertsKeyword, - "TSAssertsKeyword", - id.end, - id.loc.end, - ); + return true; } tsParseTypeAnnotation( diff --git a/packages/babel-parser/src/types.js b/packages/babel-parser/src/types.js index 3a440e234afc..8560da3a3f73 100644 --- a/packages/babel-parser/src/types.js +++ b/packages/babel-parser/src/types.js @@ -1186,8 +1186,7 @@ export type TsKeywordTypeType = | "TSVoidKeyword" | "TSUndefinedKeyword" | "TSNullKeyword" - | "TSNeverKeyword" - | "TSAssertsKeyword"; + | "TSNeverKeyword"; export type TsKeywordType = TsTypeBase & { type: TsKeywordTypeType, }; diff --git a/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json b/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json index e1f9142855b1..45239b7a0c11 100644 --- a/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json +++ b/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json @@ -73,12 +73,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 10, + "start": 8, "end": 21, "loc": { "start": { "line": 1, - "column": 10 + "column": 8 }, "end": { "line": 1, diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json index 5a372009493c..e368637de0a9 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json @@ -105,12 +105,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 34, + "start": 32, "end": 57, "loc": { "start": { "line": 1, - "column": 34 + "column": 32 }, "end": { "line": 1, @@ -164,21 +164,7 @@ } } }, - "assertsModifier": { - "type": "TSAssertsKeyword", - "start": 34, - "end": 41, - "loc": { - "start": { - "line": 1, - "column": 34 - }, - "end": { - "line": 1, - "column": 41 - } - } - } + "assertsModifier": true } }, "id": null, @@ -331,12 +317,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 98, + "start": 96, "end": 111, "loc": { "start": { "line": 2, - "column": 34 + "column": 32 }, "end": { "line": 2, @@ -360,21 +346,7 @@ }, "name": "value" }, - "assertsModifier": { - "type": "TSAssertsKeyword", - "start": 98, - "end": 105, - "loc": { - "start": { - "line": 2, - "column": 34 - }, - "end": { - "line": 2, - "column": 41 - } - } - } + "assertsModifier": true } }, "id": null, diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json index 6654e164cdb5..a7b32e23d170 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json @@ -127,12 +127,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 49, + "start": 47, "end": 62, "loc": { "start": { "line": 1, - "column": 49 + "column": 47 }, "end": { "line": 1, @@ -156,21 +156,7 @@ }, "name": "value" }, - "assertsModifier": { - "type": "TSAssertsKeyword", - "start": 49, - "end": 56, - "loc": { - "start": { - "line": 1, - "column": 49 - }, - "end": { - "line": 1, - "column": 56 - } - } - } + "assertsModifier": true } }, "declare": true diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-with-predicate/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-with-predicate/output.json index 2615ded5136d..ca83a725e2d5 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-with-predicate/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-with-predicate/output.json @@ -127,12 +127,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 49, + "start": 47, "end": 72, "loc": { "start": { "line": 1, - "column": 49 + "column": 47 }, "end": { "line": 1, @@ -186,21 +186,7 @@ } } }, - "assertsModifier": { - "type": "TSAssertsKeyword", - "start": 49, - "end": 56, - "loc": { - "start": { - "line": 1, - "column": 49 - }, - "end": { - "line": 1, - "column": 56 - } - } - } + "assertsModifier": true } }, "declare": true diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json index e9332dff47f8..96aea85b2926 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json @@ -127,12 +127,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 36, + "start": 34, "end": 59, "loc": { "start": { "line": 1, - "column": 36 + "column": 34 }, "end": { "line": 1, @@ -186,21 +186,7 @@ } } }, - "assertsModifier": { - "type": "TSAssertsKeyword", - "start": 36, - "end": 43, - "loc": { - "start": { - "line": 1, - "column": 36 - }, - "end": { - "line": 1, - "column": 43 - } - } - } + "assertsModifier": true } }, "body": { @@ -319,12 +305,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 100, + "start": 98, "end": 113, "loc": { "start": { "line": 2, - "column": 36 + "column": 34 }, "end": { "line": 2, @@ -348,21 +334,7 @@ }, "name": "value" }, - "assertsModifier": { - "type": "TSAssertsKeyword", - "start": 100, - "end": 107, - "loc": { - "start": { - "line": 2, - "column": 36 - }, - "end": { - "line": 2, - "column": 43 - } - } - } + "assertsModifier": true } }, "body": { diff --git a/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json b/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json index 85ab4987f1c2..90bae5b4ceda 100644 --- a/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json +++ b/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json @@ -127,12 +127,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 20, + "start": 18, "end": 32, "loc": { "start": { "line": 1, - "column": 20 + "column": 18 }, "end": { "line": 1, @@ -302,12 +302,12 @@ }, "typeAnnotation": { "type": "TSTypePredicate", - "start": 55, + "start": 53, "end": 67, "loc": { "start": { "line": 2, - "column": 19 + "column": 17 }, "end": { "line": 2, diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index db77578f01d1..60a91b88178d 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -836,9 +836,6 @@ export function assertTSUnknownKeyword(node: Object, opts?: Object = {}): void { export function assertTSVoidKeyword(node: Object, opts?: Object = {}): void { assert("TSVoidKeyword", node, opts); } -export function assertTSAssertsKeyword(node: Object, opts?: Object = {}): void { - assert("TSAssertsKeyword", node, opts); -} export function assertTSThisType(node: Object, opts?: Object = {}): void { assert("TSThisType", node, opts); } diff --git a/packages/babel-types/src/builders/generated/index.js b/packages/babel-types/src/builders/generated/index.js index 926d4e3d62d8..2cb9d5490c9d 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -781,11 +781,6 @@ export function TSVoidKeyword(...args: Array): Object { } export { TSVoidKeyword as tsVoidKeyword }; export { TSVoidKeyword as tSVoidKeyword }; -export function TSAssertsKeyword(...args: Array): Object { - return builder("TSAssertsKeyword", ...args); -} -export { TSAssertsKeyword as tsAssertsKeyword }; -export { TSAssertsKeyword as tSAssertsKeyword }; export function TSThisType(...args: Array): Object { return builder("TSThisType", ...args); } diff --git a/packages/babel-types/src/definitions/typescript.js b/packages/babel-types/src/definitions/typescript.js index c3a650f69e0c..b20448af8d1e 100644 --- a/packages/babel-types/src/definitions/typescript.js +++ b/packages/babel-types/src/definitions/typescript.js @@ -139,7 +139,6 @@ const tsKeywordTypes = [ "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword", - "TSAssertsKeyword", ]; for (const type of tsKeywordTypes) { @@ -178,9 +177,9 @@ defineType("TSTypePredicate", { aliases: ["TSType"], visitor: ["parameterName", "typeAnnotation", "assertsModifier"], fields: { - assertsModifier: validateOptionalType("TSAssertsKeyword"), parameterName: validateType(["Identifier", "TSThisType"]), typeAnnotation: validateOptionalType("TSTypeAnnotation"), + assertsModifier: validate(bool), }, }); diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index 15ebabecaeee..84f44ef882cd 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -2691,20 +2691,6 @@ export function isTSVoidKeyword(node: ?Object, opts?: Object): boolean { return false; } -export function isTSAssertsKeyword(node: ?Object, opts?: Object): boolean { - if (!node) return false; - - const nodeType = node.type; - if (nodeType === "TSAssertsKeyword") { - if (typeof opts === "undefined") { - return true; - } else { - return shallowEqual(node, opts); - } - } - - return false; -} export function isTSThisType(node: ?Object, opts?: Object): boolean { if (!node) return false; @@ -4379,7 +4365,6 @@ export function isTSType(node: ?Object, opts?: Object): boolean { "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || - "TSAssertsKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType ||