diff --git a/src/server/session.ts b/src/server/session.ts index 80909362989a9..4122408cfa6bb 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -626,7 +626,7 @@ namespace ts.server { const definitions = project.getLanguageService().getTypeDefinitionAtPosition(file, position); if (!definitions) { - return undefined; + return emptyArray; } return definitions.map(def => { @@ -716,7 +716,7 @@ namespace ts.server { const documentHighlights = project.getLanguageService().getDocumentHighlights(file, position, args.filesToSearch); if (!documentHighlights) { - return undefined; + return emptyArray; } if (simplifiedResult) { @@ -903,7 +903,7 @@ namespace ts.server { } } - private getReferences(args: protocol.FileLocationRequestArgs, simplifiedResult: boolean): protocol.ReferencesResponseBody | ReadonlyArray { + private getReferences(args: protocol.FileLocationRequestArgs, simplifiedResult: boolean): protocol.ReferencesResponseBody | undefined | ReadonlyArray { const file = toNormalizedPath(args.file); const projects = this.getProjects(args); @@ -913,7 +913,7 @@ namespace ts.server { if (simplifiedResult) { const nameInfo = defaultProject.getLanguageService().getQuickInfoAtPosition(file, position); if (!nameInfo) { - return emptyArray; + return undefined; } const displayString = displayPartsToString(nameInfo.displayParts); @@ -1167,7 +1167,7 @@ namespace ts.server { }); } - private getCompletions(args: protocol.CompletionsRequestArgs, simplifiedResult: boolean): ReadonlyArray | CompletionInfo { + private getCompletions(args: protocol.CompletionsRequestArgs, simplifiedResult: boolean): ReadonlyArray | CompletionInfo | undefined { const prefix = args.prefix || ""; const { file, project } = this.getFileAndProject(args); @@ -1175,11 +1175,8 @@ namespace ts.server { const position = this.getPosition(args, scriptInfo); const completions = project.getLanguageService().getCompletionsAtPosition(file, position); - if (!completions) { - return emptyArray; - } if (simplifiedResult) { - return mapDefined(completions.entries, entry => { + return mapDefined(completions && completions.entries, entry => { if (completions.isMemberCompletion || (entry.name.toLowerCase().indexOf(prefix.toLowerCase()) === 0)) { const { name, kind, kindModifiers, sortText, replacementSpan } = entry; const convertedSpan = replacementSpan ? this.decorateSpan(replacementSpan, scriptInfo) : undefined;