Skip to content

Commit bf40cd8

Browse files
authored
Pick #62669, #62567, #62509 to tsgo-port (#62671)
1 parent 050a6f8 commit bf40cd8

File tree

2,577 files changed

+63294
-15258
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,577 files changed

+63294
-15258
lines changed

src/compiler/commandLineParser.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,7 @@ export const moduleOptionDeclaration: CommandLineOptionOfCustomType = {
607607
nodenext: ModuleKind.NodeNext,
608608
preserve: ModuleKind.Preserve,
609609
})),
610+
deprecatedKeys: new Set(["none", "amd", "system", "umd"]),
610611
affectsSourceFile: true,
611612
affectsModuleResolution: true,
612613
affectsEmit: true,
@@ -1070,13 +1071,13 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [
10701071
nodenext: ModuleResolutionKind.NodeNext,
10711072
bundler: ModuleResolutionKind.Bundler,
10721073
})),
1073-
deprecatedKeys: new Set(["node"]),
1074+
deprecatedKeys: new Set(["node", "node10", "classic"]),
10741075
affectsSourceFile: true,
10751076
affectsModuleResolution: true,
10761077
paramType: Diagnostics.STRATEGY,
10771078
category: Diagnostics.Modules,
10781079
description: Diagnostics.Specify_how_TypeScript_looks_up_a_file_from_a_given_module_specifier,
1079-
defaultValueDescription: Diagnostics.module_AMD_or_UMD_or_System_or_ES6_then_Classic_Otherwise_Node,
1080+
defaultValueDescription: Diagnostics.nodenext_if_module_is_nodenext_node16_if_module_is_node16_or_node18_otherwise_bundler,
10801081
},
10811082
{
10821083
name: "baseUrl",
@@ -1149,7 +1150,7 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [
11491150
affectsBuildInfo: true,
11501151
category: Diagnostics.Interop_Constraints,
11511152
description: Diagnostics.Allow_import_x_from_y_when_a_module_doesn_t_have_a_default_export,
1152-
defaultValueDescription: Diagnostics.module_system_or_esModuleInterop,
1153+
defaultValueDescription: true,
11531154
},
11541155
{
11551156
name: "esModuleInterop",
@@ -1160,7 +1161,7 @@ const commandOptionsWithoutBuild: CommandLineOption[] = [
11601161
showInSimplifiedHelpView: true,
11611162
category: Diagnostics.Interop_Constraints,
11621163
description: Diagnostics.Emit_additional_JavaScript_to_ease_support_for_importing_CommonJS_modules_This_enables_allowSyntheticDefaultImports_for_type_compatibility,
1163-
defaultValueDescription: false,
1164+
defaultValueDescription: true,
11641165
},
11651166
{
11661167
name: "preserveSymlinks",

src/compiler/diagnosticMessages.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4717,6 +4717,10 @@
47174717
"category": "Error",
47184718
"code": 5110
47194719
},
4720+
"Visit https://aka.ms/ts6 for migration information.": {
4721+
"category": "Message",
4722+
"code": 5111
4723+
},
47204724

47214725
"Generates a sourcemap for each corresponding '.d.ts' file.": {
47224726
"category": "Message",
@@ -6603,7 +6607,7 @@
66036607
"category": "Message",
66046608
"code": 6909
66056609
},
6606-
"module === `AMD` or `UMD` or `System` or `ES6`, then `Classic`, Otherwise `Node`": {
6610+
"`nodenext` if `module` is `nodenext`; `node16` if `module` is `node16` or `node18`; otherwise, `bundler`.": {
66076611
"category": "Message",
66086612
"code": 69010
66096613
},

src/compiler/program.ts

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4446,8 +4446,8 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
44464446
function checkDeprecations(
44474447
deprecatedIn: string,
44484448
removedIn: string,
4449-
createDiagnostic: (name: string, value: string | undefined, useInstead: string | undefined, message: DiagnosticMessage, ...args: DiagnosticArguments) => void,
4450-
fn: (createDeprecatedDiagnostic: (name: string, value?: string, useInstead?: string) => void) => void,
4449+
createDiagnostic: (name: string, value: string | undefined, useInstead: string | undefined, related: DiagnosticMessage | undefined, message: DiagnosticMessage, ...args: DiagnosticArguments) => void,
4450+
fn: (createDeprecatedDiagnostic: (name: string, value?: string, useInstead?: string, related?: DiagnosticMessage) => void) => void,
44514451
) {
44524452
const deprecatedInVersion = new Version(deprecatedIn);
44534453
const removedInVersion = new Version(removedIn);
@@ -4458,36 +4458,44 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
44584458
const canBeSilenced = !mustBeRemoved && ignoreDeprecationsVersion.compareTo(deprecatedInVersion) === Comparison.LessThan;
44594459

44604460
if (mustBeRemoved || canBeSilenced) {
4461-
fn((name, value, useInstead) => {
4461+
fn((name, value, useInstead, related) => {
44624462
if (mustBeRemoved) {
44634463
if (value === undefined) {
4464-
createDiagnostic(name, value, useInstead, Diagnostics.Option_0_has_been_removed_Please_remove_it_from_your_configuration, name);
4464+
createDiagnostic(name, value, useInstead, related, Diagnostics.Option_0_has_been_removed_Please_remove_it_from_your_configuration, name);
44654465
}
44664466
else {
4467-
createDiagnostic(name, value, useInstead, Diagnostics.Option_0_1_has_been_removed_Please_remove_it_from_your_configuration, name, value);
4467+
createDiagnostic(name, value, useInstead, related, Diagnostics.Option_0_1_has_been_removed_Please_remove_it_from_your_configuration, name, value);
44684468
}
44694469
}
44704470
else {
44714471
if (value === undefined) {
4472-
createDiagnostic(name, value, useInstead, Diagnostics.Option_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_compilerOption_ignoreDeprecations_Colon_2_to_silence_this_error, name, removedIn, deprecatedIn);
4472+
createDiagnostic(name, value, useInstead, related, Diagnostics.Option_0_is_deprecated_and_will_stop_functioning_in_TypeScript_1_Specify_compilerOption_ignoreDeprecations_Colon_2_to_silence_this_error, name, removedIn, deprecatedIn);
44734473
}
44744474
else {
4475-
createDiagnostic(name, value, useInstead, Diagnostics.Option_0_1_is_deprecated_and_will_stop_functioning_in_TypeScript_2_Specify_compilerOption_ignoreDeprecations_Colon_3_to_silence_this_error, name, value, removedIn, deprecatedIn);
4475+
createDiagnostic(name, value, useInstead, related, Diagnostics.Option_0_1_is_deprecated_and_will_stop_functioning_in_TypeScript_2_Specify_compilerOption_ignoreDeprecations_Colon_3_to_silence_this_error, name, value, removedIn, deprecatedIn);
44764476
}
44774477
}
44784478
});
44794479
}
44804480
}
44814481

44824482
function verifyDeprecatedCompilerOptions() {
4483-
function createDiagnostic(name: string, value: string | undefined, useInstead: string | undefined, message: DiagnosticMessage, ...args: DiagnosticArguments) {
4483+
function createDiagnostic(name: string, value: string | undefined, useInstead: string | undefined, related: DiagnosticMessage | undefined, message: DiagnosticMessage, ...args: DiagnosticArguments) {
44844484
if (useInstead) {
4485-
const details = chainDiagnosticMessages(/*details*/ undefined, Diagnostics.Use_0_instead, useInstead);
4485+
let details = chainDiagnosticMessages(/*details*/ undefined, Diagnostics.Use_0_instead, useInstead);
4486+
if (related) {
4487+
details = chainDiagnosticMessages(details, related);
4488+
}
44864489
const chain = chainDiagnosticMessages(details, message, ...args);
44874490
createDiagnosticForOption(/*onKey*/ !value, name, /*option2*/ undefined, chain);
44884491
}
44894492
else {
4490-
createDiagnosticForOption(/*onKey*/ !value, name, /*option2*/ undefined, message, ...args);
4493+
let details: DiagnosticMessageChain | undefined;
4494+
if (related) {
4495+
details = chainDiagnosticMessages(/*details*/ undefined, related);
4496+
}
4497+
const chain = chainDiagnosticMessages(details, message, ...args);
4498+
createDiagnosticForOption(/*onKey*/ !value, name, /*option2*/ undefined, chain);
44914499
}
44924500
}
44934501

@@ -4526,13 +4534,28 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro
45264534

45274535
checkDeprecations("6.0", "7.0", createDiagnostic, createDeprecatedDiagnostic => {
45284536
if (options.moduleResolution === ModuleResolutionKind.Node10) {
4529-
createDeprecatedDiagnostic("moduleResolution", "node10");
4537+
createDeprecatedDiagnostic("moduleResolution", "node10", /*useInstead*/ undefined, Diagnostics.Visit_https_Colon_Slash_Slashaka_ms_Slashts6_for_migration_information);
4538+
}
4539+
if (options.moduleResolution === ModuleResolutionKind.Classic) {
4540+
createDeprecatedDiagnostic("moduleResolution", "classic");
4541+
}
4542+
if (options.baseUrl !== undefined) {
4543+
createDeprecatedDiagnostic("baseUrl", /*value*/ undefined, /*useInstead*/ undefined, Diagnostics.Visit_https_Colon_Slash_Slashaka_ms_Slashts6_for_migration_information);
4544+
}
4545+
if (options.esModuleInterop === false) {
4546+
createDeprecatedDiagnostic("esModuleInterop", "false", /*useInstead*/ undefined, /*related*/ undefined);
4547+
}
4548+
if (options.allowSyntheticDefaultImports === false) {
4549+
createDeprecatedDiagnostic("allowSyntheticDefaultImports", "false", /*useInstead*/ undefined, /*related*/ undefined);
4550+
}
4551+
if (options.module === ModuleKind.None || options.module === ModuleKind.AMD || options.module === ModuleKind.UMD || options.module === ModuleKind.System) {
4552+
createDeprecatedDiagnostic("module", ModuleKind[options.module]);
45304553
}
45314554
});
45324555
}
45334556

45344557
function verifyDeprecatedProjectReference(ref: ProjectReference, parentFile: JsonSourceFile | undefined, index: number) {
4535-
function createDiagnostic(_name: string, _value: string | undefined, _useInstead: string | undefined, message: DiagnosticMessage, ...args: DiagnosticArguments) {
4558+
function createDiagnostic(_name: string, _value: string | undefined, _useInstead: string | undefined, _related: DiagnosticMessage | undefined, message: DiagnosticMessage, ...args: DiagnosticArguments) {
45364559
createDiagnosticForReference(parentFile, index, message, ...args);
45374560
}
45384561

src/compiler/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7331,6 +7331,7 @@ export function diagnosticCategoryName(d: { category: DiagnosticCategory; }, low
73317331
}
73327332

73337333
export enum ModuleResolutionKind {
7334+
/** @deprecated */
73347335
Classic = 1,
73357336
/**
73367337
* @deprecated
@@ -7418,6 +7419,7 @@ export interface CompilerOptions {
74187419
allowUnreachableCode?: boolean;
74197420
allowUnusedLabels?: boolean;
74207421
alwaysStrict?: boolean; // Always combine with strict property
7422+
/** @deprecated */
74217423
baseUrl?: string;
74227424
/**
74237425
* An error if set - this should only go through the -b pipeline and not actually be observed
@@ -7593,10 +7595,14 @@ export interface TypeAcquisition {
75937595
}
75947596

75957597
export enum ModuleKind {
7598+
/** @deprecated */
75967599
None = 0,
75977600
CommonJS = 1,
7601+
/** @deprecated */
75987602
AMD = 2,
7603+
/** @deprecated */
75997604
UMD = 3,
7605+
/** @deprecated */
76007606
System = 4,
76017607

76027608
// NOTE: ES module kinds should be contiguous to more easily check whether a module kind is *any* ES module kind.

src/compiler/utilities.ts

Lines changed: 22 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8985,27 +8985,23 @@ const _computedOptions = createComputedCompilerOptions({
89858985
moduleResolution: {
89868986
dependencies: ["module", "target"],
89878987
computeValue: (compilerOptions): ModuleResolutionKind => {
8988-
let moduleResolution = compilerOptions.moduleResolution;
8989-
if (moduleResolution === undefined) {
8990-
switch (_computedOptions.module.computeValue(compilerOptions)) {
8991-
case ModuleKind.Node16:
8992-
case ModuleKind.Node18:
8993-
case ModuleKind.Node20:
8994-
moduleResolution = ModuleResolutionKind.Node16;
8995-
break;
8996-
case ModuleKind.NodeNext:
8997-
moduleResolution = ModuleResolutionKind.NodeNext;
8998-
break;
8999-
case ModuleKind.CommonJS:
9000-
case ModuleKind.Preserve:
9001-
moduleResolution = ModuleResolutionKind.Bundler;
9002-
break;
9003-
default:
9004-
moduleResolution = ModuleResolutionKind.Classic;
9005-
break;
9006-
}
8988+
if (compilerOptions.moduleResolution !== undefined) {
8989+
return compilerOptions.moduleResolution;
90078990
}
9008-
return moduleResolution;
8991+
const moduleKind = _computedOptions.module.computeValue(compilerOptions);
8992+
switch (moduleKind) {
8993+
case ModuleKind.None:
8994+
case ModuleKind.AMD:
8995+
case ModuleKind.UMD:
8996+
case ModuleKind.System:
8997+
return ModuleResolutionKind.Classic;
8998+
case ModuleKind.NodeNext:
8999+
return ModuleResolutionKind.NodeNext;
9000+
}
9001+
if (ModuleKind.Node16 <= moduleKind && moduleKind < ModuleKind.NodeNext) {
9002+
return ModuleResolutionKind.Node16;
9003+
}
9004+
return ModuleResolutionKind.Bundler;
90099005
},
90109006
},
90119007
moduleDetection: {
@@ -9027,35 +9023,25 @@ const _computedOptions = createComputedCompilerOptions({
90279023
},
90289024
},
90299025
esModuleInterop: {
9030-
dependencies: ["module", "target"],
9026+
dependencies: [],
90319027
computeValue: (compilerOptions): boolean => {
90329028
if (compilerOptions.esModuleInterop !== undefined) {
90339029
return compilerOptions.esModuleInterop;
90349030
}
9035-
switch (_computedOptions.module.computeValue(compilerOptions)) {
9036-
case ModuleKind.Node16:
9037-
case ModuleKind.Node18:
9038-
case ModuleKind.Node20:
9039-
case ModuleKind.NodeNext:
9040-
case ModuleKind.Preserve:
9041-
return true;
9042-
}
9043-
return false;
9031+
return true;
90449032
},
90459033
},
90469034
allowSyntheticDefaultImports: {
9047-
dependencies: ["module", "target", "moduleResolution"],
9035+
dependencies: [],
90489036
computeValue: (compilerOptions): boolean => {
90499037
if (compilerOptions.allowSyntheticDefaultImports !== undefined) {
90509038
return compilerOptions.allowSyntheticDefaultImports;
90519039
}
9052-
return _computedOptions.esModuleInterop.computeValue(compilerOptions)
9053-
|| _computedOptions.module.computeValue(compilerOptions) === ModuleKind.System
9054-
|| _computedOptions.moduleResolution.computeValue(compilerOptions) === ModuleResolutionKind.Bundler;
9040+
return true;
90559041
},
90569042
},
90579043
resolvePackageJsonExports: {
9058-
dependencies: ["moduleResolution"],
9044+
dependencies: ["moduleResolution", "module", "target"],
90599045
computeValue: (compilerOptions): boolean => {
90609046
const moduleResolution = _computedOptions.moduleResolution.computeValue(compilerOptions);
90619047
if (!moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) {
@@ -9074,7 +9060,7 @@ const _computedOptions = createComputedCompilerOptions({
90749060
},
90759061
},
90769062
resolvePackageJsonImports: {
9077-
dependencies: ["moduleResolution", "resolvePackageJsonExports"],
9063+
dependencies: ["moduleResolution", "resolvePackageJsonExports", "module", "target"],
90789064
computeValue: (compilerOptions): boolean => {
90799065
const moduleResolution = _computedOptions.moduleResolution.computeValue(compilerOptions);
90809066
if (!moduleResolutionSupportsPackageJsonExportsAndImports(moduleResolution)) {

src/services/completions.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ export const enum SymbolOriginInfoKind {
482482
ComputedPropertyName = 1 << 9,
483483

484484
SymbolMemberNoExport = SymbolMember,
485-
SymbolMemberExport = SymbolMember | Export,
485+
SymbolMemberExport = SymbolMember | ResolvedExport,
486486
}
487487

488488
/** @internal */
@@ -536,7 +536,7 @@ function originIsExport(origin: SymbolOriginInfo | undefined): origin is SymbolO
536536
}
537537

538538
function originIsResolvedExport(origin: SymbolOriginInfo | undefined): origin is SymbolOriginInfoResolvedExport {
539-
return !!(origin && origin.kind === SymbolOriginInfoKind.ResolvedExport);
539+
return !!(origin && origin.kind & SymbolOriginInfoKind.ResolvedExport);
540540
}
541541

542542
function originIncludesSymbolName(origin: SymbolOriginInfo | undefined): origin is SymbolOriginInfoExport | SymbolOriginInfoResolvedExport | SymbolOriginInfoComputedPropertyName {
@@ -2621,12 +2621,12 @@ function isRecommendedCompletionMatch(localSymbol: Symbol, recommendedCompletion
26212621
}
26222622

26232623
function getSourceFromOrigin(origin: SymbolOriginInfo | undefined): string | undefined {
2624-
if (originIsExport(origin)) {
2625-
return stripQuotes(origin.moduleSymbol.name);
2626-
}
26272624
if (originIsResolvedExport(origin)) {
26282625
return origin.moduleSpecifier;
26292626
}
2627+
if (originIsExport(origin)) {
2628+
return stripQuotes(origin.moduleSymbol.name);
2629+
}
26302630
if (origin?.kind === SymbolOriginInfoKind.ThisType) {
26312631
return CompletionSource.ThisProperty;
26322632
}

src/testRunner/unittests/evaluation/awaitUsingDeclarations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,7 @@ describe("unittests:: evaluation:: awaitUsingDeclarations", () => {
14451445
export const y = 2;
14461446
output.push("after export y");
14471447
`,
1448-
{ target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.System },
1448+
{ target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.System, ignoreDeprecations: "6.0" },
14491449
);
14501450

14511451
assert.strictEqual(x, 1);

src/testRunner/unittests/evaluation/updateExpressionInModule.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe("unittests:: evaluation:: updateExpressionInModule", () => {
3131
},
3232
rootFiles: ["/.src/main.ts"],
3333
main: "/.src/main.ts",
34-
}, { module: ts.ModuleKind.System });
34+
}, { module: ts.ModuleKind.System, ignoreDeprecations: "6.0" });
3535
assert.equal(result.a, 2);
3636
assert.equal(result.b, 2);
3737
});
@@ -67,7 +67,7 @@ describe("unittests:: evaluation:: updateExpressionInModule", () => {
6767
rootFiles: ["/.src/main.ts"],
6868
main: "/.src/main.ts",
6969
},
70-
{ module: ts.ModuleKind.System },
70+
{ module: ts.ModuleKind.System, ignoreDeprecations: "6.0" },
7171
{ BigInt },
7272
);
7373
assert.equal(result.a, BigInt(2));
@@ -99,7 +99,7 @@ describe("unittests:: evaluation:: updateExpressionInModule", () => {
9999
},
100100
rootFiles: ["/.src/main.ts"],
101101
main: "/.src/main.ts",
102-
}, { module: ts.ModuleKind.System });
102+
}, { module: ts.ModuleKind.System, ignoreDeprecations: "6.0" });
103103
assert.equal(result.a, 2);
104104
assert.equal(result.b, 1);
105105
});
@@ -135,7 +135,7 @@ describe("unittests:: evaluation:: updateExpressionInModule", () => {
135135
rootFiles: ["/.src/main.ts"],
136136
main: "/.src/main.ts",
137137
},
138-
{ module: ts.ModuleKind.System },
138+
{ module: ts.ModuleKind.System, ignoreDeprecations: "6.0" },
139139
{ BigInt },
140140
);
141141
assert.equal(result.a, BigInt(2));

src/testRunner/unittests/evaluation/usingDeclarations.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,7 +1594,7 @@ describe("unittests:: evaluation:: usingDeclarations", () => {
15941594
export const y = 2;
15951595
output.push("after export y");
15961596
`,
1597-
{ target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.AMD },
1597+
{ target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.AMD, ignoreDeprecations: "6.0" },
15981598
);
15991599

16001600
assert.strictEqual(x, 1);
@@ -1624,7 +1624,7 @@ describe("unittests:: evaluation:: usingDeclarations", () => {
16241624
export const y = 2;
16251625
output.push("after export y");
16261626
`,
1627-
{ target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.System },
1627+
{ target: ts.ScriptTarget.ES2018, module: ts.ModuleKind.System, ignoreDeprecations: "6.0" },
16281628
);
16291629

16301630
assert.strictEqual(x, 1);

0 commit comments

Comments
 (0)