JSDocTypeTag.typeExpression is not optional (#30452)
This commit is contained in:
parent
9efea31649
commit
5bc8a8dddf
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue