MCPcopy Create free account
hub / github.com/nodejs/node / collectUsages

Function collectUsages

test/fixtures/snapshot/typescript.js:161450–161486  ·  view source on GitHub ↗
(node, valueUsage)

Source from the content-addressed store, hash-verified

161448 }
161449 }
161450 function collectUsages(node, valueUsage) {
161451 if (valueUsage === void 0) { valueUsage = 1 /* Usage.Read */; }
161452 if (inGenericContext) {
161453 var type = checker.getTypeAtLocation(node);
161454 recordTypeParameterUsages(type);
161455 }
161456 if (ts.isDeclaration(node) && node.symbol) {
161457 visibleDeclarationsInExtractedRange.push(node);
161458 }
161459 if (ts.isAssignmentExpression(node)) {
161460 // use 'write' as default usage for values
161461 collectUsages(node.left, 2 /* Usage.Write */);
161462 collectUsages(node.right);
161463 }
161464 else if (ts.isUnaryExpressionWithWrite(node)) {
161465 collectUsages(node.operand, 2 /* Usage.Write */);
161466 }
161467 else if (ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {
161468 // use 'write' as default usage for values
161469 ts.forEachChild(node, collectUsages);
161470 }
161471 else if (ts.isIdentifier(node)) {
161472 if (!node.parent) {
161473 return;
161474 }
161475 if (ts.isQualifiedName(node.parent) && node !== node.parent.left) {
161476 return;
161477 }
161478 if (ts.isPropertyAccessExpression(node.parent) && node !== node.parent.expression) {
161479 return;
161480 }
161481 recordUsage(node, valueUsage, /*isTypeNode*/ ts.isPartOfTypeNode(node));
161482 }
161483 else {
161484 ts.forEachChild(node, collectUsages);
161485 }
161486 }
161487 function recordUsage(n, usage, isTypeNode) {
161488 var symbolId = recordUsagebySymbol(n, usage, isTypeNode);
161489 if (symbolId) {

Callers 1

collectReadsAndWritesFunction · 0.85

Calls 4

recordUsageFunction · 0.85
forEachChildMethod · 0.80
pushMethod · 0.45

Tested by

no test coverage detected