mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 21:36:50 -05:00
Improve behaviour of ... inside JSDoc functions (#22809)
* No error for ... on last param of jsdoc function * ... is a rest param w/array type in jsdoc function * Simplify getTypeFromJSDocVariadicType
This commit is contained in:
committed by
GitHub
parent
ca1d19a579
commit
e16bb3e418
@@ -24548,8 +24548,15 @@ namespace ts {
|
||||
checkJSDocTypeIsInJsFile(node);
|
||||
checkSourceElement(node.type);
|
||||
|
||||
// Only legal location is in the *last* parameter tag.
|
||||
// Only legal location is in the *last* parameter tag or last parameter of a JSDoc function.
|
||||
const { parent } = node;
|
||||
if (isParameter(parent) && isJSDocFunctionType(parent.parent)) {
|
||||
if (last(parent.parent.parameters) !== parent) {
|
||||
error(node, Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isJSDocTypeExpression(parent)) {
|
||||
error(node, Diagnostics.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature);
|
||||
}
|
||||
@@ -24595,6 +24602,9 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isParameter(parent) && isJSDocFunctionType(parent.parent)) {
|
||||
return createArrayType(type);
|
||||
}
|
||||
return addOptionality(type);
|
||||
}
|
||||
|
||||
|
||||
@@ -1861,7 +1861,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
export function isRestParameter(node: ParameterDeclaration): boolean {
|
||||
return node.dotDotDotToken !== undefined;
|
||||
return node.dotDotDotToken !== undefined || node.type && node.type.kind === SyntaxKind.JSDocVariadicType;
|
||||
}
|
||||
|
||||
export const enum AssignmentKind {
|
||||
|
||||
Reference in New Issue
Block a user