From ac7c2ba9e2f71edc03fdf3fd2f753d145584cc83 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 21 Aug 2018 16:18:51 -0700 Subject: [PATCH 1/2] Remove unused overloads of 'deduplicate' and 'deduplicateSorted' --- src/compiler/core.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 1eaab5b1b5..3cd8e1fd11 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -775,7 +775,7 @@ namespace ts { return deduplicated.map(i => array[i]); } - function deduplicateEquality(array: ReadonlyArray, equalityComparer: EqualityComparer) { + function deduplicateEquality(array: ReadonlyArray, equalityComparer?: EqualityComparer) { const result: T[] = []; for (const item of array) { pushIfUnique(result, item, equalityComparer); @@ -789,23 +789,17 @@ namespace ts { * @param comparer An optional `Comparer` used to sort entries before comparison, though the * result will remain in the original order in `array`. */ - export function deduplicate(array: ReadonlyArray, equalityComparer?: EqualityComparer, comparer?: Comparer): T[]; - export function deduplicate(array: ReadonlyArray | undefined, equalityComparer?: EqualityComparer, comparer?: Comparer): T[] | undefined; - export function deduplicate(array: ReadonlyArray | undefined, equalityComparer: EqualityComparer, comparer?: Comparer): T[] | undefined { - return !array ? undefined : - array.length === 0 ? [] : + export function deduplicate(array: ReadonlyArray, equalityComparer?: EqualityComparer, comparer?: Comparer): T[] { + return array.length === 0 ? [] : array.length === 1 ? array.slice() : - comparer ? deduplicateRelational(array, equalityComparer, comparer) : + comparer ? deduplicateRelational(array, equalityComparer!, comparer) : deduplicateEquality(array, equalityComparer); } /** * Deduplicates an array that has already been sorted. */ - function deduplicateSorted(array: ReadonlyArray, comparer: EqualityComparer | Comparer): T[]; - function deduplicateSorted(array: ReadonlyArray | undefined, comparer: EqualityComparer | Comparer): T[] | undefined; - function deduplicateSorted(array: ReadonlyArray | undefined, comparer: EqualityComparer | Comparer): T[] | undefined { - if (!array) return undefined; + function deduplicateSorted(array: ReadonlyArray, comparer: EqualityComparer | Comparer): T[] { if (array.length === 0) return []; let last = array[0]; From 213d374e13b1b6916598d28c1373e050547def20 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 22 Aug 2018 15:27:03 -0700 Subject: [PATCH 2/2] Make equalityComparer non-optional --- src/compiler/core.ts | 6 +++--- src/server/session.ts | 7 +------ 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index 3cd8e1fd11..722b42975e 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -775,7 +775,7 @@ namespace ts { return deduplicated.map(i => array[i]); } - function deduplicateEquality(array: ReadonlyArray, equalityComparer?: EqualityComparer) { + function deduplicateEquality(array: ReadonlyArray, equalityComparer: EqualityComparer) { const result: T[] = []; for (const item of array) { pushIfUnique(result, item, equalityComparer); @@ -789,10 +789,10 @@ namespace ts { * @param comparer An optional `Comparer` used to sort entries before comparison, though the * result will remain in the original order in `array`. */ - export function deduplicate(array: ReadonlyArray, equalityComparer?: EqualityComparer, comparer?: Comparer): T[] { + export function deduplicate(array: ReadonlyArray, equalityComparer: EqualityComparer, comparer?: Comparer): T[] { return array.length === 0 ? [] : array.length === 1 ? array.slice() : - comparer ? deduplicateRelational(array, equalityComparer!, comparer) : + comparer ? deduplicateRelational(array, equalityComparer, comparer) : deduplicateEquality(array, equalityComparer); } diff --git a/src/server/session.ts b/src/server/session.ts index 8d2fbe9e19..43f2e4f76b 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -266,8 +266,6 @@ namespace ts.server { getValue: (path: Path) => T, projects: Projects, action: (project: Project, value: T) => ReadonlyArray | U | undefined, - comparer?: (a: U, b: U) => number, - areEqual?: (a: U, b: U) => boolean, ): U[] { const outputs = flatMap(isArray(projects) ? projects : projects.projects, project => action(project, defaultValue)); if (!isArray(projects) && projects.symLinkedProjects) { @@ -276,10 +274,7 @@ namespace ts.server { outputs.push(...flatMap(projects, project => action(project, value))); }); } - - return comparer - ? sortAndDeduplicate(outputs, comparer, areEqual) - : deduplicate(outputs, areEqual); + return deduplicate(outputs, equateValues); } function combineProjectOutputFromEveryProject(projectService: ProjectService, action: (project: Project) => ReadonlyArray, areEqual: (a: T, b: T) => boolean) {