From a26bf87510b90424816611f6fc57527e9f655f73 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Sun, 19 Mar 2023 21:15:55 -0700 Subject: [PATCH] Revert "Rewrite getPropFromRaw slightly to surface T in the parameters (#53301)" This reverts commit d458e30a0685f01ec1ed4e60de05ffe9de7091bd. --- src/compiler/commandLineParser.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 0ceebb399cbdb..ab3909d8e2385 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -29,6 +29,7 @@ import { emptyArray, endsWith, ensureTrailingDirectorySeparator, + every, Expression, extend, Extension, @@ -2973,7 +2974,7 @@ function parseJsonConfigFileContentWorker( }; function getConfigFileSpecs(): ConfigFileSpecs { - const referencesOfRaw = getPropFromRaw("references", (element): element is ProjectReference => !!element && typeof element === "object", "object"); + const referencesOfRaw = getPropFromRaw("references", element => typeof element === "object", "object"); const filesSpecs = toPropValue(getSpecsFromRaw("files")); if (filesSpecs) { const hasZeroOrNoReferences = referencesOfRaw === "no-prop" || isArray(referencesOfRaw) && referencesOfRaw.length === 0; @@ -3048,7 +3049,7 @@ function parseJsonConfigFileContentWorker( function getProjectReferences(basePath: string): readonly ProjectReference[] | undefined { let projectReferences: ProjectReference[] | undefined; - const referencesOfRaw = getPropFromRaw("references", (element): element is ProjectReference => !!element && typeof element === "object", "object"); + const referencesOfRaw = getPropFromRaw("references", element => typeof element === "object", "object"); if (isArray(referencesOfRaw)) { for (const ref of referencesOfRaw) { if (typeof ref.path !== "string") { @@ -3076,12 +3077,11 @@ function parseJsonConfigFileContentWorker( return getPropFromRaw(prop, isString, "string"); } - function getPropFromRaw(prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => value is T, elementTypeName: string): PropOfRaw { + function getPropFromRaw(prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string): PropOfRaw { if (hasProperty(raw, prop) && !isNullOrUndefined(raw[prop])) { - const value = raw[prop]; - if (isArray(value)) { - const result = filter(value, validateElement); - if (!sourceFile && result.length !== value.length) { + if (isArray(raw[prop])) { + const result = raw[prop] as T[]; + if (!sourceFile && !every(result, validateElement)) { errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, prop, elementTypeName)); } return result;