typescript 5.2.0-dev.20230724 → 5.2.0-dev.20230726

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/tsc.js CHANGED
@@ -18,7 +18,7 @@ and limitations under the License.
18
18
 
19
19
  // src/compiler/corePublic.ts
20
20
  var versionMajorMinor = "5.2";
21
- var version = `${versionMajorMinor}.0-dev.20230724`;
21
+ var version = `${versionMajorMinor}.0-dev.20230726`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -5764,6 +5764,7 @@ var Diagnostics = {
5764
5764
  Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: diag(1062, 1 /* Error */, "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062", "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."),
5765
5765
  An_export_assignment_cannot_be_used_in_a_namespace: diag(1063, 1 /* Error */, "An_export_assignment_cannot_be_used_in_a_namespace_1063", "An export assignment cannot be used in a namespace."),
5766
5766
  The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0: diag(1064, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064", "The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<{0}>'?"),
5767
+ The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type: diag(1065, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1065", "The return type of an async function or method must be the global Promise<T> type."),
5767
5768
  In_ambient_enum_declarations_member_initializer_must_be_constant_expression: diag(1066, 1 /* Error */, "In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066", "In ambient enum declarations member initializer must be constant expression."),
5768
5769
  Unexpected_token_A_constructor_method_accessor_or_property_was_expected: diag(1068, 1 /* Error */, "Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068", "Unexpected token. A constructor, method, accessor, or property was expected."),
5769
5770
  Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces: diag(1069, 1 /* Error */, "Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069", "Unexpected token. A type parameter name was expected without curly braces."),
@@ -39242,6 +39243,9 @@ function getModuleInstanceStateForAliasTarget(specifier, visited) {
39242
39243
  if (found === 1 /* Instantiated */) {
39243
39244
  return found;
39244
39245
  }
39246
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
39247
+ found = 1 /* Instantiated */;
39248
+ }
39245
39249
  }
39246
39250
  }
39247
39251
  if (found !== void 0) {
@@ -46187,7 +46191,7 @@ function createTypeChecker(host) {
46187
46191
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
46188
46192
  }
46189
46193
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
46190
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
46194
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
46191
46195
  if (startsWith(moduleReference, "@types/")) {
46192
46196
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
46193
46197
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -46222,8 +46226,11 @@ function createTypeChecker(host) {
46222
46226
  );
46223
46227
  }
46224
46228
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
46225
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
46226
- error(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
46229
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
46230
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
46231
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
46232
+ error(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
46233
+ }
46227
46234
  }
46228
46235
  if (sourceFile.symbol) {
46229
46236
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -46240,7 +46247,7 @@ function createTypeChecker(host) {
46240
46247
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
46241
46248
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
46242
46249
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
46243
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
46250
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
46244
46251
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
46245
46252
  if (findAncestor(location, isImportEqualsDeclaration)) {
46246
46253
  error(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -46343,7 +46350,7 @@ function createTypeChecker(host) {
46343
46350
  error(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
46344
46351
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
46345
46352
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
46346
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
46353
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
46347
46354
  if (suggestedExt) {
46348
46355
  error(
46349
46356
  errorNode,
@@ -47779,11 +47786,13 @@ function createTypeChecker(host) {
47779
47786
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
47780
47787
  }
47781
47788
  function createMappedTypeNodeFromType(type2) {
47789
+ var _a2;
47782
47790
  Debug.assert(!!(type2.flags & 524288 /* Object */));
47783
47791
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
47784
47792
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
47785
47793
  let appropriateConstraintTypeNode;
47786
47794
  let newTypeVariable;
47795
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
47787
47796
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
47788
47797
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
47789
47798
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -47791,6 +47800,11 @@ function createTypeChecker(host) {
47791
47800
  newTypeVariable = factory.createTypeReferenceNode(name);
47792
47801
  }
47793
47802
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
47803
+ } else if (needsModifierPreservingWrapper) {
47804
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
47805
+ const name = typeParameterToName(newParam, context);
47806
+ newTypeVariable = factory.createTypeReferenceNode(name);
47807
+ appropriateConstraintTypeNode = newTypeVariable;
47794
47808
  } else {
47795
47809
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
47796
47810
  }
@@ -47821,6 +47835,18 @@ function createTypeChecker(host) {
47821
47835
  result,
47822
47836
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
47823
47837
  );
47838
+ } else if (needsModifierPreservingWrapper) {
47839
+ return factory.createConditionalTypeNode(
47840
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
47841
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
47842
+ /*modifiers*/
47843
+ void 0,
47844
+ factory.cloneNode(newTypeVariable.typeName),
47845
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
47846
+ )),
47847
+ result,
47848
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
47849
+ );
47824
47850
  }
47825
47851
  return result;
47826
47852
  }
@@ -74961,7 +74987,18 @@ function createTypeChecker(host) {
74961
74987
  addLazyDiagnostic(checkSignatureDeclarationDiagnostics);
74962
74988
  function checkSignatureDeclarationDiagnostics() {
74963
74989
  checkCollisionWithArgumentsInGeneratedCode(node);
74964
- const returnTypeNode = getEffectiveReturnTypeNode(node);
74990
+ let returnTypeNode = getEffectiveReturnTypeNode(node);
74991
+ let returnTypeErrorLocation = returnTypeNode;
74992
+ if (isInJSFile(node)) {
74993
+ const typeTag = getJSDocTypeTag(node);
74994
+ if (typeTag && typeTag.typeExpression && isTypeReferenceNode(typeTag.typeExpression.type)) {
74995
+ const signature = getSingleCallSignature(getTypeFromTypeNode(typeTag.typeExpression));
74996
+ if (signature && signature.declaration) {
74997
+ returnTypeNode = getEffectiveReturnTypeNode(signature.declaration);
74998
+ returnTypeErrorLocation = typeTag.typeExpression.type;
74999
+ }
75000
+ }
75001
+ }
74965
75002
  if (noImplicitAny && !returnTypeNode) {
74966
75003
  switch (node.kind) {
74967
75004
  case 180 /* ConstructSignature */:
@@ -74972,21 +75009,21 @@ function createTypeChecker(host) {
74972
75009
  break;
74973
75010
  }
74974
75011
  }
74975
- if (returnTypeNode) {
75012
+ if (returnTypeNode && returnTypeErrorLocation) {
74976
75013
  const functionFlags2 = getFunctionFlags(node);
74977
75014
  if ((functionFlags2 & (4 /* Invalid */ | 1 /* Generator */)) === 1 /* Generator */) {
74978
75015
  const returnType = getTypeFromTypeNode(returnTypeNode);
74979
75016
  if (returnType === voidType) {
74980
- error(returnTypeNode, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
75017
+ error(returnTypeErrorLocation, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
74981
75018
  } else {
74982
75019
  const generatorYieldType = getIterationTypeOfGeneratorFunctionReturnType(0 /* Yield */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || anyType;
74983
75020
  const generatorReturnType = getIterationTypeOfGeneratorFunctionReturnType(1 /* Return */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || generatorYieldType;
74984
75021
  const generatorNextType = getIterationTypeOfGeneratorFunctionReturnType(2 /* Next */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || unknownType;
74985
75022
  const generatorInstantiation = createGeneratorReturnType(generatorYieldType, generatorReturnType, generatorNextType, !!(functionFlags2 & 2 /* Async */));
74986
- checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeNode);
75023
+ checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeErrorLocation);
74987
75024
  }
74988
75025
  } else if ((functionFlags2 & 3 /* AsyncGenerator */) === 2 /* Async */) {
74989
- checkAsyncFunctionReturnType(node, returnTypeNode);
75026
+ checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation);
74990
75027
  }
74991
75028
  }
74992
75029
  if (node.kind !== 181 /* IndexSignature */ && node.kind !== 324 /* JSDocFunctionType */) {
@@ -76068,7 +76105,7 @@ function createTypeChecker(host) {
76068
76105
  }
76069
76106
  return typeAsAwaitable.awaitedTypeOfType = type;
76070
76107
  }
76071
- function checkAsyncFunctionReturnType(node, returnTypeNode) {
76108
+ function checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation) {
76072
76109
  const returnType = getTypeFromTypeNode(returnTypeNode);
76073
76110
  if (languageVersion >= 2 /* ES2015 */) {
76074
76111
  if (isErrorType(returnType)) {
@@ -76079,7 +76116,7 @@ function createTypeChecker(host) {
76079
76116
  true
76080
76117
  );
76081
76118
  if (globalPromiseType !== emptyGenericType && !isReferenceToType(returnType, globalPromiseType)) {
76082
- error(returnTypeNode, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
76119
+ reportErrorForInvalidReturnType(Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, returnTypeNode, returnTypeErrorLocation, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
76083
76120
  return;
76084
76121
  }
76085
76122
  } else {
@@ -76089,7 +76126,7 @@ function createTypeChecker(host) {
76089
76126
  }
76090
76127
  const promiseConstructorName = getEntityNameFromTypeNode(returnTypeNode);
76091
76128
  if (promiseConstructorName === void 0) {
76092
- error(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, typeToString(returnType));
76129
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, typeToString(returnType));
76093
76130
  return;
76094
76131
  }
76095
76132
  const promiseConstructorSymbol = resolveEntityName(
@@ -76104,9 +76141,9 @@ function createTypeChecker(host) {
76104
76141
  /*reportErrors*/
76105
76142
  false
76106
76143
  )) {
76107
- error(returnTypeNode, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
76144
+ error(returnTypeErrorLocation, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
76108
76145
  } else {
76109
- error(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
76146
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
76110
76147
  }
76111
76148
  return;
76112
76149
  }
@@ -76115,15 +76152,16 @@ function createTypeChecker(host) {
76115
76152
  true
76116
76153
  );
76117
76154
  if (globalPromiseConstructorLikeType === emptyObjectType) {
76118
- error(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
76155
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
76119
76156
  return;
76120
76157
  }
76121
- if (!checkTypeAssignableTo(
76122
- promiseConstructorType,
76123
- globalPromiseConstructorLikeType,
76124
- returnTypeNode,
76125
- Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value
76126
- )) {
76158
+ const headMessage = Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value;
76159
+ const errorInfo = () => returnTypeNode === returnTypeErrorLocation ? void 0 : chainDiagnosticMessages(
76160
+ /*details*/
76161
+ void 0,
76162
+ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type
76163
+ );
76164
+ if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, returnTypeErrorLocation, headMessage, errorInfo)) {
76127
76165
  return;
76128
76166
  }
76129
76167
  const rootName = promiseConstructorName && getFirstIdentifier(promiseConstructorName);
@@ -76145,6 +76183,14 @@ function createTypeChecker(host) {
76145
76183
  node,
76146
76184
  Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member
76147
76185
  );
76186
+ function reportErrorForInvalidReturnType(message, returnTypeNode2, returnTypeErrorLocation2, typeName) {
76187
+ if (returnTypeNode2 === returnTypeErrorLocation2) {
76188
+ error(returnTypeErrorLocation2, message, typeName);
76189
+ } else {
76190
+ const diag2 = error(returnTypeErrorLocation2, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type);
76191
+ addRelatedInfo(diag2, createDiagnosticForNode(returnTypeNode2, message, typeName));
76192
+ }
76193
+ }
76148
76194
  }
76149
76195
  function checkDecorator(node) {
76150
76196
  const signature = getResolvedSignature(node);
@@ -122048,7 +122094,6 @@ function createWatchProgram(host) {
122048
122094
  if (hasChangedCompilerOptions) {
122049
122095
  newLine = updateNewLine();
122050
122096
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
122051
- debugger;
122052
122097
  resolutionCache.onChangesAffectModuleResolution();
122053
122098
  }
122054
122099
  }
package/lib/tsserver.js CHANGED
@@ -2329,7 +2329,7 @@ module.exports = __toCommonJS(server_exports);
2329
2329
 
2330
2330
  // src/compiler/corePublic.ts
2331
2331
  var versionMajorMinor = "5.2";
2332
- var version = `${versionMajorMinor}.0-dev.20230724`;
2332
+ var version = `${versionMajorMinor}.0-dev.20230726`;
2333
2333
  var Comparison = /* @__PURE__ */ ((Comparison3) => {
2334
2334
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
2335
2335
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -9287,6 +9287,7 @@ var Diagnostics = {
9287
9287
  Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: diag(1062, 1 /* Error */, "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062", "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."),
9288
9288
  An_export_assignment_cannot_be_used_in_a_namespace: diag(1063, 1 /* Error */, "An_export_assignment_cannot_be_used_in_a_namespace_1063", "An export assignment cannot be used in a namespace."),
9289
9289
  The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0: diag(1064, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064", "The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<{0}>'?"),
9290
+ The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type: diag(1065, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1065", "The return type of an async function or method must be the global Promise<T> type."),
9290
9291
  In_ambient_enum_declarations_member_initializer_must_be_constant_expression: diag(1066, 1 /* Error */, "In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066", "In ambient enum declarations member initializer must be constant expression."),
9291
9292
  Unexpected_token_A_constructor_method_accessor_or_property_was_expected: diag(1068, 1 /* Error */, "Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068", "Unexpected token. A constructor, method, accessor, or property was expected."),
9292
9293
  Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces: diag(1069, 1 /* Error */, "Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069", "Unexpected token. A type parameter name was expected without curly braces."),
@@ -43891,6 +43892,9 @@ function getModuleInstanceStateForAliasTarget(specifier, visited) {
43891
43892
  if (found === 1 /* Instantiated */) {
43892
43893
  return found;
43893
43894
  }
43895
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
43896
+ found = 1 /* Instantiated */;
43897
+ }
43894
43898
  }
43895
43899
  }
43896
43900
  if (found !== void 0) {
@@ -50896,7 +50900,7 @@ function createTypeChecker(host) {
50896
50900
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
50897
50901
  }
50898
50902
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
50899
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
50903
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
50900
50904
  if (startsWith(moduleReference, "@types/")) {
50901
50905
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
50902
50906
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -50931,8 +50935,11 @@ function createTypeChecker(host) {
50931
50935
  );
50932
50936
  }
50933
50937
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
50934
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
50935
- error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
50938
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
50939
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
50940
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
50941
+ error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
50942
+ }
50936
50943
  }
50937
50944
  if (sourceFile.symbol) {
50938
50945
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -50949,7 +50956,7 @@ function createTypeChecker(host) {
50949
50956
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
50950
50957
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
50951
50958
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
50952
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
50959
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
50953
50960
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
50954
50961
  if (findAncestor(location, isImportEqualsDeclaration)) {
50955
50962
  error2(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -51052,7 +51059,7 @@ function createTypeChecker(host) {
51052
51059
  error2(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
51053
51060
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
51054
51061
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
51055
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
51062
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
51056
51063
  if (suggestedExt) {
51057
51064
  error2(
51058
51065
  errorNode,
@@ -52488,11 +52495,13 @@ function createTypeChecker(host) {
52488
52495
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
52489
52496
  }
52490
52497
  function createMappedTypeNodeFromType(type2) {
52498
+ var _a2;
52491
52499
  Debug.assert(!!(type2.flags & 524288 /* Object */));
52492
52500
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
52493
52501
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
52494
52502
  let appropriateConstraintTypeNode;
52495
52503
  let newTypeVariable;
52504
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
52496
52505
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
52497
52506
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
52498
52507
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -52500,6 +52509,11 @@ function createTypeChecker(host) {
52500
52509
  newTypeVariable = factory.createTypeReferenceNode(name);
52501
52510
  }
52502
52511
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
52512
+ } else if (needsModifierPreservingWrapper) {
52513
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
52514
+ const name = typeParameterToName(newParam, context);
52515
+ newTypeVariable = factory.createTypeReferenceNode(name);
52516
+ appropriateConstraintTypeNode = newTypeVariable;
52503
52517
  } else {
52504
52518
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
52505
52519
  }
@@ -52530,6 +52544,18 @@ function createTypeChecker(host) {
52530
52544
  result,
52531
52545
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
52532
52546
  );
52547
+ } else if (needsModifierPreservingWrapper) {
52548
+ return factory.createConditionalTypeNode(
52549
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
52550
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
52551
+ /*modifiers*/
52552
+ void 0,
52553
+ factory.cloneNode(newTypeVariable.typeName),
52554
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
52555
+ )),
52556
+ result,
52557
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
52558
+ );
52533
52559
  }
52534
52560
  return result;
52535
52561
  }
@@ -79670,7 +79696,18 @@ function createTypeChecker(host) {
79670
79696
  addLazyDiagnostic(checkSignatureDeclarationDiagnostics);
79671
79697
  function checkSignatureDeclarationDiagnostics() {
79672
79698
  checkCollisionWithArgumentsInGeneratedCode(node);
79673
- const returnTypeNode = getEffectiveReturnTypeNode(node);
79699
+ let returnTypeNode = getEffectiveReturnTypeNode(node);
79700
+ let returnTypeErrorLocation = returnTypeNode;
79701
+ if (isInJSFile(node)) {
79702
+ const typeTag = getJSDocTypeTag(node);
79703
+ if (typeTag && typeTag.typeExpression && isTypeReferenceNode(typeTag.typeExpression.type)) {
79704
+ const signature = getSingleCallSignature(getTypeFromTypeNode(typeTag.typeExpression));
79705
+ if (signature && signature.declaration) {
79706
+ returnTypeNode = getEffectiveReturnTypeNode(signature.declaration);
79707
+ returnTypeErrorLocation = typeTag.typeExpression.type;
79708
+ }
79709
+ }
79710
+ }
79674
79711
  if (noImplicitAny && !returnTypeNode) {
79675
79712
  switch (node.kind) {
79676
79713
  case 180 /* ConstructSignature */:
@@ -79681,21 +79718,21 @@ function createTypeChecker(host) {
79681
79718
  break;
79682
79719
  }
79683
79720
  }
79684
- if (returnTypeNode) {
79721
+ if (returnTypeNode && returnTypeErrorLocation) {
79685
79722
  const functionFlags2 = getFunctionFlags(node);
79686
79723
  if ((functionFlags2 & (4 /* Invalid */ | 1 /* Generator */)) === 1 /* Generator */) {
79687
79724
  const returnType = getTypeFromTypeNode(returnTypeNode);
79688
79725
  if (returnType === voidType) {
79689
- error2(returnTypeNode, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
79726
+ error2(returnTypeErrorLocation, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
79690
79727
  } else {
79691
79728
  const generatorYieldType = getIterationTypeOfGeneratorFunctionReturnType(0 /* Yield */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || anyType;
79692
79729
  const generatorReturnType = getIterationTypeOfGeneratorFunctionReturnType(1 /* Return */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || generatorYieldType;
79693
79730
  const generatorNextType = getIterationTypeOfGeneratorFunctionReturnType(2 /* Next */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || unknownType;
79694
79731
  const generatorInstantiation = createGeneratorReturnType(generatorYieldType, generatorReturnType, generatorNextType, !!(functionFlags2 & 2 /* Async */));
79695
- checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeNode);
79732
+ checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeErrorLocation);
79696
79733
  }
79697
79734
  } else if ((functionFlags2 & 3 /* AsyncGenerator */) === 2 /* Async */) {
79698
- checkAsyncFunctionReturnType(node, returnTypeNode);
79735
+ checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation);
79699
79736
  }
79700
79737
  }
79701
79738
  if (node.kind !== 181 /* IndexSignature */ && node.kind !== 324 /* JSDocFunctionType */) {
@@ -80777,7 +80814,7 @@ function createTypeChecker(host) {
80777
80814
  }
80778
80815
  return typeAsAwaitable.awaitedTypeOfType = type;
80779
80816
  }
80780
- function checkAsyncFunctionReturnType(node, returnTypeNode) {
80817
+ function checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation) {
80781
80818
  const returnType = getTypeFromTypeNode(returnTypeNode);
80782
80819
  if (languageVersion >= 2 /* ES2015 */) {
80783
80820
  if (isErrorType(returnType)) {
@@ -80788,7 +80825,7 @@ function createTypeChecker(host) {
80788
80825
  true
80789
80826
  );
80790
80827
  if (globalPromiseType !== emptyGenericType && !isReferenceToType2(returnType, globalPromiseType)) {
80791
- error2(returnTypeNode, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
80828
+ reportErrorForInvalidReturnType(Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, returnTypeNode, returnTypeErrorLocation, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
80792
80829
  return;
80793
80830
  }
80794
80831
  } else {
@@ -80798,7 +80835,7 @@ function createTypeChecker(host) {
80798
80835
  }
80799
80836
  const promiseConstructorName = getEntityNameFromTypeNode(returnTypeNode);
80800
80837
  if (promiseConstructorName === void 0) {
80801
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, typeToString(returnType));
80838
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, typeToString(returnType));
80802
80839
  return;
80803
80840
  }
80804
80841
  const promiseConstructorSymbol = resolveEntityName(
@@ -80813,9 +80850,9 @@ function createTypeChecker(host) {
80813
80850
  /*reportErrors*/
80814
80851
  false
80815
80852
  )) {
80816
- error2(returnTypeNode, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
80853
+ error2(returnTypeErrorLocation, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
80817
80854
  } else {
80818
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
80855
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
80819
80856
  }
80820
80857
  return;
80821
80858
  }
@@ -80824,15 +80861,16 @@ function createTypeChecker(host) {
80824
80861
  true
80825
80862
  );
80826
80863
  if (globalPromiseConstructorLikeType === emptyObjectType) {
80827
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
80864
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
80828
80865
  return;
80829
80866
  }
80830
- if (!checkTypeAssignableTo(
80831
- promiseConstructorType,
80832
- globalPromiseConstructorLikeType,
80833
- returnTypeNode,
80834
- Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value
80835
- )) {
80867
+ const headMessage = Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value;
80868
+ const errorInfo = () => returnTypeNode === returnTypeErrorLocation ? void 0 : chainDiagnosticMessages(
80869
+ /*details*/
80870
+ void 0,
80871
+ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type
80872
+ );
80873
+ if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, returnTypeErrorLocation, headMessage, errorInfo)) {
80836
80874
  return;
80837
80875
  }
80838
80876
  const rootName = promiseConstructorName && getFirstIdentifier(promiseConstructorName);
@@ -80854,6 +80892,14 @@ function createTypeChecker(host) {
80854
80892
  node,
80855
80893
  Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member
80856
80894
  );
80895
+ function reportErrorForInvalidReturnType(message, returnTypeNode2, returnTypeErrorLocation2, typeName) {
80896
+ if (returnTypeNode2 === returnTypeErrorLocation2) {
80897
+ error2(returnTypeErrorLocation2, message, typeName);
80898
+ } else {
80899
+ const diag2 = error2(returnTypeErrorLocation2, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type);
80900
+ addRelatedInfo(diag2, createDiagnosticForNode(returnTypeNode2, message, typeName));
80901
+ }
80902
+ }
80857
80903
  }
80858
80904
  function checkDecorator(node) {
80859
80905
  const signature = getResolvedSignature(node);
@@ -127053,7 +127099,6 @@ function createWatchProgram(host) {
127053
127099
  if (hasChangedCompilerOptions) {
127054
127100
  newLine = updateNewLine();
127055
127101
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
127056
- debugger;
127057
127102
  resolutionCache.onChangesAffectModuleResolution();
127058
127103
  }
127059
127104
  }
@@ -150891,6 +150936,14 @@ function promoteFromTypeOnly(changes, aliasDeclaration, compilerOptions, sourceF
150891
150936
  }
150892
150937
  function promoteImportClause(importClause) {
150893
150938
  changes.delete(sourceFile, getTypeKeywordOfTypeOnlyImport(importClause, sourceFile));
150939
+ if (!compilerOptions.allowImportingTsExtensions) {
150940
+ const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importClause.parent);
150941
+ const resolvedModule = moduleSpecifier && getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
150942
+ if (resolvedModule == null ? void 0 : resolvedModule.resolvedUsingTsExtension) {
150943
+ const changedExtension = changeAnyExtension(moduleSpecifier.text, getOutputExtension(moduleSpecifier.text, compilerOptions));
150944
+ changes.replaceNode(sourceFile, moduleSpecifier, factory.createStringLiteral(changedExtension));
150945
+ }
150946
+ }
150894
150947
  if (convertExistingToTypeOnly) {
150895
150948
  const namedImports = tryCast(importClause.namedBindings, isNamedImports);
150896
150949
  if (namedImports && namedImports.elements.length > 1) {
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.2";
38
- version = `${versionMajorMinor}.0-dev.20230724`;
38
+ version = `${versionMajorMinor}.0-dev.20230726`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -7068,6 +7068,7 @@ ${lanes.join("\n")}
7068
7068
  Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: diag(1062, 1 /* Error */, "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062", "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."),
7069
7069
  An_export_assignment_cannot_be_used_in_a_namespace: diag(1063, 1 /* Error */, "An_export_assignment_cannot_be_used_in_a_namespace_1063", "An export assignment cannot be used in a namespace."),
7070
7070
  The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0: diag(1064, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064", "The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<{0}>'?"),
7071
+ The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type: diag(1065, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1065", "The return type of an async function or method must be the global Promise<T> type."),
7071
7072
  In_ambient_enum_declarations_member_initializer_must_be_constant_expression: diag(1066, 1 /* Error */, "In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066", "In ambient enum declarations member initializer must be constant expression."),
7072
7073
  Unexpected_token_A_constructor_method_accessor_or_property_was_expected: diag(1068, 1 /* Error */, "Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068", "Unexpected token. A constructor, method, accessor, or property was expected."),
7073
7074
  Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces: diag(1069, 1 /* Error */, "Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069", "Unexpected token. A type parameter name was expected without curly braces."),
@@ -41750,6 +41751,9 @@ ${lanes.join("\n")}
41750
41751
  if (found === 1 /* Instantiated */) {
41751
41752
  return found;
41752
41753
  }
41754
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
41755
+ found = 1 /* Instantiated */;
41756
+ }
41753
41757
  }
41754
41758
  }
41755
41759
  if (found !== void 0) {
@@ -48661,7 +48665,7 @@ ${lanes.join("\n")}
48661
48665
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
48662
48666
  }
48663
48667
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
48664
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
48668
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
48665
48669
  if (startsWith(moduleReference, "@types/")) {
48666
48670
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
48667
48671
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -48696,8 +48700,11 @@ ${lanes.join("\n")}
48696
48700
  );
48697
48701
  }
48698
48702
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
48699
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48700
- error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48703
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
48704
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
48705
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48706
+ error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48707
+ }
48701
48708
  }
48702
48709
  if (sourceFile.symbol) {
48703
48710
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -48714,7 +48721,7 @@ ${lanes.join("\n")}
48714
48721
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
48715
48722
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
48716
48723
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
48717
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48724
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48718
48725
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
48719
48726
  if (findAncestor(location, isImportEqualsDeclaration)) {
48720
48727
  error2(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -48817,7 +48824,7 @@ ${lanes.join("\n")}
48817
48824
  error2(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
48818
48825
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
48819
48826
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
48820
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
48827
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
48821
48828
  if (suggestedExt) {
48822
48829
  error2(
48823
48830
  errorNode,
@@ -50253,11 +50260,13 @@ ${lanes.join("\n")}
50253
50260
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
50254
50261
  }
50255
50262
  function createMappedTypeNodeFromType(type2) {
50263
+ var _a2;
50256
50264
  Debug.assert(!!(type2.flags & 524288 /* Object */));
50257
50265
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
50258
50266
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
50259
50267
  let appropriateConstraintTypeNode;
50260
50268
  let newTypeVariable;
50269
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
50261
50270
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
50262
50271
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
50263
50272
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -50265,6 +50274,11 @@ ${lanes.join("\n")}
50265
50274
  newTypeVariable = factory.createTypeReferenceNode(name);
50266
50275
  }
50267
50276
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
50277
+ } else if (needsModifierPreservingWrapper) {
50278
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
50279
+ const name = typeParameterToName(newParam, context);
50280
+ newTypeVariable = factory.createTypeReferenceNode(name);
50281
+ appropriateConstraintTypeNode = newTypeVariable;
50268
50282
  } else {
50269
50283
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
50270
50284
  }
@@ -50295,6 +50309,18 @@ ${lanes.join("\n")}
50295
50309
  result,
50296
50310
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
50297
50311
  );
50312
+ } else if (needsModifierPreservingWrapper) {
50313
+ return factory.createConditionalTypeNode(
50314
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
50315
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
50316
+ /*modifiers*/
50317
+ void 0,
50318
+ factory.cloneNode(newTypeVariable.typeName),
50319
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
50320
+ )),
50321
+ result,
50322
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
50323
+ );
50298
50324
  }
50299
50325
  return result;
50300
50326
  }
@@ -77435,7 +77461,18 @@ ${lanes.join("\n")}
77435
77461
  addLazyDiagnostic(checkSignatureDeclarationDiagnostics);
77436
77462
  function checkSignatureDeclarationDiagnostics() {
77437
77463
  checkCollisionWithArgumentsInGeneratedCode(node);
77438
- const returnTypeNode = getEffectiveReturnTypeNode(node);
77464
+ let returnTypeNode = getEffectiveReturnTypeNode(node);
77465
+ let returnTypeErrorLocation = returnTypeNode;
77466
+ if (isInJSFile(node)) {
77467
+ const typeTag = getJSDocTypeTag(node);
77468
+ if (typeTag && typeTag.typeExpression && isTypeReferenceNode(typeTag.typeExpression.type)) {
77469
+ const signature = getSingleCallSignature(getTypeFromTypeNode(typeTag.typeExpression));
77470
+ if (signature && signature.declaration) {
77471
+ returnTypeNode = getEffectiveReturnTypeNode(signature.declaration);
77472
+ returnTypeErrorLocation = typeTag.typeExpression.type;
77473
+ }
77474
+ }
77475
+ }
77439
77476
  if (noImplicitAny && !returnTypeNode) {
77440
77477
  switch (node.kind) {
77441
77478
  case 180 /* ConstructSignature */:
@@ -77446,21 +77483,21 @@ ${lanes.join("\n")}
77446
77483
  break;
77447
77484
  }
77448
77485
  }
77449
- if (returnTypeNode) {
77486
+ if (returnTypeNode && returnTypeErrorLocation) {
77450
77487
  const functionFlags2 = getFunctionFlags(node);
77451
77488
  if ((functionFlags2 & (4 /* Invalid */ | 1 /* Generator */)) === 1 /* Generator */) {
77452
77489
  const returnType = getTypeFromTypeNode(returnTypeNode);
77453
77490
  if (returnType === voidType) {
77454
- error2(returnTypeNode, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
77491
+ error2(returnTypeErrorLocation, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
77455
77492
  } else {
77456
77493
  const generatorYieldType = getIterationTypeOfGeneratorFunctionReturnType(0 /* Yield */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || anyType;
77457
77494
  const generatorReturnType = getIterationTypeOfGeneratorFunctionReturnType(1 /* Return */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || generatorYieldType;
77458
77495
  const generatorNextType = getIterationTypeOfGeneratorFunctionReturnType(2 /* Next */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || unknownType;
77459
77496
  const generatorInstantiation = createGeneratorReturnType(generatorYieldType, generatorReturnType, generatorNextType, !!(functionFlags2 & 2 /* Async */));
77460
- checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeNode);
77497
+ checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeErrorLocation);
77461
77498
  }
77462
77499
  } else if ((functionFlags2 & 3 /* AsyncGenerator */) === 2 /* Async */) {
77463
- checkAsyncFunctionReturnType(node, returnTypeNode);
77500
+ checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation);
77464
77501
  }
77465
77502
  }
77466
77503
  if (node.kind !== 181 /* IndexSignature */ && node.kind !== 324 /* JSDocFunctionType */) {
@@ -78542,7 +78579,7 @@ ${lanes.join("\n")}
78542
78579
  }
78543
78580
  return typeAsAwaitable.awaitedTypeOfType = type;
78544
78581
  }
78545
- function checkAsyncFunctionReturnType(node, returnTypeNode) {
78582
+ function checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation) {
78546
78583
  const returnType = getTypeFromTypeNode(returnTypeNode);
78547
78584
  if (languageVersion >= 2 /* ES2015 */) {
78548
78585
  if (isErrorType(returnType)) {
@@ -78553,7 +78590,7 @@ ${lanes.join("\n")}
78553
78590
  true
78554
78591
  );
78555
78592
  if (globalPromiseType !== emptyGenericType && !isReferenceToType2(returnType, globalPromiseType)) {
78556
- error2(returnTypeNode, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
78593
+ reportErrorForInvalidReturnType(Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, returnTypeNode, returnTypeErrorLocation, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
78557
78594
  return;
78558
78595
  }
78559
78596
  } else {
@@ -78563,7 +78600,7 @@ ${lanes.join("\n")}
78563
78600
  }
78564
78601
  const promiseConstructorName = getEntityNameFromTypeNode(returnTypeNode);
78565
78602
  if (promiseConstructorName === void 0) {
78566
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, typeToString(returnType));
78603
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, typeToString(returnType));
78567
78604
  return;
78568
78605
  }
78569
78606
  const promiseConstructorSymbol = resolveEntityName(
@@ -78578,9 +78615,9 @@ ${lanes.join("\n")}
78578
78615
  /*reportErrors*/
78579
78616
  false
78580
78617
  )) {
78581
- error2(returnTypeNode, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
78618
+ error2(returnTypeErrorLocation, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
78582
78619
  } else {
78583
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
78620
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
78584
78621
  }
78585
78622
  return;
78586
78623
  }
@@ -78589,15 +78626,16 @@ ${lanes.join("\n")}
78589
78626
  true
78590
78627
  );
78591
78628
  if (globalPromiseConstructorLikeType === emptyObjectType) {
78592
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
78629
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
78593
78630
  return;
78594
78631
  }
78595
- if (!checkTypeAssignableTo(
78596
- promiseConstructorType,
78597
- globalPromiseConstructorLikeType,
78598
- returnTypeNode,
78599
- Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value
78600
- )) {
78632
+ const headMessage = Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value;
78633
+ const errorInfo = () => returnTypeNode === returnTypeErrorLocation ? void 0 : chainDiagnosticMessages(
78634
+ /*details*/
78635
+ void 0,
78636
+ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type
78637
+ );
78638
+ if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, returnTypeErrorLocation, headMessage, errorInfo)) {
78601
78639
  return;
78602
78640
  }
78603
78641
  const rootName = promiseConstructorName && getFirstIdentifier(promiseConstructorName);
@@ -78619,6 +78657,14 @@ ${lanes.join("\n")}
78619
78657
  node,
78620
78658
  Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member
78621
78659
  );
78660
+ function reportErrorForInvalidReturnType(message, returnTypeNode2, returnTypeErrorLocation2, typeName) {
78661
+ if (returnTypeNode2 === returnTypeErrorLocation2) {
78662
+ error2(returnTypeErrorLocation2, message, typeName);
78663
+ } else {
78664
+ const diag2 = error2(returnTypeErrorLocation2, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type);
78665
+ addRelatedInfo(diag2, createDiagnosticForNode(returnTypeNode2, message, typeName));
78666
+ }
78667
+ }
78622
78668
  }
78623
78669
  function checkDecorator(node) {
78624
78670
  const signature = getResolvedSignature(node);
@@ -125208,7 +125254,6 @@ ${lanes.join("\n")}
125208
125254
  if (hasChangedCompilerOptions) {
125209
125255
  newLine = updateNewLine();
125210
125256
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
125211
- debugger;
125212
125257
  resolutionCache.onChangesAffectModuleResolution();
125213
125258
  }
125214
125259
  }
@@ -149619,6 +149664,14 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
149619
149664
  }
149620
149665
  function promoteImportClause(importClause) {
149621
149666
  changes.delete(sourceFile, getTypeKeywordOfTypeOnlyImport(importClause, sourceFile));
149667
+ if (!compilerOptions.allowImportingTsExtensions) {
149668
+ const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importClause.parent);
149669
+ const resolvedModule = moduleSpecifier && getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
149670
+ if (resolvedModule == null ? void 0 : resolvedModule.resolvedUsingTsExtension) {
149671
+ const changedExtension = changeAnyExtension(moduleSpecifier.text, getOutputExtension(moduleSpecifier.text, compilerOptions));
149672
+ changes.replaceNode(sourceFile, moduleSpecifier, factory.createStringLiteral(changedExtension));
149673
+ }
149674
+ }
149622
149675
  if (convertExistingToTypeOnly) {
149623
149676
  const namedImports = tryCast(importClause.namedBindings, isNamedImports);
149624
149677
  if (namedImports && namedImports.elements.length > 1) {
package/lib/typescript.js CHANGED
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.2";
38
- version = `${versionMajorMinor}.0-dev.20230724`;
38
+ version = `${versionMajorMinor}.0-dev.20230726`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -7068,6 +7068,7 @@ ${lanes.join("\n")}
7068
7068
  Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: diag(1062, 1 /* Error */, "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062", "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."),
7069
7069
  An_export_assignment_cannot_be_used_in_a_namespace: diag(1063, 1 /* Error */, "An_export_assignment_cannot_be_used_in_a_namespace_1063", "An export assignment cannot be used in a namespace."),
7070
7070
  The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0: diag(1064, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064", "The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<{0}>'?"),
7071
+ The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type: diag(1065, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1065", "The return type of an async function or method must be the global Promise<T> type."),
7071
7072
  In_ambient_enum_declarations_member_initializer_must_be_constant_expression: diag(1066, 1 /* Error */, "In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066", "In ambient enum declarations member initializer must be constant expression."),
7072
7073
  Unexpected_token_A_constructor_method_accessor_or_property_was_expected: diag(1068, 1 /* Error */, "Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068", "Unexpected token. A constructor, method, accessor, or property was expected."),
7073
7074
  Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces: diag(1069, 1 /* Error */, "Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069", "Unexpected token. A type parameter name was expected without curly braces."),
@@ -41750,6 +41751,9 @@ ${lanes.join("\n")}
41750
41751
  if (found === 1 /* Instantiated */) {
41751
41752
  return found;
41752
41753
  }
41754
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
41755
+ found = 1 /* Instantiated */;
41756
+ }
41753
41757
  }
41754
41758
  }
41755
41759
  if (found !== void 0) {
@@ -48661,7 +48665,7 @@ ${lanes.join("\n")}
48661
48665
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
48662
48666
  }
48663
48667
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
48664
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
48668
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
48665
48669
  if (startsWith(moduleReference, "@types/")) {
48666
48670
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
48667
48671
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -48696,8 +48700,11 @@ ${lanes.join("\n")}
48696
48700
  );
48697
48701
  }
48698
48702
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
48699
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48700
- error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48703
+ const importOrExport = ((_h = findAncestor(location, isImportDeclaration)) == null ? void 0 : _h.importClause) || findAncestor(location, or(isImportEqualsDeclaration, isExportDeclaration));
48704
+ if (!((importOrExport == null ? void 0 : importOrExport.isTypeOnly) || findAncestor(location, isImportTypeNode))) {
48705
+ const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
48706
+ error2(errorNode, Diagnostics.An_import_path_can_only_end_with_a_0_extension_when_allowImportingTsExtensions_is_enabled, tsExtension);
48707
+ }
48701
48708
  }
48702
48709
  if (sourceFile.symbol) {
48703
48710
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -48714,7 +48721,7 @@ ${lanes.join("\n")}
48714
48721
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
48715
48722
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
48716
48723
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
48717
- const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_h = overrideClauseHost.assertions) == null ? void 0 : _h.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48724
+ const overrideClause = overrideClauseHost && isImportTypeNode(overrideClauseHost) ? (_i = overrideClauseHost.assertions) == null ? void 0 : _i.assertClause : overrideClauseHost == null ? void 0 : overrideClauseHost.assertClause;
48718
48725
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
48719
48726
  if (findAncestor(location, isImportEqualsDeclaration)) {
48720
48727
  error2(errorNode, Diagnostics.Module_0_cannot_be_imported_using_this_construct_The_specifier_only_resolves_to_an_ES_module_which_cannot_be_imported_with_require_Use_an_ECMAScript_import_instead, moduleReference);
@@ -48817,7 +48824,7 @@ ${lanes.join("\n")}
48817
48824
  error2(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
48818
48825
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
48819
48826
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
48820
- const suggestedExt = (_i = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _i[1];
48827
+ const suggestedExt = (_j = suggestedExtensions.find(([actualExt, _importExt]) => host.fileExists(absoluteRef + actualExt))) == null ? void 0 : _j[1];
48821
48828
  if (suggestedExt) {
48822
48829
  error2(
48823
48830
  errorNode,
@@ -50253,11 +50260,13 @@ ${lanes.join("\n")}
50253
50260
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
50254
50261
  }
50255
50262
  function createMappedTypeNodeFromType(type2) {
50263
+ var _a2;
50256
50264
  Debug.assert(!!(type2.flags & 524288 /* Object */));
50257
50265
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
50258
50266
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
50259
50267
  let appropriateConstraintTypeNode;
50260
50268
  let newTypeVariable;
50269
+ const needsModifierPreservingWrapper = !isMappedTypeWithKeyofConstraintDeclaration(type2) && !(getModifiersTypeFromMappedType(type2).flags & 2 /* Unknown */) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */ && !(getConstraintTypeFromMappedType(type2).flags & 262144 /* TypeParameter */ && ((_a2 = getConstraintOfTypeParameter(getConstraintTypeFromMappedType(type2))) == null ? void 0 : _a2.flags) & 4194304 /* Index */);
50261
50270
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
50262
50271
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
50263
50272
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -50265,6 +50274,11 @@ ${lanes.join("\n")}
50265
50274
  newTypeVariable = factory.createTypeReferenceNode(name);
50266
50275
  }
50267
50276
  appropriateConstraintTypeNode = factory.createTypeOperatorNode(143 /* KeyOfKeyword */, newTypeVariable || typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context));
50277
+ } else if (needsModifierPreservingWrapper) {
50278
+ const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
50279
+ const name = typeParameterToName(newParam, context);
50280
+ newTypeVariable = factory.createTypeReferenceNode(name);
50281
+ appropriateConstraintTypeNode = newTypeVariable;
50268
50282
  } else {
50269
50283
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
50270
50284
  }
@@ -50295,6 +50309,18 @@ ${lanes.join("\n")}
50295
50309
  result,
50296
50310
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
50297
50311
  );
50312
+ } else if (needsModifierPreservingWrapper) {
50313
+ return factory.createConditionalTypeNode(
50314
+ typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context),
50315
+ factory.createInferTypeNode(factory.createTypeParameterDeclaration(
50316
+ /*modifiers*/
50317
+ void 0,
50318
+ factory.cloneNode(newTypeVariable.typeName),
50319
+ factory.createTypeOperatorNode(143 /* KeyOfKeyword */, typeToTypeNodeHelper(getModifiersTypeFromMappedType(type2), context))
50320
+ )),
50321
+ result,
50322
+ factory.createKeywordTypeNode(146 /* NeverKeyword */)
50323
+ );
50298
50324
  }
50299
50325
  return result;
50300
50326
  }
@@ -77435,7 +77461,18 @@ ${lanes.join("\n")}
77435
77461
  addLazyDiagnostic(checkSignatureDeclarationDiagnostics);
77436
77462
  function checkSignatureDeclarationDiagnostics() {
77437
77463
  checkCollisionWithArgumentsInGeneratedCode(node);
77438
- const returnTypeNode = getEffectiveReturnTypeNode(node);
77464
+ let returnTypeNode = getEffectiveReturnTypeNode(node);
77465
+ let returnTypeErrorLocation = returnTypeNode;
77466
+ if (isInJSFile(node)) {
77467
+ const typeTag = getJSDocTypeTag(node);
77468
+ if (typeTag && typeTag.typeExpression && isTypeReferenceNode(typeTag.typeExpression.type)) {
77469
+ const signature = getSingleCallSignature(getTypeFromTypeNode(typeTag.typeExpression));
77470
+ if (signature && signature.declaration) {
77471
+ returnTypeNode = getEffectiveReturnTypeNode(signature.declaration);
77472
+ returnTypeErrorLocation = typeTag.typeExpression.type;
77473
+ }
77474
+ }
77475
+ }
77439
77476
  if (noImplicitAny && !returnTypeNode) {
77440
77477
  switch (node.kind) {
77441
77478
  case 180 /* ConstructSignature */:
@@ -77446,21 +77483,21 @@ ${lanes.join("\n")}
77446
77483
  break;
77447
77484
  }
77448
77485
  }
77449
- if (returnTypeNode) {
77486
+ if (returnTypeNode && returnTypeErrorLocation) {
77450
77487
  const functionFlags2 = getFunctionFlags(node);
77451
77488
  if ((functionFlags2 & (4 /* Invalid */ | 1 /* Generator */)) === 1 /* Generator */) {
77452
77489
  const returnType = getTypeFromTypeNode(returnTypeNode);
77453
77490
  if (returnType === voidType) {
77454
- error2(returnTypeNode, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
77491
+ error2(returnTypeErrorLocation, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
77455
77492
  } else {
77456
77493
  const generatorYieldType = getIterationTypeOfGeneratorFunctionReturnType(0 /* Yield */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || anyType;
77457
77494
  const generatorReturnType = getIterationTypeOfGeneratorFunctionReturnType(1 /* Return */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || generatorYieldType;
77458
77495
  const generatorNextType = getIterationTypeOfGeneratorFunctionReturnType(2 /* Next */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || unknownType;
77459
77496
  const generatorInstantiation = createGeneratorReturnType(generatorYieldType, generatorReturnType, generatorNextType, !!(functionFlags2 & 2 /* Async */));
77460
- checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeNode);
77497
+ checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeErrorLocation);
77461
77498
  }
77462
77499
  } else if ((functionFlags2 & 3 /* AsyncGenerator */) === 2 /* Async */) {
77463
- checkAsyncFunctionReturnType(node, returnTypeNode);
77500
+ checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation);
77464
77501
  }
77465
77502
  }
77466
77503
  if (node.kind !== 181 /* IndexSignature */ && node.kind !== 324 /* JSDocFunctionType */) {
@@ -78542,7 +78579,7 @@ ${lanes.join("\n")}
78542
78579
  }
78543
78580
  return typeAsAwaitable.awaitedTypeOfType = type;
78544
78581
  }
78545
- function checkAsyncFunctionReturnType(node, returnTypeNode) {
78582
+ function checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation) {
78546
78583
  const returnType = getTypeFromTypeNode(returnTypeNode);
78547
78584
  if (languageVersion >= 2 /* ES2015 */) {
78548
78585
  if (isErrorType(returnType)) {
@@ -78553,7 +78590,7 @@ ${lanes.join("\n")}
78553
78590
  true
78554
78591
  );
78555
78592
  if (globalPromiseType !== emptyGenericType && !isReferenceToType2(returnType, globalPromiseType)) {
78556
- error2(returnTypeNode, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
78593
+ reportErrorForInvalidReturnType(Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, returnTypeNode, returnTypeErrorLocation, typeToString(getAwaitedTypeNoAlias(returnType) || voidType));
78557
78594
  return;
78558
78595
  }
78559
78596
  } else {
@@ -78563,7 +78600,7 @@ ${lanes.join("\n")}
78563
78600
  }
78564
78601
  const promiseConstructorName = getEntityNameFromTypeNode(returnTypeNode);
78565
78602
  if (promiseConstructorName === void 0) {
78566
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, typeToString(returnType));
78603
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, typeToString(returnType));
78567
78604
  return;
78568
78605
  }
78569
78606
  const promiseConstructorSymbol = resolveEntityName(
@@ -78578,9 +78615,9 @@ ${lanes.join("\n")}
78578
78615
  /*reportErrors*/
78579
78616
  false
78580
78617
  )) {
78581
- error2(returnTypeNode, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
78618
+ error2(returnTypeErrorLocation, Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option);
78582
78619
  } else {
78583
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
78620
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
78584
78621
  }
78585
78622
  return;
78586
78623
  }
@@ -78589,15 +78626,16 @@ ${lanes.join("\n")}
78589
78626
  true
78590
78627
  );
78591
78628
  if (globalPromiseConstructorLikeType === emptyObjectType) {
78592
- error2(returnTypeNode, Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, entityNameToString(promiseConstructorName));
78629
+ reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName));
78593
78630
  return;
78594
78631
  }
78595
- if (!checkTypeAssignableTo(
78596
- promiseConstructorType,
78597
- globalPromiseConstructorLikeType,
78598
- returnTypeNode,
78599
- Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value
78600
- )) {
78632
+ const headMessage = Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value;
78633
+ const errorInfo = () => returnTypeNode === returnTypeErrorLocation ? void 0 : chainDiagnosticMessages(
78634
+ /*details*/
78635
+ void 0,
78636
+ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type
78637
+ );
78638
+ if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, returnTypeErrorLocation, headMessage, errorInfo)) {
78601
78639
  return;
78602
78640
  }
78603
78641
  const rootName = promiseConstructorName && getFirstIdentifier(promiseConstructorName);
@@ -78619,6 +78657,14 @@ ${lanes.join("\n")}
78619
78657
  node,
78620
78658
  Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member
78621
78659
  );
78660
+ function reportErrorForInvalidReturnType(message, returnTypeNode2, returnTypeErrorLocation2, typeName) {
78661
+ if (returnTypeNode2 === returnTypeErrorLocation2) {
78662
+ error2(returnTypeErrorLocation2, message, typeName);
78663
+ } else {
78664
+ const diag2 = error2(returnTypeErrorLocation2, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type);
78665
+ addRelatedInfo(diag2, createDiagnosticForNode(returnTypeNode2, message, typeName));
78666
+ }
78667
+ }
78622
78668
  }
78623
78669
  function checkDecorator(node) {
78624
78670
  const signature = getResolvedSignature(node);
@@ -125208,7 +125254,6 @@ ${lanes.join("\n")}
125208
125254
  if (hasChangedCompilerOptions) {
125209
125255
  newLine = updateNewLine();
125210
125256
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
125211
- debugger;
125212
125257
  resolutionCache.onChangesAffectModuleResolution();
125213
125258
  }
125214
125259
  }
@@ -149634,6 +149679,14 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
149634
149679
  }
149635
149680
  function promoteImportClause(importClause) {
149636
149681
  changes.delete(sourceFile, getTypeKeywordOfTypeOnlyImport(importClause, sourceFile));
149682
+ if (!compilerOptions.allowImportingTsExtensions) {
149683
+ const moduleSpecifier = tryGetModuleSpecifierFromDeclaration(importClause.parent);
149684
+ const resolvedModule = moduleSpecifier && getResolvedModule(sourceFile, moduleSpecifier.text, getModeForUsageLocation(sourceFile, moduleSpecifier));
149685
+ if (resolvedModule == null ? void 0 : resolvedModule.resolvedUsingTsExtension) {
149686
+ const changedExtension = changeAnyExtension(moduleSpecifier.text, getOutputExtension(moduleSpecifier.text, compilerOptions));
149687
+ changes.replaceNode(sourceFile, moduleSpecifier, factory.createStringLiteral(changedExtension));
149688
+ }
149689
+ }
149637
149690
  if (convertExistingToTypeOnly) {
149638
149691
  const namedImports = tryCast(importClause.namedBindings, isNamedImports);
149639
149692
  if (namedImports && namedImports.elements.length > 1) {
@@ -54,7 +54,7 @@ var path = __toESM(require("path"));
54
54
 
55
55
  // src/compiler/corePublic.ts
56
56
  var versionMajorMinor = "5.2";
57
- var version = `${versionMajorMinor}.0-dev.20230724`;
57
+ var version = `${versionMajorMinor}.0-dev.20230726`;
58
58
 
59
59
  // src/compiler/core.ts
60
60
  var emptyArray = [];
@@ -5138,6 +5138,7 @@ var Diagnostics = {
5138
5138
  Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method: diag(1062, 1 /* Error */, "Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062", "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."),
5139
5139
  An_export_assignment_cannot_be_used_in_a_namespace: diag(1063, 1 /* Error */, "An_export_assignment_cannot_be_used_in_a_namespace_1063", "An export assignment cannot be used in a namespace."),
5140
5140
  The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0: diag(1064, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_wri_1064", "The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<{0}>'?"),
5141
+ The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type: diag(1065, 1 /* Error */, "The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1065", "The return type of an async function or method must be the global Promise<T> type."),
5141
5142
  In_ambient_enum_declarations_member_initializer_must_be_constant_expression: diag(1066, 1 /* Error */, "In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066", "In ambient enum declarations member initializer must be constant expression."),
5142
5143
  Unexpected_token_A_constructor_method_accessor_or_property_was_expected: diag(1068, 1 /* Error */, "Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068", "Unexpected token. A constructor, method, accessor, or property was expected."),
5143
5144
  Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces: diag(1069, 1 /* Error */, "Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069", "Unexpected token. A type parameter name was expected without curly braces."),
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "typescript",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.2.0-dev.20230724",
5
+ "version": "5.2.0-dev.20230726",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -113,5 +113,5 @@
113
113
  "node": "20.1.0",
114
114
  "npm": "8.19.4"
115
115
  },
116
- "gitHead": "01b18215eccec4e3b32743ab545bf8c6b570d782"
116
+ "gitHead": "04bfd23105086276349ba6f934f04e01cab2b5a7"
117
117
  }