MCPcopy Index your code
hub / github.com/nodejs/node / annotateJSDocParameters

Function annotateJSDocParameters

test/fixtures/snapshot/typescript.js:156801–156844  ·  view source on GitHub ↗
(changes, sourceFile, parameterInferences, program, host)

Source from the content-addressed store, hash-verified

156799 return false;
156800 }
156801 function annotateJSDocParameters(changes, sourceFile, parameterInferences, program, host) {
156802 var signature = parameterInferences.length && parameterInferences[0].declaration.parent;
156803 if (!signature) {
156804 return;
156805 }
156806 var inferences = ts.mapDefined(parameterInferences, function (inference) {
156807 var param = inference.declaration;
156808 // only infer parameters that have (1) no type and (2) an accessible inferred type
156809 if (param.initializer || ts.getJSDocType(param) || !ts.isIdentifier(param.name)) {
156810 return;
156811 }
156812 var typeNode = inference.type && ts.getTypeNodeIfAccessible(inference.type, param, program, host);
156813 if (typeNode) {
156814 var name = ts.factory.cloneNode(param.name);
156815 ts.setEmitFlags(name, 1536 /* EmitFlags.NoComments */ | 2048 /* EmitFlags.NoNestedComments */);
156816 return { name: ts.factory.cloneNode(param.name), param: param, isOptional: !!inference.isOptional, typeNode: typeNode };
156817 }
156818 });
156819 if (!inferences.length) {
156820 return;
156821 }
156822 if (ts.isArrowFunction(signature) || ts.isFunctionExpression(signature)) {
156823 var needParens = ts.isArrowFunction(signature) && !ts.findChildOfKind(signature, 20 /* SyntaxKind.OpenParenToken */, sourceFile);
156824 if (needParens) {
156825 changes.insertNodeBefore(sourceFile, ts.first(signature.parameters), ts.factory.createToken(20 /* SyntaxKind.OpenParenToken */));
156826 }
156827 ts.forEach(inferences, function (_a) {
156828 var typeNode = _a.typeNode, param = _a.param;
156829 var typeTag = ts.factory.createJSDocTypeTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(typeNode));
156830 var jsDoc = ts.factory.createJSDocComment(/*comment*/ undefined, [typeTag]);
156831 changes.insertNodeAt(sourceFile, param.getStart(sourceFile), jsDoc, { suffix: " " });
156832 });
156833 if (needParens) {
156834 changes.insertNodeAfter(sourceFile, ts.last(signature.parameters), ts.factory.createToken(21 /* SyntaxKind.CloseParenToken */));
156835 }
156836 }
156837 else {
156838 var paramTags = ts.map(inferences, function (_a) {
156839 var name = _a.name, typeNode = _a.typeNode, isOptional = _a.isOptional;
156840 return ts.factory.createJSDocParameterTag(/*tagName*/ undefined, name, /*isBracketed*/ !!isOptional, ts.factory.createJSDocTypeExpression(typeNode), /* isNameFirst */ false, /*comment*/ undefined);
156841 });
156842 changes.addJSDocTags(sourceFile, signature, paramTags);
156843 }
156844 }
156845 function getReferences(token, program, cancellationToken) {
156846 // Position shouldn't matter since token is not a SourceFile.
156847 return ts.mapDefined(ts.FindAllReferences.getReferenceEntriesForNode(-1, token, program, program.getSourceFiles(), cancellationToken), function (entry) {

Callers 2

annotateParametersFunction · 0.85
annotateSetAccessorFunction · 0.85

Calls 4

forEachMethod · 0.65
mapMethod · 0.65
firstMethod · 0.45
lastMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…