From 97a842feb2045926f6996f021665870892af6c95 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Tue, 30 Jan 2018 14:04:17 -0800 Subject: [PATCH] Fix ordering in fourslash tests --- src/harness/harnessLanguageService.ts | 39 ++++++++++--------- ...pilationDuplicateFunctionImplementation.ts | 4 +- .../cases/fourslash/referencesBloomFilters.ts | 4 +- .../fourslash/referencesBloomFilters2.ts | 2 +- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index 7ad66449efe..01c53ec8038 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -119,9 +119,11 @@ namespace Harness.LanguageService { export abstract class LanguageServiceAdapterHost { public typesRegistry: ts.Map | undefined; public readonly vfs = new vfs.FileSystem(/*ignoreCase*/ true, { cwd: virtualFileSystemRoot }); + private scriptInfos: core.SortedMap; constructor(protected cancellationToken = DefaultHostCancellationToken.instance, protected settings = ts.getDefaultCompilerOptions()) { + this.scriptInfos = new core.SortedMap({ comparer: this.vfs.stringComparer, sort: "insertion" }); } public getNewLine(): string { @@ -130,36 +132,35 @@ namespace Harness.LanguageService { public getFilenames(): string[] { const fileNames: string[] = []; - this.vfs.scanSync("/", "descendants-or-self", { - accept: (path, stats) => { - if (stats.isFile()) { - const scriptInfo = this.vfs.filemeta(path).get("scriptInfo") as ScriptInfo; - if (scriptInfo && scriptInfo.isRootFile) { - // only include root files here - // usually it means that we won't include lib.d.ts in the list of root files so it won't mess the computation of compilation root dir. - fileNames.push(scriptInfo.fileName); - } - } - return false; + this.scriptInfos.forEach(scriptInfo => { + if (scriptInfo.isRootFile) { + // only include root files here + // usually it means that we won't include lib.d.ts in the list of root files so it won't mess the computation of compilation root dir. + fileNames.push(scriptInfo.fileName); } }); + // this.vfs.scanSync("/", "descendants-or-self", { + // accept: (path, stats) => { + // if (stats.isFile()) { + // const scriptInfo = this.vfs.filemeta(path).get("scriptInfo") as ScriptInfo; + // if (scriptInfo && scriptInfo.isRootFile) { + // fileNames.push(scriptInfo.fileName); + // } + // } + // return false; + // } + // }); return fileNames; } public getScriptInfo(fileName: string): ScriptInfo { - try { - const meta = this.vfs.filemeta(fileName); - return meta ? meta.get("scriptInfo") : undefined; - } - catch { - return undefined; - } + return this.scriptInfos.get(vpath.resolve(this.vfs.cwd(), fileName)); } public addScript(fileName: string, content: string, isRootFile: boolean): void { this.vfs.mkdirpSync(vpath.dirname(fileName)); this.vfs.writeFileSync(fileName, content); - this.vfs.filemeta(fileName).set("scriptInfo", new ScriptInfo(fileName, content, isRootFile)); + this.scriptInfos.set(vpath.resolve(this.vfs.cwd(), fileName), new ScriptInfo(fileName, content, isRootFile)); } public editScript(fileName: string, start: number, end: number, newText: string) { diff --git a/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts b/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts index 3769d64fb8f..00d03b6e60c 100644 --- a/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts +++ b/tests/cases/fourslash/jsFileCompilationDuplicateFunctionImplementation.ts @@ -3,11 +3,11 @@ // @declaration: true // @out: out.js // @allowJs: true -// @Filename: a.js +// @Filename: b.js // @emitThisFile: true ////function foo() { return 10; }/*1*/ -// @Filename: b.ts +// @Filename: a.ts // @emitThisFile: true ////function foo() { return 30; }/*2*/ diff --git a/tests/cases/fourslash/referencesBloomFilters.ts b/tests/cases/fourslash/referencesBloomFilters.ts index de14f1acb98..2f3fd02a827 100644 --- a/tests/cases/fourslash/referencesBloomFilters.ts +++ b/tests/cases/fourslash/referencesBloomFilters.ts @@ -16,8 +16,8 @@ const ranges = test.ranges(); const [r0, r1, r2, r3] = ranges; -verify.referenceGroups(r0, [{ definition: "(property) searchProp: number", ranges: [r0, r1, r3, r2] }]); -verify.referenceGroups([r1, r2], [{ definition: "(property) searchProp: number", ranges: [r0, r1, r3, r2] }]); +verify.referenceGroups(r0, [{ definition: "(property) searchProp: number", ranges }]); +verify.referenceGroups([r1, r2], [{ definition: "(property) searchProp: number", ranges }]); verify.referenceGroups(r3, [ { definition: "(property) searchProp: number", ranges: [r0, r1, r2] }, { definition: '(property) "searchProp": number', ranges: [r3] } diff --git a/tests/cases/fourslash/referencesBloomFilters2.ts b/tests/cases/fourslash/referencesBloomFilters2.ts index dbaf62bf821..3dea66b593d 100644 --- a/tests/cases/fourslash/referencesBloomFilters2.ts +++ b/tests/cases/fourslash/referencesBloomFilters2.ts @@ -16,7 +16,7 @@ const ranges = test.ranges(); const [r0, r1, r2, r3] = ranges; -verify.referenceGroups([r0, r1, r2], [{ definition: "(property) 42: number", ranges: [r0, r1, r3, r2] }]); +verify.referenceGroups([r0, r1, r2], [{ definition: "(property) 42: number", ranges }]); verify.referenceGroups(r3, [ { definition: "(property) 42: number", ranges: [r0, r1, r2] }, { definition: '(property) "42": number', ranges: [r3] }