(program, log, sourceFile, position, entryId, host, formatContext, preferences, cancellationToken)
| 133135 | }) || { type: "none" }; |
| 133136 | } |
| 133137 | function getCompletionEntryDetails(program, log, sourceFile, position, entryId, host, formatContext, preferences, cancellationToken) { |
| 133138 | var typeChecker = program.getTypeChecker(); |
| 133139 | var compilerOptions = program.getCompilerOptions(); |
| 133140 | var name = entryId.name, source = entryId.source, data = entryId.data; |
| 133141 | var contextToken = ts.findPrecedingToken(position, sourceFile); |
| 133142 | if (ts.isInString(sourceFile, position, contextToken)) { |
| 133143 | return Completions.StringCompletions.getStringLiteralCompletionDetails(name, sourceFile, position, contextToken, typeChecker, compilerOptions, host, cancellationToken, preferences); |
| 133144 | } |
| 133145 | // Compute all the completion symbols again. |
| 133146 | var symbolCompletion = getSymbolCompletionFromEntryId(program, log, sourceFile, position, entryId, host, preferences); |
| 133147 | switch (symbolCompletion.type) { |
| 133148 | case "request": { |
| 133149 | var request = symbolCompletion.request; |
| 133150 | switch (request.kind) { |
| 133151 | case 1 /* CompletionDataKind.JsDocTagName */: |
| 133152 | return ts.JsDoc.getJSDocTagNameCompletionDetails(name); |
| 133153 | case 2 /* CompletionDataKind.JsDocTag */: |
| 133154 | return ts.JsDoc.getJSDocTagCompletionDetails(name); |
| 133155 | case 3 /* CompletionDataKind.JsDocParameterName */: |
| 133156 | return ts.JsDoc.getJSDocParameterNameCompletionDetails(name); |
| 133157 | case 4 /* CompletionDataKind.Keywords */: |
| 133158 | return ts.some(request.keywordCompletions, function (c) { return c.name === name; }) ? createSimpleDetails(name, "keyword" /* ScriptElementKind.keyword */, ts.SymbolDisplayPartKind.keyword) : undefined; |
| 133159 | default: |
| 133160 | return ts.Debug.assertNever(request); |
| 133161 | } |
| 133162 | } |
| 133163 | case "symbol": { |
| 133164 | var symbol = symbolCompletion.symbol, location = symbolCompletion.location, contextToken_2 = symbolCompletion.contextToken, origin = symbolCompletion.origin, previousToken = symbolCompletion.previousToken; |
| 133165 | var _a = getCompletionEntryCodeActionsAndSourceDisplay(name, location, contextToken_2, origin, symbol, program, host, compilerOptions, sourceFile, position, previousToken, formatContext, preferences, data, source), codeActions = _a.codeActions, sourceDisplay = _a.sourceDisplay; |
| 133166 | return createCompletionDetailsForSymbol(symbol, typeChecker, sourceFile, location, cancellationToken, codeActions, sourceDisplay); // TODO: GH#18217 |
| 133167 | } |
| 133168 | case "literal": { |
| 133169 | var literal = symbolCompletion.literal; |
| 133170 | return createSimpleDetails(completionNameForLiteral(sourceFile, preferences, literal), "string" /* ScriptElementKind.string */, typeof literal === "string" ? ts.SymbolDisplayPartKind.stringLiteral : ts.SymbolDisplayPartKind.numericLiteral); |
| 133171 | } |
| 133172 | case "none": |
| 133173 | // Didn't find a symbol with this name. See if we can find a keyword instead. |
| 133174 | return allKeywordsCompletions().some(function (c) { return c.name === name; }) ? createSimpleDetails(name, "keyword" /* ScriptElementKind.keyword */, ts.SymbolDisplayPartKind.keyword) : undefined; |
| 133175 | default: |
| 133176 | ts.Debug.assertNever(symbolCompletion); |
| 133177 | } |
| 133178 | } |
| 133179 | Completions.getCompletionEntryDetails = getCompletionEntryDetails; |
| 133180 | function createSimpleDetails(name, kind, kind2) { |
| 133181 | return createCompletionDetails(name, "" /* ScriptElementKindModifier.none */, kind, [ts.displayPart(name, kind2)]); |
nothing calls this directly
no test coverage detected