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

Function inferTypeFromReferences

test/fixtures/snapshot/typescript.js:156887–157515  ·  view source on GitHub ↗
(program, references, cancellationToken)

Source from the content-addressed store, hash-verified

156885 return getReferences(searchToken, program, cancellationToken);
156886 }
156887 function inferTypeFromReferences(program, references, cancellationToken) {
156888 var checker = program.getTypeChecker();
156889 var builtinConstructors = {
156890 string: function () { return checker.getStringType(); },
156891 number: function () { return checker.getNumberType(); },
156892 Array: function (t) { return checker.createArrayType(t); },
156893 Promise: function (t) { return checker.createPromiseType(t); },
156894 };
156895 var builtins = [
156896 checker.getStringType(),
156897 checker.getNumberType(),
156898 checker.createArrayType(checker.getAnyType()),
156899 checker.createPromiseType(checker.getAnyType()),
156900 ];
156901 return {
156902 single: single,
156903 parameters: parameters,
156904 thisParameter: thisParameter,
156905 };
156906 function createEmptyUsage() {
156907 return {
156908 isNumber: undefined,
156909 isString: undefined,
156910 isNumberOrString: undefined,
156911 candidateTypes: undefined,
156912 properties: undefined,
156913 calls: undefined,
156914 constructs: undefined,
156915 numberIndex: undefined,
156916 stringIndex: undefined,
156917 candidateThisTypes: undefined,
156918 inferredTypes: undefined,
156919 };
156920 }
156921 function combineUsages(usages) {
156922 var combinedProperties = new ts.Map();
156923 for (var _i = 0, usages_1 = usages; _i < usages_1.length; _i++) {
156924 var u = usages_1[_i];
156925 if (u.properties) {
156926 u.properties.forEach(function (p, name) {
156927 if (!combinedProperties.has(name)) {
156928 combinedProperties.set(name, []);
156929 }
156930 combinedProperties.get(name).push(p);
156931 });
156932 }
156933 }
156934 var properties = new ts.Map();
156935 combinedProperties.forEach(function (ps, name) {
156936 properties.set(name, combineUsages(ps));
156937 });
156938 return {
156939 isNumber: usages.some(function (u) { return u.isNumber; }),
156940 isString: usages.some(function (u) { return u.isString; }),
156941 isNumberOrString: usages.some(function (u) { return u.isNumberOrString; }),
156942 candidateTypes: ts.flatMap(usages, function (u) { return u.candidateTypes; }),
156943 properties: properties,
156944 calls: ts.flatMap(usages, function (u) { return u.calls; }),

Callers 3

annotateThisFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…