(typeChecker, sourceFile, position)
| 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) { |
nothing calls this directly
no test coverage detected