From e479a9f679467781910919f7ea156e141a473eeb Mon Sep 17 00:00:00 2001 From: Ben Lichtman Date: Fri, 24 Jan 2020 16:23:54 -0800 Subject: [PATCH] Respond to CR --- src/server/project.ts | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/server/project.ts b/src/server/project.ts index b9b6e170d7f..60f23a7abe0 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -805,17 +805,9 @@ namespace ts.server { /* @internal */ getFileNamesWithRedirectInfo(includeProjectReferenceRedirectInfo: boolean) { - const fileNames = this.getFileNames(); - if (includeProjectReferenceRedirectInfo) { - return fileNames.map((fileName): protocol.FileWithProjectReferenceRedirectInfo => ({ - fileName, - isSourceOfProjectReferenceRedirect: this.isSourceOfProjectReferenceRedirect(fileName) - })); - } - - return fileNames.map((fileName): protocol.FileWithProjectReferenceRedirectInfo => ({ + return this.getFileNames().map((fileName): protocol.FileWithProjectReferenceRedirectInfo => ({ fileName, - isSourceOfProjectReferenceRedirect: false + isSourceOfProjectReferenceRedirect: includeProjectReferenceRedirectInfo && this.isSourceOfProjectReferenceRedirect(fileName) })); } @@ -1319,9 +1311,9 @@ namespace ts.server { getChangesSinceVersion(lastKnownVersion?: number, includeProjectReferenceRedirectInfo?: boolean): ProjectFilesWithTSDiagnostics { const includeProjectReferenceRedirectInfoIfRequested = includeProjectReferenceRedirectInfo - ? (files: Map) => arrayFrom(files.keys(), (fileName: string): protocol.FileWithProjectReferenceRedirectInfo => ({ + ? (files: Map) => arrayFrom(files.entries(), ([fileName, isSourceOfProjectReferenceRedirect]): protocol.FileWithProjectReferenceRedirectInfo => ({ fileName, - isSourceOfProjectReferenceRedirect: files.get(fileName)! // fileName guaranteed to be in files + isSourceOfProjectReferenceRedirect })) : (files: Map) => arrayFrom(files.keys()); @@ -1364,20 +1356,20 @@ namespace ts.server { const updated: string[] = updatedFileNames ? arrayFrom(updatedFileNames.keys()) : []; const updatedRedirects: protocol.FileWithProjectReferenceRedirectInfo[] = []; - forEachKey(currentFiles, id => { - if (!lastReportedFileNames.has(id)) { - added.set(id, currentFiles.get(id)!); // id guaranteed to be in currentFiles + forEachEntry(currentFiles, (isSourceOfProjectReferenceRedirect, fileName) => { + if (!lastReportedFileNames.has(fileName)) { + added.set(fileName, isSourceOfProjectReferenceRedirect); } - else if (includeProjectReferenceRedirectInfo && lastReportedFileNames.get(id) !== currentFiles.get(id)){ + else if (includeProjectReferenceRedirectInfo && isSourceOfProjectReferenceRedirect !== lastReportedFileNames.get(fileName)){ updatedRedirects.push({ - fileName: id, - isSourceOfProjectReferenceRedirect: currentFiles.get(id)! // id guaranteed to be in currentFiles + fileName, + isSourceOfProjectReferenceRedirect }); } }); - forEachKey(lastReportedFileNames, id => { - if (!currentFiles.has(id)) { - removed.set(id, lastReportedFileNames.get(id)!); // id guaranteed to be in lastReportedFileNames + forEachEntry(lastReportedFileNames, (isSourceOfProjectReferenceRedirect, fileName) => { + if (!currentFiles.has(fileName)) { + removed.set(fileName, isSourceOfProjectReferenceRedirect); } }); this.lastReportedFileNames = currentFiles; @@ -1407,7 +1399,7 @@ namespace ts.server { })); const allFiles = projectFileNames.concat(externalFiles); this.lastReportedFileNames = arrayToMap( - projectFileNames.concat(externalFiles), + allFiles, info => info.fileName, info => info.isSourceOfProjectReferenceRedirect );