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

Function getSourceFileFromReferenceWorker

test/fixtures/snapshot/typescript.js:118100–118145  ·  view source on GitHub ↗
(fileName, getSourceFile, fail, reason)

Source from the content-addressed store, hash-verified

118098 return getSourceFileFromReferenceWorker(resolveTripleslashReference(ref.fileName, referencingFile.fileName), getSourceFile);
118099 }
118100 function getSourceFileFromReferenceWorker(fileName, getSourceFile, fail, reason) {
118101 if (ts.hasExtension(fileName)) {
118102 var canonicalFileName_1 = host.getCanonicalFileName(fileName);
118103 if (!options.allowNonTsExtensions && !ts.forEach(ts.flatten(supportedExtensionsWithJsonIfResolveJsonModule), function (extension) { return ts.fileExtensionIs(canonicalFileName_1, extension); })) {
118104 if (fail) {
118105 if (ts.hasJSFileExtension(canonicalFileName_1)) {
118106 fail(ts.Diagnostics.File_0_is_a_JavaScript_file_Did_you_mean_to_enable_the_allowJs_option, fileName);
118107 }
118108 else {
118109 fail(ts.Diagnostics.File_0_has_an_unsupported_extension_The_only_supported_extensions_are_1, fileName, "'" + ts.flatten(supportedExtensions).join("', '") + "'");
118110 }
118111 }
118112 return undefined;
118113 }
118114 var sourceFile = getSourceFile(fileName);
118115 if (fail) {
118116 if (!sourceFile) {
118117 var redirect = getProjectReferenceRedirect(fileName);
118118 if (redirect) {
118119 fail(ts.Diagnostics.Output_file_0_has_not_been_built_from_source_file_1, redirect, fileName);
118120 }
118121 else {
118122 fail(ts.Diagnostics.File_0_not_found, fileName);
118123 }
118124 }
118125 else if (isReferencedFile(reason) && canonicalFileName_1 === host.getCanonicalFileName(getSourceFileByPath(reason.file).fileName)) {
118126 fail(ts.Diagnostics.A_file_cannot_have_a_reference_to_itself);
118127 }
118128 }
118129 return sourceFile;
118130 }
118131 else {
118132 var sourceFileNoExtension = options.allowNonTsExtensions && getSourceFile(fileName);
118133 if (sourceFileNoExtension)
118134 return sourceFileNoExtension;
118135 if (fail && options.allowNonTsExtensions) {
118136 fail(ts.Diagnostics.File_0_not_found, fileName);
118137 return undefined;
118138 }
118139 // Only try adding extensions from the first supported group (which should be .ts/.tsx/.d.ts)
118140 var sourceFileWithAddedExtension = ts.forEach(supportedExtensions[0], function (extension) { return getSourceFile(fileName + extension); });
118141 if (fail && !sourceFileWithAddedExtension)
118142 fail(ts.Diagnostics.Could_not_resolve_the_path_0_with_the_extensions_Colon_1, fileName, "'" + ts.flatten(supportedExtensions).join("', '") + "'");
118143 return sourceFileWithAddedExtension;
118144 }
118145 }
118146 /** This has side effects through `findSourceFile`. */
118147 function processSourceFile(fileName, isDefaultLib, ignoreNoDefaultLib, packageId, reason) {
118148 getSourceFileFromReferenceWorker(fileName, function (fileName) { return findSourceFile(fileName, isDefaultLib, ignoreNoDefaultLib, reason, packageId); }, // TODO: GH#18217

Callers 2

processSourceFileFunction · 0.85

Calls 7

getSourceFileFunction · 0.85
isReferencedFileFunction · 0.85
getSourceFileByPathFunction · 0.85
failFunction · 0.70
forEachMethod · 0.65
joinMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…