From c0806439ea0910e0cbdd93ec4a7df3a0cdd301a3 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 19 Sep 2016 18:20:50 -0700 Subject: [PATCH] Refactor --- src/harness/harness.ts | 2 +- src/harness/harnessLanguageService.ts | 2 +- src/server/editorServices.ts | 12 +----------- src/server/lsHost.ts | 8 +------- src/server/utilities.ts | 15 +++++++++++++++ src/services/services.ts | 2 +- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/harness/harness.ts b/src/harness/harness.ts index b66d08bcb5..429a1aab80 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -1932,5 +1932,5 @@ namespace Harness { return { unitName: libFile, content: io.readFile(libFile) }; } - if (Error) (Error).stackTraceLimit = 25; + if (Error) (Error).stackTraceLimit = 1; } diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 513c6be7ee..6e34c80a3c 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -370,7 +370,7 @@ namespace Harness.LanguageService { function unwrapJSONCallResult(result: string): any { const parsedResult = JSON.parse(result); if (parsedResult.error) { - throw new Error("Language Service Shim Error: " + JSON.stringify(parsedResult)); + throw new Error("Language Service Shim Error: " + JSON.stringify(parsedResult.error)); } else if (parsedResult.canceled) { throw new ts.OperationCanceledException(); diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 4718fa36e4..71d1188046 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -389,17 +389,7 @@ namespace ts.server { } getTypeRootsVersion(project: ConfiguredProject) { - const roots = project.getEffectiveTypeRoots(); - if (roots === undefined) { - return 0; - } - - return Math.max.apply(Math, project.getEffectiveTypeRoots().map(root => { - if (this.host.directoryExists(root)) { - return +this.host.getModifiedTime(root); - } - return 0; - })); + return getLatestDirectoryChangeTime(project.getEffectiveTypeRoots(), this.host); } private handleChangeInSourceFileForConfiguredProject(project: ConfiguredProject) { diff --git a/src/server/lsHost.ts b/src/server/lsHost.ts index e6fc699f23..0ae358591d 100644 --- a/src/server/lsHost.ts +++ b/src/server/lsHost.ts @@ -147,13 +147,7 @@ namespace ts.server { getTypeRootsVersion() { const roots = ts.getEffectiveTypeRoots(this.project.getCompilerOptions(), this); - if (roots && roots.length > 0) { - return Math.max.apply(Math, roots.map(root => { - return +this.host.getModifiedTime(root); - })); - } else { - return 0; - } + return getLatestChangeTime(roots, this.host); } getScriptKind(fileName: string) { diff --git a/src/server/utilities.ts b/src/server/utilities.ts index a7a0160ea6..cb7290711a 100644 --- a/src/server/utilities.ts +++ b/src/server/utilities.ts @@ -90,6 +90,21 @@ namespace ts.server { }; } + export function getLatestDirectoryChangeTime(paths: string[] | undefined, host: System) { + if (!host.getModifiedTime || !host.directoryExists || !paths) { + return 0; + } + + return Math.max.apply(Math, paths.map(path => { + if (host.directoryExists(path)) { + return host.getModifiedTime(path); + } + else { + return 0; + } + })); + } + export function mergeMaps(target: MapLike, source: MapLike ): void { for (const key in source) { if (hasProperty(source, key)) { diff --git a/src/services/services.ts b/src/services/services.ts index 7ef3a9b0ef..4b6e27e6c6 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1188,7 +1188,7 @@ namespace ts { /* * LS host can optionally implement these methods to support automatic updating when new type libraries are installed */ - getTypeRootsVersion(): number; + getTypeRootsVersion?(): number; /* * LS host can optionally implement this method if it wants to be completely in charge of module name resolution.