Skip to content

Commit b5278c6

Browse files
committed
Force inclusion of ES6, DOM iterable variants
1 parent 87740bc commit b5278c6

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

src/compiler/program.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1821,7 +1821,9 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
18211821
}
18221822
else {
18231823
forEach(options.lib, (libFileName, index) => {
1824-
processRootFile(pathForLibFile(libFileName), /*isDefaultLib*/ true, /*ignoreNoDefaultLib*/ false, { kind: FileIncludeKind.LibFile, index });
1824+
for (const p of pathsForLibFile(libFileName)) {
1825+
processRootFile(p, /*isDefaultLib*/ true, /*ignoreNoDefaultLib*/ false, { kind: FileIncludeKind.LibFile, index });
1826+
}
18251827
});
18261828
}
18271829
}
@@ -3855,12 +3857,27 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
38553857
}
38563858
}
38573859

3858-
function pathForLibFile(libFileName: string): string {
3859-
const existing = resolvedLibReferences?.get(libFileName);
3860-
if (existing) return existing.actual;
3861-
const result = pathForLibFileWorker(libFileName);
3862-
(resolvedLibReferences ??= new Map()).set(libFileName, result);
3863-
return result.actual;
3860+
function pathsForLibFile(libFileName: string): string[] {
3861+
const names = [libFileName];
3862+
// Force the inclusion of ES6 and DOM's iterable libs.
3863+
switch (libFileName) {
3864+
case "lib.dom.d.ts":
3865+
names.push("lib.dom.iterable.d.ts", "lib.dom.asynciterable.d.ts");
3866+
break;
3867+
case "lib.es5.d.ts":
3868+
names.push("lib.es2015.d.ts");
3869+
break;
3870+
}
3871+
3872+
return names.map(pathForLibFile);
3873+
3874+
function pathForLibFile(libFileName: string): string {
3875+
const existing = resolvedLibReferences?.get(libFileName);
3876+
if (existing) return existing.actual;
3877+
const result = pathForLibFileWorker(libFileName);
3878+
(resolvedLibReferences ??= new Map()).set(libFileName, result);
3879+
return result.actual;
3880+
}
38643881
}
38653882

38663883
function pathForLibFileWorker(libFileName: string): LibResolution {
@@ -3925,7 +3942,9 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
39253942
const libFileName = getLibFileNameFromLibReference(libReference);
39263943
if (libFileName) {
39273944
// we ignore any 'no-default-lib' reference set on this file.
3928-
processRootFile(pathForLibFile(libFileName), /*isDefaultLib*/ true, /*ignoreNoDefaultLib*/ true, { kind: FileIncludeKind.LibReferenceDirective, file: file.path, index });
3945+
for (const p of pathsForLibFile(libFileName)) {
3946+
processRootFile(p, /*isDefaultLib*/ true, /*ignoreNoDefaultLib*/ true, { kind: FileIncludeKind.LibReferenceDirective, file: file.path, index });
3947+
}
39293948
}
39303949
else {
39313950
programDiagnostics.addFileProcessingDiagnostic({

src/compiler/utilitiesPublic.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -325,22 +325,7 @@ export const targetToLibMap: Map<ScriptTarget, string> = new Map([
325325

326326
export function getDefaultLibFileName(options: CompilerOptions): string {
327327
const target = getEmitScriptTarget(options);
328-
switch (target) {
329-
case ScriptTarget.ESNext:
330-
case ScriptTarget.ES2024:
331-
case ScriptTarget.ES2023:
332-
case ScriptTarget.ES2022:
333-
case ScriptTarget.ES2021:
334-
case ScriptTarget.ES2020:
335-
case ScriptTarget.ES2019:
336-
case ScriptTarget.ES2018:
337-
case ScriptTarget.ES2017:
338-
case ScriptTarget.ES2016:
339-
case ScriptTarget.ES2015:
340-
return targetToLibMap.get(target)!;
341-
default:
342-
return "lib.d.ts";
343-
}
328+
return targetToLibMap.get(target) ?? "lib.d.ts";
344329
}
345330

346331
export function textSpanEnd(span: TextSpan): number {

0 commit comments

Comments
 (0)