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:
Nathan Shively-Sanders
2018-03-22 16:17:16 -07:00
committed by GitHub
parent ca1d19a579
commit e16bb3e418
5 changed files with 78 additions and 2 deletions

View File

@@ -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);
}

View File

@@ -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 {