From 4d68782c965c8d2ffded8e6679d23c11f5d0e6b2 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:34:19 -0800 Subject: [PATCH] Completely remove Collection/ReadonlyCollection types --- src/compiler/builder.ts | 3 +-- src/compiler/corePublic.ts | 21 --------------------- src/compiler/utilities.ts | 3 +-- src/server/editorServices.ts | 5 ++--- src/services/codefixes/convertToEsModule.ts | 3 +-- src/testRunner/unittests/tsc/helpers.ts | 2 +- 6 files changed, 6 insertions(+), 31 deletions(-) diff --git a/src/compiler/builder.ts b/src/compiler/builder.ts index 550baef382984..2bfb44b9e7abb 100644 --- a/src/compiler/builder.ts +++ b/src/compiler/builder.ts @@ -66,7 +66,6 @@ import { Program, ProjectReference, ReadBuildProgramHost, - ReadonlyCollection, returnFalse, returnUndefined, SemanticDiagnosticsBuilderProgram, @@ -277,7 +276,7 @@ export function getPendingEmitKind(optionsOrEmitKind: CompilerOptions | BuilderF return result; } -function hasSameKeys(map1: ReadonlyCollection | undefined, map2: ReadonlyCollection | undefined): boolean { +function hasSameKeys(map1: ReadonlyMap | ReadonlySet | undefined, map2: ReadonlyMap | ReadonlySet | undefined): boolean { // Has same size and every key is present in both maps return map1 === map2 || map1 !== undefined && map2 !== undefined && map1.size === map2.size && !forEachKey(map1, key => !map2.has(key)); } diff --git a/src/compiler/corePublic.ts b/src/compiler/corePublic.ts index 10645e779d6bf..817df8a7587ca 100644 --- a/src/compiler/corePublic.ts +++ b/src/compiler/corePublic.ts @@ -23,27 +23,6 @@ export interface SortedArray extends Array { " __sortedArrayBrand": any; } -/** - * Common read methods for ES6 Map/Set. - * - * @internal - */ -export interface ReadonlyCollection { - readonly size: number; - has(key: K): boolean; - keys(): Iterator; -} - -/** - * Common write methods for ES6 Map/Set. - * - * @internal - */ -export interface Collection extends ReadonlyCollection { - delete(key: K): boolean; - clear(): void; -} - /** * Array that is only intended to be pushed to, never read. * diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 56b18ff90056d..827a6bbf0b04e 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -425,7 +425,6 @@ import { PropertySignature, PseudoBigInt, QualifiedName, - ReadonlyCollection, ReadonlyTextRange, removeTrailingDirectorySeparator, RequireOrImportCall, @@ -670,7 +669,7 @@ export function forEachEntry(map: ReadonlyMap, callback: (value: * * @internal */ -export function forEachKey(map: ReadonlyCollection, callback: (key: K) => T | undefined): T | undefined { +export function forEachKey(map: ReadonlyMap | ReadonlySet, callback: (key: K) => T | undefined): T | undefined { const iterator = map.keys(); for (let iterResult = iterator.next(); !iterResult.done; iterResult = iterator.next()) { const result = callback(iterResult.value); diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index ba1e906bbfe2c..0e87614e399ad 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -144,7 +144,6 @@ import { ProjectPackageJsonInfo, ProjectReference, ReadMapFile, - ReadonlyCollection, removeFileExtension, removeIgnoredPath, removeMinAndVersionNumbers, @@ -3668,7 +3667,7 @@ export class ProjectService { } /** @internal */ - loadAncestorProjectTree(forProjects?: ReadonlyCollection) { + loadAncestorProjectTree(forProjects?: ReadonlyMap | ReadonlySet) { forProjects = forProjects || mapDefinedEntries( this.configuredProjects, (key, project) => !project.isInitialLoadPending() ? [key, true] : undefined @@ -3686,7 +3685,7 @@ export class ProjectService { } } - private ensureProjectChildren(project: ConfiguredProject, forProjects: ReadonlyCollection, seenProjects: Set) { + private ensureProjectChildren(project: ConfiguredProject, forProjects: ReadonlyMap | ReadonlySet, seenProjects: Set) { if (!tryAddToSet(seenProjects, project.canonicalConfigFilePath)) return; // If this project disables child load ignore it diff --git a/src/services/codefixes/convertToEsModule.ts b/src/services/codefixes/convertToEsModule.ts index 959b9ea4538ad..ceff836d7dc8b 100644 --- a/src/services/codefixes/convertToEsModule.ts +++ b/src/services/codefixes/convertToEsModule.ts @@ -69,7 +69,6 @@ import { PropertyAccessExpression, QuotePreference, rangeContainsRange, - ReadonlyCollection, ScriptTarget, some, SourceFile, @@ -389,7 +388,7 @@ function convertReExportAll(reExported: StringLiteralLike, checker: TypeChecker) // `module.exports = require("x");` ==> `export * from "x"; export { default } from "x";` const moduleSpecifier = reExported.text; const moduleSymbol = checker.getSymbolAtLocation(reExported); - const exports = moduleSymbol ? moduleSymbol.exports! : emptyMap as ReadonlyCollection<__String>; + const exports = moduleSymbol ? moduleSymbol.exports! : emptyMap as ReadonlyMap<__String, never>; return exports.has(InternalSymbolName.ExportEquals) ? [[reExportDefault(moduleSpecifier)], true] : !exports.has(InternalSymbolName.Default) ? [[reExportStar(moduleSpecifier)], false] : // If there's some non-default export, must include both `export *` and `export default`. diff --git a/src/testRunner/unittests/tsc/helpers.ts b/src/testRunner/unittests/tsc/helpers.ts index acb23487741a5..3d5ab7ec1a163 100644 --- a/src/testRunner/unittests/tsc/helpers.ts +++ b/src/testRunner/unittests/tsc/helpers.ts @@ -438,7 +438,7 @@ function addLibAndMakeReadonly(fs: vfs.FileSystem, libContentToAppend?: string) fs.makeReadonly(); } -export function generateSourceMapBaselineFiles(sys: ts.System & { writtenFiles: ts.ReadonlyCollection; }) { +export function generateSourceMapBaselineFiles(sys: ts.System & { writtenFiles: Map | Set; }) { const mapFileNames = ts.mapDefinedIterator(sys.writtenFiles.keys(), f => f.endsWith(".map") ? f : undefined); while (true) { const result = mapFileNames.next();