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

Function getTypeDefinitionAtPosition

test/fixtures/snapshot/typescript.js:139872–139891  ·  view source on GitHub ↗
(typeChecker, sourceFile, position)

Source from the content-addressed store, hash-verified

139870 GoToDefinition.getReferenceAtPosition = getReferenceAtPosition;
139871 /// Goto type
139872 function getTypeDefinitionAtPosition(typeChecker, sourceFile, position) {
139873 var node = ts.getTouchingPropertyName(sourceFile, position);
139874 if (node === sourceFile) {
139875 return undefined;
139876 }
139877 if (ts.isImportMeta(node.parent) && node.parent.name === node) {
139878 return definitionFromType(typeChecker.getTypeAtLocation(node.parent), typeChecker, node.parent, /*failedAliasResolution*/ false);
139879 }
139880 var _a = getSymbol(node, typeChecker, /*stopAtAlias*/ false), symbol = _a.symbol, failedAliasResolution = _a.failedAliasResolution;
139881 if (!symbol)
139882 return undefined;
139883 var typeAtLocation = typeChecker.getTypeOfSymbolAtLocation(symbol, node);
139884 var returnType = tryGetReturnTypeOfFunction(symbol, typeAtLocation, typeChecker);
139885 var fromReturnType = returnType && definitionFromType(returnType, typeChecker, node, failedAliasResolution);
139886 // If a function returns 'void' or some other type with no definition, just return the function definition.
139887 var typeDefinitions = fromReturnType && fromReturnType.length !== 0 ? fromReturnType : definitionFromType(typeAtLocation, typeChecker, node, failedAliasResolution);
139888 return typeDefinitions.length ? typeDefinitions
139889 : !(symbol.flags & 111551 /* SymbolFlags.Value */) && symbol.flags & 788968 /* SymbolFlags.Type */ ? getDefinitionFromSymbol(typeChecker, ts.skipAlias(symbol, typeChecker), node, failedAliasResolution)
139890 : undefined;
139891 }
139892 GoToDefinition.getTypeDefinitionAtPosition = getTypeDefinitionAtPosition;
139893 function definitionFromType(type, checker, node, failedAliasResolution) {
139894 return ts.flatMap(type.isUnion() && !(type.flags & 32 /* TypeFlags.Enum */) ? type.types : [type], function (t) {

Callers

nothing calls this directly

Calls 6

definitionFromTypeFunction · 0.85
getSymbolFunction · 0.85
getDefinitionFromSymbolFunction · 0.85
synchronizeHostDataFunction · 0.85
getValidSourceFileFunction · 0.85

Tested by

no test coverage detected