From a3b391dc3e7338d86b42297baa7b74cc91ea9344 Mon Sep 17 00:00:00 2001 From: Klaus Meinhardt Date: Sun, 17 Mar 2019 18:41:40 +0100 Subject: [PATCH] JSDocTypeTag.typeExpression is not optional --- src/compiler/checker.ts | 4 ++-- src/compiler/factory.ts | 2 +- src/compiler/parser.ts | 4 ++-- src/compiler/types.ts | 2 +- src/services/jsDoc.ts | 2 +- tests/baselines/reference/api/tsserverlibrary.d.ts | 2 +- tests/baselines/reference/api/typescript.d.ts | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5142d60851519..189e6f10d88e2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -18147,7 +18147,7 @@ namespace ts { case SyntaxKind.ParenthesizedExpression: { // Like in `checkParenthesizedExpression`, an `/** @type {xyz} */` comment before a parenthesized expression acts as a type cast. const tag = isInJSFile(parent) ? getJSDocTypeTag(parent) : undefined; - return tag ? getTypeFromTypeNode(tag.typeExpression!.type) : getContextualType(parent); + return tag ? getTypeFromTypeNode(tag.typeExpression.type) : getContextualType(parent); } case SyntaxKind.JsxExpression: return getContextualTypeForJsxExpression(parent); @@ -23705,7 +23705,7 @@ namespace ts { function checkParenthesizedExpression(node: ParenthesizedExpression, checkMode?: CheckMode): Type { const tag = isInJSFile(node) ? getJSDocTypeTag(node) : undefined; if (tag) { - return checkAssertionWorker(tag, tag.typeExpression!.type, node.expression, checkMode); + return checkAssertionWorker(tag, tag.typeExpression.type, node.expression, checkMode); } return checkExpression(node.expression, checkMode); } diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index 5f4299f1e2021..e94d5c71c8eff 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -2189,7 +2189,7 @@ namespace ts { } /* @internal */ - export function createJSDocTypeTag(typeExpression?: JSDocTypeExpression, comment?: string): JSDocTypeTag { + export function createJSDocTypeTag(typeExpression: JSDocTypeExpression, comment?: string): JSDocTypeTag { const tag = createJSDocTag(SyntaxKind.JSDocTypeTag, "type"); tag.typeExpression = typeExpression; tag.comment = comment; diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 03d0f166b81b8..6591c5ac20732 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -6794,7 +6794,7 @@ namespace ts { } function parseReturnTag(start: number, tagName: Identifier): JSDocReturnTag { - if (forEach(tags, t => t.kind === SyntaxKind.JSDocReturnTag)) { + if (some(tags, isJSDocReturnTag)) { parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText); } @@ -6805,7 +6805,7 @@ namespace ts { } function parseTypeTag(start: number, tagName: Identifier): JSDocTypeTag { - if (forEach(tags, t => t.kind === SyntaxKind.JSDocTypeTag)) { + if (some(tags, isJSDocTypeTag)) { parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText); } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index fbf83e6a205b4..9534a961060e4 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2480,7 +2480,7 @@ namespace ts { export interface JSDocTypeTag extends JSDocTag { kind: SyntaxKind.JSDocTypeTag; - typeExpression?: JSDocTypeExpression; + typeExpression: JSDocTypeExpression; } export interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts index 8016b0e9ff655..f14a3a1e5d528 100644 --- a/src/services/jsDoc.ts +++ b/src/services/jsDoc.ts @@ -134,7 +134,7 @@ namespace ts.JsDoc { case SyntaxKind.JSDocTemplateTag: return withList((tag as JSDocTemplateTag).typeParameters); case SyntaxKind.JSDocTypeTag: - return withNode((tag as JSDocTypeTag).typeExpression!); + return withNode((tag as JSDocTypeTag).typeExpression); case SyntaxKind.JSDocTypedefTag: case SyntaxKind.JSDocCallbackTag: case SyntaxKind.JSDocPropertyTag: diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 59ae825a8dc80..bfcac6957a71f 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -1601,7 +1601,7 @@ declare namespace ts { } interface JSDocTypeTag extends JSDocTag { kind: SyntaxKind.JSDocTypeTag; - typeExpression?: JSDocTypeExpression; + typeExpression: JSDocTypeExpression; } interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { parent: JSDoc; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 2b8056735a476..c7d4c33bd19c5 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -1601,7 +1601,7 @@ declare namespace ts { } interface JSDocTypeTag extends JSDocTag { kind: SyntaxKind.JSDocTypeTag; - typeExpression?: JSDocTypeExpression; + typeExpression: JSDocTypeExpression; } interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { parent: JSDoc;