private onCompletionResolve()

in server/src/session.ts [1048:1083]


  private onCompletionResolve(item: lsp.CompletionItem): lsp.CompletionItem {
    const data = readNgCompletionData(item);
    if (data === null) {
      // This item wasn't tagged with Angular LS completion data - it probably didn't originate
      // from this language service.
      return item;
    }

    const {filePath, position} = data;
    const lsInfo = this.getLSAndScriptInfo(filePath);
    if (lsInfo === null) {
      return item;
    }
    const {languageService, scriptInfo} = lsInfo;

    const offset = lspPositionToTsPosition(scriptInfo, position);
    const details = languageService.getCompletionEntryDetails(
        filePath, offset, item.insertText ?? item.label, undefined, undefined, undefined,
        undefined);
    if (details === undefined) {
      return item;
    }

    const {kind, kindModifiers, displayParts, documentation} = details;
    let desc = kindModifiers ? kindModifiers + ' ' : '';
    if (displayParts && displayParts.length > 0) {
      // displayParts does not contain info about kindModifiers
      // but displayParts does contain info about kind
      desc += displayParts.map(dp => dp.text).join('');
    } else {
      desc += kind;
    }
    item.detail = desc;
    item.documentation = documentation?.map(d => d.text).join('');
    return item;
  }