mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-15 03:09:59 -05:00
fix(42380): include JSDoc comments in declarations for static/prototype methods (#42454)
This commit is contained in:
@@ -6816,8 +6816,7 @@ namespace ts {
|
||||
for (const sig of signatures) {
|
||||
// Each overload becomes a separate function declaration, in order
|
||||
const decl = signatureToSignatureDeclarationHelper(sig, SyntaxKind.FunctionDeclaration, context, { name: factory.createIdentifier(localName), privateSymbolVisitor: includePrivateSymbol, bundledImports: bundled }) as FunctionDeclaration;
|
||||
// for expressions assigned to `var`s, use the `var` as the text range
|
||||
addResult(setTextRange(decl, sig.declaration && isVariableDeclaration(sig.declaration.parent) && sig.declaration.parent.parent || sig.declaration), modifierFlags);
|
||||
addResult(setTextRange(decl, getSignatureTextRangeLocation(sig)), modifierFlags);
|
||||
}
|
||||
// Module symbol emit will take care of module-y members, provided it has exports
|
||||
if (!(symbol.flags & (SymbolFlags.ValueModule | SymbolFlags.NamespaceModule) && !!symbol.exports && !!symbol.exports.size)) {
|
||||
@@ -6826,6 +6825,19 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function getSignatureTextRangeLocation(signature: Signature) {
|
||||
if (signature.declaration && signature.declaration.parent) {
|
||||
if (isBinaryExpression(signature.declaration.parent) && getAssignmentDeclarationKind(signature.declaration.parent) === AssignmentDeclarationKind.Property) {
|
||||
return signature.declaration.parent;
|
||||
}
|
||||
// for expressions assigned to `var`s, use the `var` as the text range
|
||||
if (isVariableDeclaration(signature.declaration.parent) && signature.declaration.parent.parent) {
|
||||
return signature.declaration.parent.parent;
|
||||
}
|
||||
}
|
||||
return signature.declaration;
|
||||
}
|
||||
|
||||
function serializeAsNamespaceDeclaration(props: readonly Symbol[], localName: string, modifierFlags: ModifierFlags, suppressNewPrivateContext: boolean) {
|
||||
if (length(props)) {
|
||||
const localVsRemoteMap = arrayToMultiMap(props, p =>
|
||||
@@ -7422,7 +7434,8 @@ namespace ts {
|
||||
modifiers: flag ? factory.createModifiersFromModifierFlags(flag) : undefined
|
||||
}
|
||||
);
|
||||
results.push(setTextRange(decl, sig.declaration));
|
||||
const location = sig.declaration && isPrototypePropertyAssignment(sig.declaration.parent) ? sig.declaration.parent : sig.declaration;
|
||||
results.push(setTextRange(decl, location));
|
||||
}
|
||||
return results as unknown as T[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user