* Recursively resolve entity names and jsdoc instance references: * 1. K#m as K.prototype.m for a class (or other value) K * 2. K.m as K.prototype.m * 3. I.m as I.m for a type I, or any other I.m that fails to resolve in (1) or (2) * * For unqualified nam
(name, container)
| 86386 | * For unqualified names, a container K may be provided as a second argument. |
| 86387 | */ |
| 86388 | function resolveJSDocMemberName(name, container) { |
| 86389 | if (ts.isEntityName(name)) { |
| 86390 | // resolve static values first |
| 86391 | var meaning = 788968 /* SymbolFlags.Type */ | 1920 /* SymbolFlags.Namespace */ | 111551 /* SymbolFlags.Value */; |
| 86392 | var symbol = resolveEntityName(name, meaning, /*ignoreErrors*/ false, /*dontResolveAlias*/ true, ts.getHostSignatureFromJSDoc(name)); |
| 86393 | if (!symbol && ts.isIdentifier(name) && container) { |
| 86394 | symbol = getMergedSymbol(getSymbol(getExportsOfSymbol(container), name.escapedText, meaning)); |
| 86395 | } |
| 86396 | if (symbol) { |
| 86397 | return symbol; |
| 86398 | } |
| 86399 | } |
| 86400 | var left = ts.isIdentifier(name) ? container : resolveJSDocMemberName(name.left); |
| 86401 | var right = ts.isIdentifier(name) ? name.escapedText : name.right.escapedText; |
| 86402 | if (left) { |
| 86403 | var proto = left.flags & 111551 /* SymbolFlags.Value */ && getPropertyOfType(getTypeOfSymbol(left), "prototype"); |
| 86404 | var t = proto ? getTypeOfSymbol(proto) : getDeclaredTypeOfSymbol(left); |
| 86405 | return getPropertyOfType(t, right); |
| 86406 | } |
| 86407 | } |
| 86408 | function getSymbolAtLocation(node, ignoreErrors) { |
| 86409 | if (node.kind === 305 /* SyntaxKind.SourceFile */) { |
| 86410 | return ts.isExternalModule(node) ? getMergedSymbol(node.symbol) : undefined; |
no test coverage detected