(sourceFile, position, program)
| 139831 | return getDefinitionFromSymbol(typeChecker, symbol, node); |
| 139832 | } |
| 139833 | function getReferenceAtPosition(sourceFile, position, program) { |
| 139834 | var _a, _b; |
| 139835 | var referencePath = findReferenceInPosition(sourceFile.referencedFiles, position); |
| 139836 | if (referencePath) { |
| 139837 | var file = program.getSourceFileFromReference(sourceFile, referencePath); |
| 139838 | return file && { reference: referencePath, fileName: file.fileName, file: file, unverified: false }; |
| 139839 | } |
| 139840 | var typeReferenceDirective = findReferenceInPosition(sourceFile.typeReferenceDirectives, position); |
| 139841 | if (typeReferenceDirective) { |
| 139842 | var reference = program.getResolvedTypeReferenceDirectives().get(typeReferenceDirective.fileName, typeReferenceDirective.resolutionMode || sourceFile.impliedNodeFormat); |
| 139843 | var file = reference && program.getSourceFile(reference.resolvedFileName); // TODO:GH#18217 |
| 139844 | return file && { reference: typeReferenceDirective, fileName: file.fileName, file: file, unverified: false }; |
| 139845 | } |
| 139846 | var libReferenceDirective = findReferenceInPosition(sourceFile.libReferenceDirectives, position); |
| 139847 | if (libReferenceDirective) { |
| 139848 | var file = program.getLibFileFromReference(libReferenceDirective); |
| 139849 | return file && { reference: libReferenceDirective, fileName: file.fileName, file: file, unverified: false }; |
| 139850 | } |
| 139851 | if ((_a = sourceFile.resolvedModules) === null || _a === void 0 ? void 0 : _a.size()) { |
| 139852 | var node = ts.getTouchingToken(sourceFile, position); |
| 139853 | if (ts.isModuleSpecifierLike(node) && ts.isExternalModuleNameRelative(node.text) && sourceFile.resolvedModules.has(node.text, ts.getModeForUsageLocation(sourceFile, node))) { |
| 139854 | var verifiedFileName = (_b = sourceFile.resolvedModules.get(node.text, ts.getModeForUsageLocation(sourceFile, node))) === null || _b === void 0 ? void 0 : _b.resolvedFileName; |
| 139855 | var fileName = verifiedFileName || ts.resolvePath(ts.getDirectoryPath(sourceFile.fileName), node.text); |
| 139856 | return { |
| 139857 | file: program.getSourceFile(fileName), |
| 139858 | fileName: fileName, |
| 139859 | reference: { |
| 139860 | pos: node.getStart(), |
| 139861 | end: node.getEnd(), |
| 139862 | fileName: node.text |
| 139863 | }, |
| 139864 | unverified: !verifiedFileName, |
| 139865 | }; |
| 139866 | } |
| 139867 | } |
| 139868 | return undefined; |
| 139869 | } |
| 139870 | GoToDefinition.getReferenceAtPosition = getReferenceAtPosition; |
| 139871 | /// Goto type |
| 139872 | function getTypeDefinitionAtPosition(typeChecker, sourceFile, position) { |
no test coverage detected