Skip to content

Commit 9f540f2

Browse files
authored
Merge branch 'main' into fix-unique-symbol-dts
2 parents 16dfb5a + e350126 commit 9f540f2

File tree

2,233 files changed

+16860
-25840
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,233 files changed

+16860
-25840
lines changed

Herebyfile.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const libs = memoize(() => {
5252
/** @type {{ libs: string[]; paths: Record<string, string | undefined>; }} */
5353
const libraries = readJson("./src/lib/libs.json");
5454
const libs = libraries.libs.map(lib => {
55-
const relativeSources = ["header.d.ts", lib + ".d.ts"];
55+
const relativeSources = [lib + ".d.ts"];
5656
const relativeTarget = libraries.paths && libraries.paths[lib] || ("lib." + lib + ".d.ts");
5757
const sources = relativeSources.map(s => path.posix.join("src/lib", s));
5858
const target = `built/local/${relativeTarget}`;

src/compiler/builder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ function createBuilderProgramState(
412412

413413
if (canCopySemanticDiagnostics) {
414414
if (sourceFile.isDeclarationFile && !copyDeclarationFileDiagnostics) return;
415-
if (sourceFile.hasNoDefaultLib && !copyLibFileDiagnostics) return;
415+
if (newProgram.isSourceFileDefaultLibrary(sourceFile) && !copyLibFileDiagnostics) return;
416416

417417
// Unchanged file copy diagnostics
418418
const diagnostics = oldState!.semanticDiagnosticsPerFile.get(sourceFilePath);

src/compiler/checker.ts

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,7 +1531,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
15311531
var noImplicitThis = getStrictOptionValue(compilerOptions, "noImplicitThis");
15321532
var useUnknownInCatchVariables = getStrictOptionValue(compilerOptions, "useUnknownInCatchVariables");
15331533
var exactOptionalPropertyTypes = compilerOptions.exactOptionalPropertyTypes;
1534-
var noUncheckedSideEffectImports = !!compilerOptions.noUncheckedSideEffectImports;
1534+
var noUncheckedSideEffectImports = compilerOptions.noUncheckedSideEffectImports !== false;
15351535

15361536
var checkBinaryExpression = createCheckBinaryExpression();
15371537
var emitResolver = createResolver();
@@ -4684,9 +4684,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
46844684
}
46854685
}
46864686

4687-
function resolveExternalModuleName(location: Node, moduleReferenceExpression: Expression, ignoreErrors?: boolean): Symbol | undefined {
4687+
function resolveExternalModuleName(location: Node, moduleReferenceExpression: Expression, ignoreErrors?: boolean, errorMessage?: DiagnosticMessage): Symbol | undefined {
46884688
const isClassic = getEmitModuleResolutionKind(compilerOptions) === ModuleResolutionKind.Classic;
4689-
const errorMessage = isClassic ?
4689+
errorMessage ??= isClassic ?
46904690
Diagnostics.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_nodenext_or_to_add_aliases_to_the_paths_option
46914691
: Diagnostics.Cannot_find_module_0_or_its_corresponding_type_declarations;
46924692
return resolveExternalModuleNameWorker(location, moduleReferenceExpression, ignoreErrors ? undefined : errorMessage, ignoreErrors);
@@ -21504,15 +21504,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2150421504
let issuedElaboration = false;
2150521505
if (!targetProp) {
2150621506
const indexInfo = getApplicableIndexInfo(target, nameType);
21507-
if (indexInfo && indexInfo.declaration && !getSourceFileOfNode(indexInfo.declaration).hasNoDefaultLib) {
21507+
if (indexInfo && indexInfo.declaration && !host.isSourceFileDefaultLibrary(getSourceFileOfNode(indexInfo.declaration))) {
2150821508
issuedElaboration = true;
2150921509
addRelatedInfo(reportedDiag, createDiagnosticForNode(indexInfo.declaration, Diagnostics.The_expected_type_comes_from_this_index_signature));
2151021510
}
2151121511
}
2151221512

2151321513
if (!issuedElaboration && (targetProp && length(targetProp.declarations) || target.symbol && length(target.symbol.declarations))) {
2151421514
const targetNode = targetProp && length(targetProp.declarations) ? targetProp.declarations![0] : target.symbol.declarations![0];
21515-
if (!getSourceFileOfNode(targetNode).hasNoDefaultLib) {
21515+
if (!host.isSourceFileDefaultLibrary(getSourceFileOfNode(targetNode))) {
2151621516
addRelatedInfo(
2151721517
reportedDiag,
2151821518
createDiagnosticForNode(
@@ -24460,13 +24460,10 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2446024460
if (isObjectLiteralType(target)) {
2446124461
for (const sourceProp of excludeProperties(getPropertiesOfType(source), excludedProperties)) {
2446224462
if (!getPropertyOfObjectType(target, sourceProp.escapedName)) {
24463-
const sourceType = getTypeOfSymbol(sourceProp);
24464-
if (!(sourceType.flags & TypeFlags.Undefined)) {
24465-
if (reportErrors) {
24466-
reportError(Diagnostics.Property_0_does_not_exist_on_type_1, symbolToString(sourceProp), typeToString(target));
24467-
}
24468-
return Ternary.False;
24463+
if (reportErrors) {
24464+
reportError(Diagnostics.Property_0_does_not_exist_on_type_1, symbolToString(sourceProp), typeToString(target));
2446924465
}
24466+
return Ternary.False;
2447024467
}
2447124468
}
2447224469
}
@@ -27888,24 +27885,22 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2788827885
for (const type of types) {
2788927886
if (type.flags & (TypeFlags.Object | TypeFlags.Intersection | TypeFlags.InstantiableNonPrimitive)) {
2789027887
const discriminant = getTypeOfPropertyOfType(type, name);
27891-
if (discriminant) {
27892-
if (!isLiteralType(discriminant)) {
27893-
return undefined;
27894-
}
27895-
let duplicate = false;
27896-
forEachType(discriminant, t => {
27897-
const id = getTypeId(getRegularTypeOfLiteralType(t));
27898-
const existing = map.get(id);
27899-
if (!existing) {
27900-
map.set(id, type);
27901-
}
27902-
else if (existing !== unknownType) {
27903-
map.set(id, unknownType);
27904-
duplicate = true;
27905-
}
27906-
});
27907-
if (!duplicate) count++;
27888+
if (!discriminant || !isLiteralType(discriminant)) {
27889+
return undefined;
2790827890
}
27891+
let duplicate = false;
27892+
forEachType(discriminant, t => {
27893+
const id = getTypeId(getRegularTypeOfLiteralType(t));
27894+
const existing = map.get(id);
27895+
if (!existing) {
27896+
map.set(id, type);
27897+
}
27898+
else if (existing !== unknownType) {
27899+
map.set(id, unknownType);
27900+
duplicate = true;
27901+
}
27902+
});
27903+
if (!duplicate) count++;
2790927904
}
2791027905
}
2791127906
return count >= 10 && count * 2 >= types.length ? map : undefined;
@@ -38003,7 +37998,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3800337998
const exprType = checkExpression(expression, checkMode);
3800437999
if (isConstTypeReference(type)) {
3800538000
if (!isValidConstAssertionArgument(expression)) {
38006-
error(expression, Diagnostics.A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals);
38001+
error(expression, Diagnostics.A_const_assertion_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals);
3800738002
}
3800838003
return getRegularTypeOfLiteralType(exprType);
3800938004
}
@@ -48516,7 +48511,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4851648511
}
4851748512
}
4851848513
else if (noUncheckedSideEffectImports && !importClause) {
48519-
void resolveExternalModuleName(node, node.moduleSpecifier);
48514+
void resolveExternalModuleName(node, node.moduleSpecifier, /*ignoreErrors*/ undefined, Diagnostics.Cannot_find_module_or_type_declarations_for_side_effect_import_of_0);
4852048515
}
4852148516
}
4852248517
checkImportAttributes(node);

src/compiler/commandLineParser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,7 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [
12431243
affectsBuildInfo: true,
12441244
category: Diagnostics.Modules,
12451245
description: Diagnostics.Check_side_effect_imports,
1246-
defaultValueDescription: false,
1246+
defaultValueDescription: true,
12471247
},
12481248

12491249
// Source Maps

src/compiler/diagnosticMessages.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1155,7 +1155,7 @@
11551155
"category": "Error",
11561156
"code": 1354
11571157
},
1158-
"A 'const' assertions can only be applied to references to enum members, or string, number, boolean, array, or object literals.": {
1158+
"A 'const' assertion can only be applied to references to enum members, or string, number, boolean, array, or object literals.": {
11591159
"category": "Error",
11601160
"code": 1355
11611161
},
@@ -4007,6 +4007,10 @@
40074007
"category": "Error",
40084008
"code": 2881
40094009
},
4010+
"Cannot find module or type declarations for side-effect import of '{0}'.": {
4011+
"category": "Error",
4012+
"code": 2882
4013+
},
40104014

40114015
"Import declaration '{0}' is using private name '{1}'.": {
40124016
"category": "Error",

src/compiler/emitter.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4286,18 +4286,14 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
42864286
}
42874287

42884288
function emitSyntheticTripleSlashReferencesIfNeeded(node: Bundle) {
4289-
emitTripleSlashDirectives(!!node.hasNoDefaultLib, node.syntheticFileReferences || [], node.syntheticTypeReferences || [], node.syntheticLibReferences || []);
4289+
emitTripleSlashDirectives(node.syntheticFileReferences || [], node.syntheticTypeReferences || [], node.syntheticLibReferences || []);
42904290
}
42914291

42924292
function emitTripleSlashDirectivesIfNeeded(node: SourceFile) {
4293-
if (node.isDeclarationFile) emitTripleSlashDirectives(node.hasNoDefaultLib, node.referencedFiles, node.typeReferenceDirectives, node.libReferenceDirectives);
4293+
if (node.isDeclarationFile) emitTripleSlashDirectives(node.referencedFiles, node.typeReferenceDirectives, node.libReferenceDirectives);
42944294
}
42954295

4296-
function emitTripleSlashDirectives(hasNoDefaultLib: boolean, files: readonly FileReference[], types: readonly FileReference[], libs: readonly FileReference[]) {
4297-
if (hasNoDefaultLib) {
4298-
writeComment(`/// <reference no-default-lib="true"/>`);
4299-
writeLine();
4300-
}
4296+
function emitTripleSlashDirectives(files: readonly FileReference[], types: readonly FileReference[], libs: readonly FileReference[]) {
43014297
if (currentSourceFile && currentSourceFile.moduleName) {
43024298
writeComment(`/// <amd-module name="${currentSourceFile.moduleName}" />`);
43034299
writeLine();

src/compiler/factory/nodeFactory.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6181,16 +6181,15 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
61816181
isDeclarationFile = node.isDeclarationFile,
61826182
referencedFiles = node.referencedFiles,
61836183
typeReferenceDirectives = node.typeReferenceDirectives,
6184-
hasNoDefaultLib = node.hasNoDefaultLib,
6184+
_hasNoDefaultLib = false,
61856185
libReferenceDirectives = node.libReferenceDirectives,
61866186
) {
61876187
return node.statements !== statements
61886188
|| node.isDeclarationFile !== isDeclarationFile
61896189
|| node.referencedFiles !== referencedFiles
61906190
|| node.typeReferenceDirectives !== typeReferenceDirectives
6191-
|| node.hasNoDefaultLib !== hasNoDefaultLib
61926191
|| node.libReferenceDirectives !== libReferenceDirectives
6193-
? update(cloneSourceFileWithChanges(node, statements, isDeclarationFile, referencedFiles, typeReferenceDirectives, hasNoDefaultLib, libReferenceDirectives), node)
6192+
? update(cloneSourceFileWithChanges(node, statements, isDeclarationFile, referencedFiles, typeReferenceDirectives, /*hasNoDefaultLib*/ false, libReferenceDirectives), node)
61946193
: node;
61956194
}
61966195

@@ -6201,7 +6200,6 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode
62016200
node.syntheticFileReferences = undefined;
62026201
node.syntheticTypeReferences = undefined;
62036202
node.syntheticLibReferences = undefined;
6204-
node.hasNoDefaultLib = undefined;
62056203
return node;
62066204
}
62076205

src/compiler/moduleNameResolver.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2812,7 +2812,9 @@ function getLoadModuleFromTargetExportOrImport(extensions: Extensions, state: Mo
28122812
const subTarget = (target as MapLike<unknown>)[condition];
28132813
const result = loadModuleFromTargetExportOrImport(subTarget, subpath, pattern, key);
28142814
if (result) {
2815-
traceIfEnabled(state, Diagnostics.Resolved_under_condition_0, condition);
2815+
if (result.value) {
2816+
traceIfEnabled(state, Diagnostics.Resolved_under_condition_0, condition);
2817+
}
28162818
traceIfEnabled(state, Diagnostics.Exiting_conditional_exports);
28172819
return result;
28182820
}
@@ -2846,7 +2848,7 @@ function getLoadModuleFromTargetExportOrImport(extensions: Extensions, state: Mo
28462848
if (state.traceEnabled) {
28472849
trace(state.host, Diagnostics.package_json_scope_0_explicitly_maps_specifier_1_to_null, scope.packageDirectory, moduleName);
28482850
}
2849-
return toSearchResult(/*value*/ undefined);
2851+
return { value: undefined };
28502852
}
28512853
if (state.traceEnabled) {
28522854
trace(state.host, Diagnostics.package_json_scope_0_has_invalid_type_for_target_of_specifier_1, scope.packageDirectory, moduleName);

src/compiler/parser.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10617,7 +10617,6 @@ export function processPragmasIntoFields(context: PragmaContext, reportDiagnosti
1061710617
context.typeReferenceDirectives = [];
1061810618
context.libReferenceDirectives = [];
1061910619
context.amdDependencies = [];
10620-
context.hasNoDefaultLib = false;
1062110620
context.pragmas!.forEach((entryOrList, key) => { // TODO: GH#18217
1062210621
// TODO: The below should be strongly type-guarded and not need casts/explicit annotations, since entryOrList is related to
1062310622
// key and key is constrained to a union; but it's not (see GH#21483 for at least partial fix) :(
@@ -10630,7 +10629,7 @@ export function processPragmasIntoFields(context: PragmaContext, reportDiagnosti
1063010629
const { types, lib, path, ["resolution-mode"]: res, preserve: _preserve } = arg.arguments;
1063110630
const preserve = _preserve === "true" ? true : undefined;
1063210631
if (arg.arguments["no-default-lib"] === "true") {
10633-
context.hasNoDefaultLib = true;
10632+
// This has been removed; parse but ignore it.
1063410633
}
1063510634
else if (types) {
1063610635
const parsed = parseResolutionMode(res, types.pos, types.end, reportDiagnostic);

0 commit comments

Comments
 (0)