diff --git a/packages/babel-types/src/asserts/generated/index.js b/packages/babel-types/src/asserts/generated/index.js index 60a91b88178d..db77578f01d1 100644 --- a/packages/babel-types/src/asserts/generated/index.js +++ b/packages/babel-types/src/asserts/generated/index.js @@ -836,6 +836,9 @@ 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 2cb9d5490c9d..926d4e3d62d8 100644 --- a/packages/babel-types/src/builders/generated/index.js +++ b/packages/babel-types/src/builders/generated/index.js @@ -781,6 +781,11 @@ 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 bcdb878b22c5..c3a650f69e0c 100644 --- a/packages/babel-types/src/definitions/typescript.js +++ b/packages/babel-types/src/definitions/typescript.js @@ -180,7 +180,7 @@ defineType("TSTypePredicate", { fields: { assertsModifier: validateOptionalType("TSAssertsKeyword"), parameterName: validateType(["Identifier", "TSThisType"]), - typeAnnotation: validateType("TSTypeAnnotation"), + typeAnnotation: validateOptionalType("TSTypeAnnotation"), }, }); diff --git a/packages/babel-types/src/validators/generated/index.js b/packages/babel-types/src/validators/generated/index.js index 84f44ef882cd..15ebabecaeee 100644 --- a/packages/babel-types/src/validators/generated/index.js +++ b/packages/babel-types/src/validators/generated/index.js @@ -2691,6 +2691,20 @@ 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; @@ -4365,6 +4379,7 @@ export function isTSType(node: ?Object, opts?: Object): boolean { "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || + "TSAssertsKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType ||