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

Function getUsageInfo

test/fixtures/snapshot/typescript.js:162407–162468  ·  view source on GitHub ↗
(oldFile, toMove, checker)

Source from the content-addressed store, hash-verified

162405 return movedSymbols.forEachEntry(ts.symbolNameNoDefault) || "newFile";
162406 }
162407 function getUsageInfo(oldFile, toMove, checker) {
162408 var movedSymbols = new SymbolSet();
162409 var oldImportsNeededByNewFile = new SymbolSet();
162410 var newFileImportsFromOldFile = new SymbolSet();
162411 var containsJsx = ts.find(toMove, function (statement) { return !!(statement.transformFlags & 2 /* TransformFlags.ContainsJsx */); });
162412 var jsxNamespaceSymbol = getJsxNamespaceSymbol(containsJsx);
162413 if (jsxNamespaceSymbol) { // Might not exist (e.g. in non-compiling code)
162414 oldImportsNeededByNewFile.add(jsxNamespaceSymbol);
162415 }
162416 for (var _i = 0, toMove_1 = toMove; _i < toMove_1.length; _i++) {
162417 var statement = toMove_1[_i];
162418 forEachTopLevelDeclaration(statement, function (decl) {
162419 movedSymbols.add(ts.Debug.checkDefined(ts.isExpressionStatement(decl) ? checker.getSymbolAtLocation(decl.expression.left) : decl.symbol, "Need a symbol here"));
162420 });
162421 }
162422 for (var _a = 0, toMove_2 = toMove; _a < toMove_2.length; _a++) {
162423 var statement = toMove_2[_a];
162424 forEachReference(statement, checker, function (symbol) {
162425 if (!symbol.declarations)
162426 return;
162427 for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) {
162428 var decl = _a[_i];
162429 if (isInImport(decl)) {
162430 oldImportsNeededByNewFile.add(symbol);
162431 }
162432 else if (isTopLevelDeclaration(decl) && sourceFileOfTopLevelDeclaration(decl) === oldFile && !movedSymbols.has(symbol)) {
162433 newFileImportsFromOldFile.add(symbol);
162434 }
162435 }
162436 });
162437 }
162438 var unusedImportsFromOldFile = oldImportsNeededByNewFile.clone();
162439 var oldFileImportsFromNewFile = new SymbolSet();
162440 for (var _b = 0, _c = oldFile.statements; _b < _c.length; _b++) {
162441 var statement = _c[_b];
162442 if (ts.contains(toMove, statement))
162443 continue;
162444 // jsxNamespaceSymbol will only be set iff it is in oldImportsNeededByNewFile.
162445 if (jsxNamespaceSymbol && !!(statement.transformFlags & 2 /* TransformFlags.ContainsJsx */)) {
162446 unusedImportsFromOldFile.delete(jsxNamespaceSymbol);
162447 }
162448 forEachReference(statement, checker, function (symbol) {
162449 if (movedSymbols.has(symbol))
162450 oldFileImportsFromNewFile.add(symbol);
162451 unusedImportsFromOldFile.delete(symbol);
162452 });
162453 }
162454 return { movedSymbols: movedSymbols, newFileImportsFromOldFile: newFileImportsFromOldFile, oldFileImportsFromNewFile: oldFileImportsFromNewFile, oldImportsNeededByNewFile: oldImportsNeededByNewFile, unusedImportsFromOldFile: unusedImportsFromOldFile };
162455 function getJsxNamespaceSymbol(containsJsx) {
162456 if (containsJsx === undefined) {
162457 return undefined;
162458 }
162459 var jsxNamespace = checker.getJsxNamespace(containsJsx);
162460 // Strictly speaking, this could resolve to a symbol other than the JSX namespace.
162461 // This will produce erroneous output (probably, an incorrectly copied import) but
162462 // is expected to be very rare and easily reversible.
162463 var jsxNamespaceSymbol = checker.resolveName(jsxNamespace, containsJsx, 1920 /* SymbolFlags.Namespace */, /*excludeGlobals*/ true);
162464 return !!jsxNamespaceSymbol && ts.some(jsxNamespaceSymbol.declarations, isInImport)

Callers 1

doChangeFunction · 0.85

Calls 12

getJsxNamespaceSymbolFunction · 0.85
forEachReferenceFunction · 0.85
isInImportFunction · 0.85
isTopLevelDeclarationFunction · 0.70
findMethod · 0.65
addMethod · 0.65
hasMethod · 0.65
deleteMethod · 0.65
cloneMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…