Add new option "libReplacement" (#60829)

This commit is contained in:
Jake Bailey
2025-01-23 17:34:52 -08:00
committed by GitHub
parent c5058f0066
commit 220706eb03
49 changed files with 1230 additions and 71 deletions
+8
View File
@@ -865,6 +865,14 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [
affectsBuildInfo: true,
affectsSemanticDiagnostics: true,
},
{
name: "libReplacement",
type: "boolean",
affectsProgramStructure: true,
category: Diagnostics.Language_and_Environment,
description: Diagnostics.Enable_lib_replacement,
defaultValueDescription: true,
},
// Strict Type Checks
{
+4
View File
@@ -6502,6 +6502,10 @@
"category": "Error",
"code": 6807
},
"Enable lib replacement.": {
"category": "Message",
"code": 6808
},
"one of:": {
"category": "Message",
+11
View File
@@ -3937,6 +3937,17 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
const existing = resolvedLibProcessing?.get(libFileName);
if (existing) return existing;
if (options.libReplacement === false) {
const result: LibResolution = {
resolution: {
resolvedModule: undefined,
},
actual: combinePaths(defaultLibraryPath, libFileName),
};
(resolvedLibProcessing ??= new Map()).set(libFileName, result);
return result;
}
if (structureIsReused !== StructureIsReused.Not && oldProgram && !hasInvalidatedLibResolutions(libFileName)) {
const oldResolution = oldProgram.resolvedLibReferences?.get(libFileName);
if (oldResolution) {
+1
View File
@@ -7411,6 +7411,7 @@ export interface CompilerOptions {
/** @deprecated */
keyofStringsOnly?: boolean;
lib?: string[];
libReplacement?: boolean;
/** @internal */ listEmittedFiles?: boolean;
/** @internal */ listFiles?: boolean;
/** @internal */ explainFiles?: boolean;