JSDocTypeTag.typeExpression is not optional (#30452)

This commit is contained in:
Klaus Meinhardt 2019-04-30 18:46:32 +02:00 committed by Ryan Cavanaugh
parent 9efea31649
commit 5bc8a8dddf
7 changed files with 9 additions and 9 deletions

View file

@ -18613,7 +18613,7 @@ namespace ts {
case SyntaxKind.ParenthesizedExpression: { case SyntaxKind.ParenthesizedExpression: {
// Like in `checkParenthesizedExpression`, an `/** @type {xyz} */` comment before a parenthesized expression acts as a type cast. // Like in `checkParenthesizedExpression`, an `/** @type {xyz} */` comment before a parenthesized expression acts as a type cast.
const tag = isInJSFile(parent) ? getJSDocTypeTag(parent) : undefined; const tag = isInJSFile(parent) ? getJSDocTypeTag(parent) : undefined;
return tag ? getTypeFromTypeNode(tag.typeExpression!.type) : getContextualType(<ParenthesizedExpression>parent, contextFlags); return tag ? getTypeFromTypeNode(tag.typeExpression.type) : getContextualType(<ParenthesizedExpression>parent, contextFlags);
} }
case SyntaxKind.JsxExpression: case SyntaxKind.JsxExpression:
return getContextualTypeForJsxExpression(<JsxExpression>parent); return getContextualTypeForJsxExpression(<JsxExpression>parent);
@ -24231,7 +24231,7 @@ namespace ts {
function checkParenthesizedExpression(node: ParenthesizedExpression, checkMode?: CheckMode): Type { function checkParenthesizedExpression(node: ParenthesizedExpression, checkMode?: CheckMode): Type {
const tag = isInJSFile(node) ? getJSDocTypeTag(node) : undefined; const tag = isInJSFile(node) ? getJSDocTypeTag(node) : undefined;
if (tag) { 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); return checkExpression(node.expression, checkMode);
} }

View file

@ -2189,7 +2189,7 @@ namespace ts {
} }
/* @internal */ /* @internal */
export function createJSDocTypeTag(typeExpression?: JSDocTypeExpression, comment?: string): JSDocTypeTag { export function createJSDocTypeTag(typeExpression: JSDocTypeExpression, comment?: string): JSDocTypeTag {
const tag = createJSDocTag<JSDocTypeTag>(SyntaxKind.JSDocTypeTag, "type"); const tag = createJSDocTag<JSDocTypeTag>(SyntaxKind.JSDocTypeTag, "type");
tag.typeExpression = typeExpression; tag.typeExpression = typeExpression;
tag.comment = comment; tag.comment = comment;

View file

@ -6855,7 +6855,7 @@ namespace ts {
} }
function parseReturnTag(start: number, tagName: Identifier): JSDocReturnTag { 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); parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText);
} }
@ -6866,7 +6866,7 @@ namespace ts {
} }
function parseTypeTag(start: number, tagName: Identifier): JSDocTypeTag { 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); parseErrorAt(tagName.pos, scanner.getTokenPos(), Diagnostics._0_tag_already_specified, tagName.escapedText);
} }

View file

@ -2482,7 +2482,7 @@ namespace ts {
export interface JSDocTypeTag extends JSDocTag { export interface JSDocTypeTag extends JSDocTag {
kind: SyntaxKind.JSDocTypeTag; kind: SyntaxKind.JSDocTypeTag;
typeExpression?: JSDocTypeExpression; typeExpression: JSDocTypeExpression;
} }
export interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { export interface JSDocTypedefTag extends JSDocTag, NamedDeclaration {

View file

@ -134,7 +134,7 @@ namespace ts.JsDoc {
case SyntaxKind.JSDocTemplateTag: case SyntaxKind.JSDocTemplateTag:
return withList((tag as JSDocTemplateTag).typeParameters); return withList((tag as JSDocTemplateTag).typeParameters);
case SyntaxKind.JSDocTypeTag: case SyntaxKind.JSDocTypeTag:
return withNode((tag as JSDocTypeTag).typeExpression!); return withNode((tag as JSDocTypeTag).typeExpression);
case SyntaxKind.JSDocTypedefTag: case SyntaxKind.JSDocTypedefTag:
case SyntaxKind.JSDocCallbackTag: case SyntaxKind.JSDocCallbackTag:
case SyntaxKind.JSDocPropertyTag: case SyntaxKind.JSDocPropertyTag:

View file

@ -1603,7 +1603,7 @@ declare namespace ts {
} }
interface JSDocTypeTag extends JSDocTag { interface JSDocTypeTag extends JSDocTag {
kind: SyntaxKind.JSDocTypeTag; kind: SyntaxKind.JSDocTypeTag;
typeExpression?: JSDocTypeExpression; typeExpression: JSDocTypeExpression;
} }
interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { interface JSDocTypedefTag extends JSDocTag, NamedDeclaration {
parent: JSDoc; parent: JSDoc;

View file

@ -1603,7 +1603,7 @@ declare namespace ts {
} }
interface JSDocTypeTag extends JSDocTag { interface JSDocTypeTag extends JSDocTag {
kind: SyntaxKind.JSDocTypeTag; kind: SyntaxKind.JSDocTypeTag;
typeExpression?: JSDocTypeExpression; typeExpression: JSDocTypeExpression;
} }
interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { interface JSDocTypedefTag extends JSDocTag, NamedDeclaration {
parent: JSDoc; parent: JSDoc;