Make it a parse error for an @type
jsdoc tag to not include a type (#18664)
* Make it a parse error for an `@type` jsdoc tag to not include a type * Rename parameter
This commit is contained in:
parent
72c8b804da
commit
2399bac377
|
@ -6135,10 +6135,14 @@ namespace ts {
|
|||
}
|
||||
|
||||
// Parses out a JSDoc type expression.
|
||||
export function parseJSDocTypeExpression(): JSDocTypeExpression {
|
||||
export function parseJSDocTypeExpression(): JSDocTypeExpression;
|
||||
export function parseJSDocTypeExpression(requireBraces: true): JSDocTypeExpression | undefined;
|
||||
export function parseJSDocTypeExpression(requireBraces?: boolean): JSDocTypeExpression | undefined {
|
||||
const result = <JSDocTypeExpression>createNode(SyntaxKind.JSDocTypeExpression, scanner.getTokenPos());
|
||||
|
||||
parseExpected(SyntaxKind.OpenBraceToken);
|
||||
if (!parseExpected(SyntaxKind.OpenBraceToken) && requireBraces) {
|
||||
return undefined;
|
||||
}
|
||||
result.type = doInsideOfContext(NodeFlags.JSDoc, parseType);
|
||||
parseExpected(SyntaxKind.CloseBraceToken);
|
||||
|
||||
|
@ -6595,7 +6599,7 @@ namespace ts {
|
|||
const result = <JSDocTypeTag>createNode(SyntaxKind.JSDocTypeTag, atToken.pos);
|
||||
result.atToken = atToken;
|
||||
result.tagName = tagName;
|
||||
result.typeExpression = tryParseTypeExpression();
|
||||
result.typeExpression = parseJSDocTypeExpression(/*mayBail*/ true);
|
||||
return finishNode(result);
|
||||
}
|
||||
|
||||
|
|
|
@ -139,6 +139,11 @@ namespace ts {
|
|||
`/**
|
||||
* @param
|
||||
*/`);
|
||||
|
||||
parsesIncorrectly("noType",
|
||||
`/**
|
||||
* @type
|
||||
*/`);
|
||||
});
|
||||
|
||||
describe("parsesCorrectly", () => {
|
||||
|
@ -148,12 +153,6 @@ namespace ts {
|
|||
*/`);
|
||||
|
||||
|
||||
parsesCorrectly("noType",
|
||||
`/**
|
||||
* @type
|
||||
*/`);
|
||||
|
||||
|
||||
parsesCorrectly("noReturnType",
|
||||
`/**
|
||||
* @return
|
||||
|
|
Loading…
Reference in a new issue