@typescript-deploys/pr-build 5.2.0-pr-55028-5 → 5.2.0-pr-54753-25

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-insiders.20230720`;
21
+ var version = `${versionMajorMinor}.0-insiders.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."),
@@ -17404,6 +17405,18 @@ function getTextOfJsxNamespacedName(node) {
17404
17405
  function intrinsicTagNameToString(node) {
17405
17406
  return isIdentifier(node) ? idText(node) : getTextOfJsxNamespacedName(node);
17406
17407
  }
17408
+ function isTypeUsableAsPropertyName(type) {
17409
+ return !!(type.flags & 8576 /* StringOrNumberLiteralOrUnique */);
17410
+ }
17411
+ function getPropertyNameFromType(type) {
17412
+ if (type.flags & 8192 /* UniqueESSymbol */) {
17413
+ return type.escapedName;
17414
+ }
17415
+ if (type.flags & (128 /* StringLiteral */ | 256 /* NumberLiteral */)) {
17416
+ return escapeLeadingUnderscores("" + type.value);
17417
+ }
17418
+ return Debug.fail();
17419
+ }
17407
17420
 
17408
17421
  // src/compiler/factory/baseNodeFactory.ts
17409
17422
  function createBaseNodeFactory() {
@@ -30711,10 +30724,14 @@ var Parser;
30711
30724
  case 124 /* ProtectedKeyword */:
30712
30725
  case 125 /* PublicKeyword */:
30713
30726
  case 148 /* ReadonlyKeyword */:
30727
+ const previousToken = token();
30714
30728
  nextToken();
30715
30729
  if (scanner.hasPrecedingLineBreak()) {
30716
30730
  return false;
30717
30731
  }
30732
+ if (previousToken === 138 /* DeclareKeyword */ && token() === 156 /* TypeKeyword */) {
30733
+ return true;
30734
+ }
30718
30735
  continue;
30719
30736
  case 162 /* GlobalKeyword */:
30720
30737
  nextToken();
@@ -31079,14 +31096,14 @@ var Parser;
31079
31096
  function parseObjectBindingPattern() {
31080
31097
  const pos = getNodePos();
31081
31098
  parseExpected(19 /* OpenBraceToken */);
31082
- const elements = parseDelimitedList(9 /* ObjectBindingElements */, parseObjectBindingElement);
31099
+ const elements = allowInAnd(() => parseDelimitedList(9 /* ObjectBindingElements */, parseObjectBindingElement));
31083
31100
  parseExpected(20 /* CloseBraceToken */);
31084
31101
  return finishNode(factory2.createObjectBindingPattern(elements), pos);
31085
31102
  }
31086
31103
  function parseArrayBindingPattern() {
31087
31104
  const pos = getNodePos();
31088
31105
  parseExpected(23 /* OpenBracketToken */);
31089
- const elements = parseDelimitedList(10 /* ArrayBindingElements */, parseArrayBindingElement);
31106
+ const elements = allowInAnd(() => parseDelimitedList(10 /* ArrayBindingElements */, parseArrayBindingElement));
31090
31107
  parseExpected(24 /* CloseBracketToken */);
31091
31108
  return finishNode(factory2.createArrayBindingPattern(elements), pos);
31092
31109
  }
@@ -31604,6 +31621,9 @@ var Parser;
31604
31621
  }
31605
31622
  function parseTypeAliasDeclaration(pos, hasJSDoc, modifiers) {
31606
31623
  parseExpected(156 /* TypeKeyword */);
31624
+ if (scanner.hasPrecedingLineBreak()) {
31625
+ parseErrorAtCurrentToken(Diagnostics.Line_break_not_permitted_here);
31626
+ }
31607
31627
  const name = parseIdentifier();
31608
31628
  const typeParameters = parseTypeParameters();
31609
31629
  parseExpected(64 /* EqualsToken */);
@@ -33505,7 +33525,7 @@ function getNamedArgRegEx(name) {
33505
33525
  return result;
33506
33526
  }
33507
33527
  var tripleSlashXMLCommentStartRegEx = /^\/\/\/\s*<(\S+)\s.*?\/>/im;
33508
- var singleLinePragmaRegEx = /^\/\/\/?\s*@(\S+)\s*(.*)\s*$/im;
33528
+ var singleLinePragmaRegEx = /^\/\/\/?\s*@([^\s:]+)(.*)\s*$/im;
33509
33529
  function extractPragmas(pragmas, range, text) {
33510
33530
  const tripleSlash = range.kind === 2 /* SingleLineCommentTrivia */ && tripleSlashXMLCommentStartRegEx.exec(text);
33511
33531
  if (tripleSlash) {
@@ -39223,6 +39243,9 @@ function getModuleInstanceStateForAliasTarget(specifier, visited) {
39223
39243
  if (found === 1 /* Instantiated */) {
39224
39244
  return found;
39225
39245
  }
39246
+ if (statement.kind === 271 /* ImportEqualsDeclaration */) {
39247
+ found = 1 /* Instantiated */;
39248
+ }
39226
39249
  }
39227
39250
  }
39228
39251
  if (found !== void 0) {
@@ -43111,7 +43134,7 @@ function createTypeChecker(host) {
43111
43134
  return node ? getTypeFromTypeNode(node) : errorType;
43112
43135
  },
43113
43136
  getParameterType: getTypeAtPosition,
43114
- getParameterIdentifierNameAtPosition,
43137
+ getParameterIdentifierInfoAtPosition,
43115
43138
  getPromisedTypeOfPromise,
43116
43139
  getAwaitedType: (type) => getAwaitedType(type),
43117
43140
  getReturnTypeOfSignature,
@@ -44375,7 +44398,7 @@ function createTypeChecker(host) {
44375
44398
  false
44376
44399
  );
44377
44400
  } else if (isParameterPropertyDeclaration(declaration, declaration.parent)) {
44378
- return !(useDefineForClassFields && getContainingClass(declaration) === getContainingClass(usage) && isUsedInFunctionOrInstanceProperty(usage, declaration));
44401
+ return !(getEmitScriptTarget(compilerOptions) === 99 /* ESNext */ && useDefineForClassFields && getContainingClass(declaration) === getContainingClass(usage) && isUsedInFunctionOrInstanceProperty(usage, declaration));
44379
44402
  }
44380
44403
  return true;
44381
44404
  }
@@ -44389,7 +44412,7 @@ function createTypeChecker(host) {
44389
44412
  return true;
44390
44413
  }
44391
44414
  if (isUsedInFunctionOrInstanceProperty(usage, declaration)) {
44392
- if (useDefineForClassFields && getContainingClass(declaration) && (isPropertyDeclaration(declaration) || isParameterPropertyDeclaration(declaration, declaration.parent))) {
44415
+ if (getEmitScriptTarget(compilerOptions) >= 9 /* ES2022 */ && useDefineForClassFields && getContainingClass(declaration) && (isPropertyDeclaration(declaration) || isParameterPropertyDeclaration(declaration, declaration.parent))) {
44393
44416
  return !isPropertyImmediatelyReferencedWithinDeclaration(
44394
44417
  declaration,
44395
44418
  usage,
@@ -44513,7 +44536,7 @@ function createTypeChecker(host) {
44513
44536
  return requiresScopeChangeWorker(node.name);
44514
44537
  case 172 /* PropertyDeclaration */:
44515
44538
  if (hasStaticModifier(node)) {
44516
- return !useDefineForClassFields;
44539
+ return target < 99 /* ESNext */ || !useDefineForClassFields;
44517
44540
  }
44518
44541
  return requiresScopeChangeWorker(node.name);
44519
44542
  default:
@@ -44784,7 +44807,7 @@ function createTypeChecker(host) {
44784
44807
  }
44785
44808
  }
44786
44809
  function checkAndReportErrorForInvalidInitializer() {
44787
- if (propertyWithInvalidInitializer && !useDefineForClassFields) {
44810
+ if (propertyWithInvalidInitializer && !(useDefineForClassFields && getEmitScriptTarget(compilerOptions) >= 9 /* ES2022 */)) {
44788
44811
  error(
44789
44812
  errorLocation,
44790
44813
  errorLocation && propertyWithInvalidInitializer.type && textRangeContainsPositionInclusive(propertyWithInvalidInitializer.type, errorLocation.pos) ? Diagnostics.Type_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor : Diagnostics.Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor,
@@ -46168,7 +46191,7 @@ function createTypeChecker(host) {
46168
46191
  return isStringLiteralLike(moduleReferenceExpression) ? resolveExternalModule(location, moduleReferenceExpression.text, moduleNotFoundError, moduleReferenceExpression, isForAugmentation) : void 0;
46169
46192
  }
46170
46193
  function resolveExternalModule(location, moduleReference, moduleNotFoundError, errorNode, isForAugmentation = false) {
46171
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
46194
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
46172
46195
  if (startsWith(moduleReference, "@types/")) {
46173
46196
  const diag2 = Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1;
46174
46197
  const withoutAtTypePrefix = removePrefix(moduleReference, "@types/");
@@ -46203,8 +46226,11 @@ function createTypeChecker(host) {
46203
46226
  );
46204
46227
  }
46205
46228
  } else if (resolvedModule.resolvedUsingTsExtension && !shouldAllowImportingTsExtension(compilerOptions, currentSourceFile.fileName)) {
46206
- const tsExtension = Debug.checkDefined(tryExtractTSExtension(moduleReference));
46207
- 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
+ }
46208
46234
  }
46209
46235
  if (sourceFile.symbol) {
46210
46236
  if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) {
@@ -46221,7 +46247,7 @@ function createTypeChecker(host) {
46221
46247
  if (moduleResolutionKind === 3 /* Node16 */ || moduleResolutionKind === 99 /* NodeNext */) {
46222
46248
  const isSyncImport = currentSourceFile.impliedNodeFormat === 1 /* CommonJS */ && !findAncestor(location, isImportCall) || !!findAncestor(location, isImportEqualsDeclaration);
46223
46249
  const overrideClauseHost = findAncestor(location, (l) => isImportTypeNode(l) || isExportDeclaration(l) || isImportDeclaration(l));
46224
- 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;
46225
46251
  if (isSyncImport && sourceFile.impliedNodeFormat === 99 /* ESNext */ && !getResolutionModeOverrideForClause(overrideClause)) {
46226
46252
  if (findAncestor(location, isImportEqualsDeclaration)) {
46227
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);
@@ -46324,7 +46350,7 @@ function createTypeChecker(host) {
46324
46350
  error(errorNode, Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension, moduleReference);
46325
46351
  } else if (mode === 99 /* ESNext */ && resolutionIsNode16OrNext && isExtensionlessRelativePathImport) {
46326
46352
  const absoluteRef = getNormalizedAbsolutePath(moduleReference, getDirectoryPath(currentSourceFile.path));
46327
- 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];
46328
46354
  if (suggestedExt) {
46329
46355
  error(
46330
46356
  errorNode,
@@ -47760,11 +47786,13 @@ function createTypeChecker(host) {
47760
47786
  return !!type2.target && isMappedTypeHomomorphic(type2.target) && !isMappedTypeHomomorphic(type2);
47761
47787
  }
47762
47788
  function createMappedTypeNodeFromType(type2) {
47789
+ var _a2;
47763
47790
  Debug.assert(!!(type2.flags & 524288 /* Object */));
47764
47791
  const readonlyToken = type2.declaration.readonlyToken ? factory.createToken(type2.declaration.readonlyToken.kind) : void 0;
47765
47792
  const questionToken = type2.declaration.questionToken ? factory.createToken(type2.declaration.questionToken.kind) : void 0;
47766
47793
  let appropriateConstraintTypeNode;
47767
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 */);
47768
47796
  if (isMappedTypeWithKeyofConstraintDeclaration(type2)) {
47769
47797
  if (isHomomorphicMappedTypeWithNonHomomorphicInstantiation(type2) && context.flags & 4 /* GenerateNamesForShadowedTypeParams */) {
47770
47798
  const newParam = createTypeParameter(createSymbol(262144 /* TypeParameter */, "T"));
@@ -47772,6 +47800,11 @@ function createTypeChecker(host) {
47772
47800
  newTypeVariable = factory.createTypeReferenceNode(name);
47773
47801
  }
47774
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;
47775
47808
  } else {
47776
47809
  appropriateConstraintTypeNode = typeToTypeNodeHelper(getConstraintTypeFromMappedType(type2), context);
47777
47810
  }
@@ -47802,6 +47835,18 @@ function createTypeChecker(host) {
47802
47835
  result,
47803
47836
  factory.createKeywordTypeNode(146 /* NeverKeyword */)
47804
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
+ );
47805
47850
  }
47806
47851
  return result;
47807
47852
  }
@@ -52853,9 +52898,6 @@ function createTypeChecker(host) {
52853
52898
  }
52854
52899
  return type;
52855
52900
  }
52856
- function isTypeUsableAsPropertyName(type) {
52857
- return !!(type.flags & 8576 /* StringOrNumberLiteralOrUnique */);
52858
- }
52859
52901
  function isLateBindableName(node) {
52860
52902
  if (!isComputedPropertyName(node) && !isElementAccessExpression(node)) {
52861
52903
  return false;
@@ -52876,15 +52918,6 @@ function createTypeChecker(host) {
52876
52918
  function isNonBindableDynamicName(node) {
52877
52919
  return isDynamicName(node) && !isLateBindableName(node);
52878
52920
  }
52879
- function getPropertyNameFromType(type) {
52880
- if (type.flags & 8192 /* UniqueESSymbol */) {
52881
- return type.escapedName;
52882
- }
52883
- if (type.flags & (128 /* StringLiteral */ | 256 /* NumberLiteral */)) {
52884
- return escapeLeadingUnderscores("" + type.value);
52885
- }
52886
- return Debug.fail();
52887
- }
52888
52921
  function addDeclarationToLateBoundSymbol(symbol, member, symbolFlags) {
52889
52922
  Debug.assert(!!(getCheckFlags(symbol) & 4096 /* Late */), "Expected a late-bound symbol.");
52890
52923
  symbol.flags |= symbolFlags;
@@ -53531,20 +53564,17 @@ function createTypeChecker(host) {
53531
53564
  setStructuredTypeMembers(type, members2, callSignatures, constructSignatures, indexInfos2);
53532
53565
  return;
53533
53566
  }
53534
- let members = emptySymbols;
53567
+ let members = getExportsOfSymbol(symbol);
53535
53568
  let indexInfos;
53536
- if (symbol.exports) {
53537
- members = getExportsOfSymbol(symbol);
53538
- if (symbol === globalThisSymbol) {
53539
- const varsOnly = /* @__PURE__ */ new Map();
53540
- members.forEach((p) => {
53541
- var _a;
53542
- if (!(p.flags & 418 /* BlockScoped */) && !(p.flags & 512 /* ValueModule */ && ((_a = p.declarations) == null ? void 0 : _a.length) && every(p.declarations, isAmbientModule))) {
53543
- varsOnly.set(p.escapedName, p);
53544
- }
53545
- });
53546
- members = varsOnly;
53547
- }
53569
+ if (symbol === globalThisSymbol) {
53570
+ const varsOnly = /* @__PURE__ */ new Map();
53571
+ members.forEach((p) => {
53572
+ var _a;
53573
+ if (!(p.flags & 418 /* BlockScoped */) && !(p.flags & 512 /* ValueModule */ && ((_a = p.declarations) == null ? void 0 : _a.length) && every(p.declarations, isAmbientModule))) {
53574
+ varsOnly.set(p.escapedName, p);
53575
+ }
53576
+ });
53577
+ members = varsOnly;
53548
53578
  }
53549
53579
  let baseConstructorIndexInfo;
53550
53580
  setStructuredTypeMembers(type, members, emptyArray, emptyArray, emptyArray);
@@ -53884,7 +53914,12 @@ function createTypeChecker(host) {
53884
53914
  for (const current of type.types) {
53885
53915
  for (const prop of getPropertiesOfType(current)) {
53886
53916
  if (!members.has(prop.escapedName)) {
53887
- const combinedProp = getPropertyOfUnionOrIntersectionType(type, prop.escapedName);
53917
+ const combinedProp = getPropertyOfUnionOrIntersectionType(
53918
+ type,
53919
+ prop.escapedName,
53920
+ /*skipObjectFunctionPropertyAugment*/
53921
+ !!(type.flags & 2097152 /* Intersection */)
53922
+ );
53888
53923
  if (combinedProp) {
53889
53924
  members.set(prop.escapedName, combinedProp);
53890
53925
  }
@@ -54364,13 +54399,17 @@ function createTypeChecker(host) {
54364
54399
  return result;
54365
54400
  }
54366
54401
  function getUnionOrIntersectionProperty(type, name, skipObjectFunctionPropertyAugment) {
54367
- var _a, _b;
54402
+ var _a, _b, _c;
54368
54403
  let property = ((_a = type.propertyCacheWithoutObjectFunctionPropertyAugment) == null ? void 0 : _a.get(name)) || !skipObjectFunctionPropertyAugment ? (_b = type.propertyCache) == null ? void 0 : _b.get(name) : void 0;
54369
54404
  if (!property) {
54370
54405
  property = createUnionOrIntersectionProperty(type, name, skipObjectFunctionPropertyAugment);
54371
54406
  if (property) {
54372
54407
  const properties = skipObjectFunctionPropertyAugment ? type.propertyCacheWithoutObjectFunctionPropertyAugment || (type.propertyCacheWithoutObjectFunctionPropertyAugment = createSymbolTable()) : type.propertyCache || (type.propertyCache = createSymbolTable());
54373
54408
  properties.set(name, property);
54409
+ if (skipObjectFunctionPropertyAugment && !((_c = type.propertyCache) == null ? void 0 : _c.get(name))) {
54410
+ const properties2 = type.propertyCache || (type.propertyCache = createSymbolTable());
54411
+ properties2.set(name, property);
54412
+ }
54374
54413
  }
54375
54414
  }
54376
54415
  return property;
@@ -54490,7 +54529,22 @@ function createTypeChecker(host) {
54490
54529
  }
54491
54530
  return getPropertyOfObjectType(globalObjectType, name);
54492
54531
  }
54493
- if (type.flags & 3145728 /* UnionOrIntersection */) {
54532
+ if (type.flags & 2097152 /* Intersection */) {
54533
+ const prop = getPropertyOfUnionOrIntersectionType(
54534
+ type,
54535
+ name,
54536
+ /*skipObjectFunctionPropertyAugment*/
54537
+ true
54538
+ );
54539
+ if (prop) {
54540
+ return prop;
54541
+ }
54542
+ if (!skipObjectFunctionPropertyAugment) {
54543
+ return getPropertyOfUnionOrIntersectionType(type, name, skipObjectFunctionPropertyAugment);
54544
+ }
54545
+ return void 0;
54546
+ }
54547
+ if (type.flags & 1048576 /* Union */) {
54494
54548
  return getPropertyOfUnionOrIntersectionType(type, name, skipObjectFunctionPropertyAugment);
54495
54549
  }
54496
54550
  return void 0;
@@ -61129,26 +61183,6 @@ function createTypeChecker(host) {
61129
61183
  )) {
61130
61184
  return result2;
61131
61185
  }
61132
- if (sourceFlags & 8388608 /* IndexedAccess */) {
61133
- const indexType = source2.indexType;
61134
- if (indexType.flags & 4194304 /* Index */) {
61135
- const unresolvedIndexConstraint = getBaseConstraintOfType(indexType.type);
61136
- const indexConstraint = unresolvedIndexConstraint && unresolvedIndexConstraint !== noConstraintType ? getIndexType(unresolvedIndexConstraint) : keyofConstraintType;
61137
- const constraint2 = getIndexedAccessType(source2.objectType, indexConstraint);
61138
- if (result2 = isRelatedTo(
61139
- constraint2,
61140
- target2,
61141
- 1 /* Source */,
61142
- /*reportErrors*/
61143
- false,
61144
- /*headMessage*/
61145
- void 0,
61146
- intersectionState
61147
- )) {
61148
- return result2;
61149
- }
61150
- }
61151
- }
61152
61186
  if (isMappedTypeGenericIndexedAccess(source2)) {
61153
61187
  const indexConstraint = getConstraintOfType(source2.indexType);
61154
61188
  if (indexConstraint) {
@@ -69362,7 +69396,7 @@ function createTypeChecker(host) {
69362
69396
  }
69363
69397
  let diagnosticMessage;
69364
69398
  const declarationName = idText(right);
69365
- if (isInPropertyInitializerOrClassStaticBlock(node) && !isOptionalPropertyDeclaration(valueDeclaration) && !(isAccessExpression(node) && isAccessExpression(node.expression)) && !isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right) && !(isMethodDeclaration(valueDeclaration) && getCombinedModifierFlagsCached(valueDeclaration) & 32 /* Static */) && (useDefineForClassFields || !isPropertyDeclaredInAncestorClass(prop))) {
69399
+ if (isInPropertyInitializerOrClassStaticBlock(node) && !isOptionalPropertyDeclaration(valueDeclaration) && !(isAccessExpression(node) && isAccessExpression(node.expression)) && !isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right) && !(isMethodDeclaration(valueDeclaration) && getCombinedModifierFlagsCached(valueDeclaration) & 32 /* Static */) && (compilerOptions.useDefineForClassFields || !isPropertyDeclaredInAncestorClass(prop))) {
69366
69400
  diagnosticMessage = error(right, Diagnostics.Property_0_is_used_before_its_initialization, declarationName);
69367
69401
  } else if (valueDeclaration.kind === 263 /* ClassDeclaration */ && node.parent.kind !== 183 /* TypeReference */ && !(valueDeclaration.flags & 33554432 /* Ambient */) && !isBlockScopedNameDeclaredBeforeUse(valueDeclaration, right)) {
69368
69402
  diagnosticMessage = error(right, Diagnostics.Class_0_used_before_its_declaration, declarationName);
@@ -72056,7 +72090,7 @@ function createTypeChecker(host) {
72056
72090
  }
72057
72091
  return restParameter.escapedName;
72058
72092
  }
72059
- function getParameterIdentifierNameAtPosition(signature, pos) {
72093
+ function getParameterIdentifierInfoAtPosition(signature, pos) {
72060
72094
  var _a;
72061
72095
  if (((_a = signature.declaration) == null ? void 0 : _a.kind) === 324 /* JSDocFunctionType */) {
72062
72096
  return void 0;
@@ -72064,10 +72098,16 @@ function createTypeChecker(host) {
72064
72098
  const paramCount = signature.parameters.length - (signatureHasRestParameter(signature) ? 1 : 0);
72065
72099
  if (pos < paramCount) {
72066
72100
  const param = signature.parameters[pos];
72067
- return isParameterDeclarationWithIdentifierName(param) ? [param.escapedName, false] : void 0;
72101
+ const paramIdent = getParameterDeclarationIdentifier(param);
72102
+ return paramIdent ? {
72103
+ parameter: paramIdent,
72104
+ parameterName: param.escapedName,
72105
+ isRestParameter: false
72106
+ } : void 0;
72068
72107
  }
72069
72108
  const restParameter = signature.parameters[paramCount] || unknownSymbol;
72070
- if (!isParameterDeclarationWithIdentifierName(restParameter)) {
72109
+ const restIdent = getParameterDeclarationIdentifier(restParameter);
72110
+ if (!restIdent) {
72071
72111
  return void 0;
72072
72112
  }
72073
72113
  const restType = getTypeOfSymbol(restParameter);
@@ -72076,18 +72116,19 @@ function createTypeChecker(host) {
72076
72116
  const index = pos - paramCount;
72077
72117
  const associatedName = associatedNames == null ? void 0 : associatedNames[index];
72078
72118
  const isRestTupleElement = !!(associatedName == null ? void 0 : associatedName.dotDotDotToken);
72079
- return associatedName ? [
72080
- getTupleElementLabel(associatedName),
72081
- isRestTupleElement
72082
- ] : void 0;
72119
+ if (associatedName) {
72120
+ Debug.assert(isIdentifier(associatedName.name));
72121
+ return { parameter: associatedName.name, parameterName: associatedName.name.escapedText, isRestParameter: isRestTupleElement };
72122
+ }
72123
+ return void 0;
72083
72124
  }
72084
72125
  if (pos === paramCount) {
72085
- return [restParameter.escapedName, true];
72126
+ return { parameter: restIdent, parameterName: restParameter.escapedName, isRestParameter: true };
72086
72127
  }
72087
72128
  return void 0;
72088
72129
  }
72089
- function isParameterDeclarationWithIdentifierName(symbol) {
72090
- return symbol.valueDeclaration && isParameter(symbol.valueDeclaration) && isIdentifier(symbol.valueDeclaration.name);
72130
+ function getParameterDeclarationIdentifier(symbol) {
72131
+ return symbol.valueDeclaration && isParameter(symbol.valueDeclaration) && isIdentifier(symbol.valueDeclaration.name) && symbol.valueDeclaration.name;
72091
72132
  }
72092
72133
  function isValidDeclarationForTupleLabel(d) {
72093
72134
  return d.kind === 202 /* NamedTupleMember */ || isParameter(d) && d.name && isIdentifier(d.name);
@@ -74950,7 +74991,18 @@ function createTypeChecker(host) {
74950
74991
  addLazyDiagnostic(checkSignatureDeclarationDiagnostics);
74951
74992
  function checkSignatureDeclarationDiagnostics() {
74952
74993
  checkCollisionWithArgumentsInGeneratedCode(node);
74953
- const returnTypeNode = getEffectiveReturnTypeNode(node);
74994
+ let returnTypeNode = getEffectiveReturnTypeNode(node);
74995
+ let returnTypeErrorLocation = returnTypeNode;
74996
+ if (isInJSFile(node)) {
74997
+ const typeTag = getJSDocTypeTag(node);
74998
+ if (typeTag && typeTag.typeExpression && isTypeReferenceNode(typeTag.typeExpression.type)) {
74999
+ const signature = getSingleCallSignature(getTypeFromTypeNode(typeTag.typeExpression));
75000
+ if (signature && signature.declaration) {
75001
+ returnTypeNode = getEffectiveReturnTypeNode(signature.declaration);
75002
+ returnTypeErrorLocation = typeTag.typeExpression.type;
75003
+ }
75004
+ }
75005
+ }
74954
75006
  if (noImplicitAny && !returnTypeNode) {
74955
75007
  switch (node.kind) {
74956
75008
  case 180 /* ConstructSignature */:
@@ -74961,21 +75013,21 @@ function createTypeChecker(host) {
74961
75013
  break;
74962
75014
  }
74963
75015
  }
74964
- if (returnTypeNode) {
75016
+ if (returnTypeNode && returnTypeErrorLocation) {
74965
75017
  const functionFlags2 = getFunctionFlags(node);
74966
75018
  if ((functionFlags2 & (4 /* Invalid */ | 1 /* Generator */)) === 1 /* Generator */) {
74967
75019
  const returnType = getTypeFromTypeNode(returnTypeNode);
74968
75020
  if (returnType === voidType) {
74969
- error(returnTypeNode, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
75021
+ error(returnTypeErrorLocation, Diagnostics.A_generator_cannot_have_a_void_type_annotation);
74970
75022
  } else {
74971
75023
  const generatorYieldType = getIterationTypeOfGeneratorFunctionReturnType(0 /* Yield */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || anyType;
74972
75024
  const generatorReturnType = getIterationTypeOfGeneratorFunctionReturnType(1 /* Return */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || generatorYieldType;
74973
75025
  const generatorNextType = getIterationTypeOfGeneratorFunctionReturnType(2 /* Next */, returnType, (functionFlags2 & 2 /* Async */) !== 0) || unknownType;
74974
75026
  const generatorInstantiation = createGeneratorReturnType(generatorYieldType, generatorReturnType, generatorNextType, !!(functionFlags2 & 2 /* Async */));
74975
- checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeNode);
75027
+ checkTypeAssignableTo(generatorInstantiation, returnType, returnTypeErrorLocation);
74976
75028
  }
74977
75029
  } else if ((functionFlags2 & 3 /* AsyncGenerator */) === 2 /* Async */) {
74978
- checkAsyncFunctionReturnType(node, returnTypeNode);
75030
+ checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation);
74979
75031
  }
74980
75032
  }
74981
75033
  if (node.kind !== 181 /* IndexSignature */ && node.kind !== 324 /* JSDocFunctionType */) {
@@ -75056,7 +75108,7 @@ function createTypeChecker(host) {
75056
75108
  case "length":
75057
75109
  case "caller":
75058
75110
  case "arguments":
75059
- if (useDefineForClassFields) {
75111
+ if (compilerOptions.useDefineForClassFields) {
75060
75112
  break;
75061
75113
  }
75062
75114
  case "prototype":
@@ -75204,7 +75256,7 @@ function createTypeChecker(host) {
75204
75256
  if (classExtendsNull) {
75205
75257
  error(superCall, Diagnostics.A_constructor_cannot_contain_a_super_call_when_its_class_extends_null);
75206
75258
  }
75207
- const superCallShouldBeRootLevel = !useDefineForClassFields && (some(node.parent.members, isInstancePropertyWithInitializerOrPrivateIdentifierProperty) || some(node.parameters, (p) => hasSyntacticModifier(p, 16476 /* ParameterPropertyModifier */)));
75259
+ const superCallShouldBeRootLevel = (getEmitScriptTarget(compilerOptions) !== 99 /* ESNext */ || !useDefineForClassFields) && (some(node.parent.members, isInstancePropertyWithInitializerOrPrivateIdentifierProperty) || some(node.parameters, (p) => hasSyntacticModifier(p, 16476 /* ParameterPropertyModifier */)));
75208
75260
  if (superCallShouldBeRootLevel) {
75209
75261
  if (!superCallIsRootLevelInConstructor(superCall, node.body)) {
75210
75262
  error(superCall, Diagnostics.A_super_call_must_be_a_root_level_statement_within_a_constructor_of_a_derived_class_that_contains_initialized_properties_parameter_properties_or_private_identifiers);
@@ -76057,7 +76109,7 @@ function createTypeChecker(host) {
76057
76109
  }
76058
76110
  return typeAsAwaitable.awaitedTypeOfType = type;
76059
76111
  }
76060
- function checkAsyncFunctionReturnType(node, returnTypeNode) {
76112
+ function checkAsyncFunctionReturnType(node, returnTypeNode, returnTypeErrorLocation) {
76061
76113
  const returnType = getTypeFromTypeNode(returnTypeNode);
76062
76114
  if (languageVersion >= 2 /* ES2015 */) {
76063
76115
  if (isErrorType(returnType)) {
@@ -76068,7 +76120,7 @@ function createTypeChecker(host) {
76068
76120
  true
76069
76121
  );
76070
76122
  if (globalPromiseType !== emptyGenericType && !isReferenceToType(returnType, globalPromiseType)) {
76071
- 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));
76123
+ 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));
76072
76124
  return;
76073
76125
  }
76074
76126
  } else {
@@ -76078,7 +76130,7 @@ function createTypeChecker(host) {
76078
76130
  }
76079
76131
  const promiseConstructorName = getEntityNameFromTypeNode(returnTypeNode);
76080
76132
  if (promiseConstructorName === void 0) {
76081
- 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));
76133
+ 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));
76082
76134
  return;
76083
76135
  }
76084
76136
  const promiseConstructorSymbol = resolveEntityName(
@@ -76093,9 +76145,9 @@ function createTypeChecker(host) {
76093
76145
  /*reportErrors*/
76094
76146
  false
76095
76147
  )) {
76096
- 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);
76148
+ 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);
76097
76149
  } else {
76098
- 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));
76150
+ 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));
76099
76151
  }
76100
76152
  return;
76101
76153
  }
@@ -76104,15 +76156,16 @@ function createTypeChecker(host) {
76104
76156
  true
76105
76157
  );
76106
76158
  if (globalPromiseConstructorLikeType === emptyObjectType) {
76107
- 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));
76159
+ 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));
76108
76160
  return;
76109
76161
  }
76110
- if (!checkTypeAssignableTo(
76111
- promiseConstructorType,
76112
- globalPromiseConstructorLikeType,
76113
- returnTypeNode,
76114
- 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
76115
- )) {
76162
+ 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;
76163
+ const errorInfo = () => returnTypeNode === returnTypeErrorLocation ? void 0 : chainDiagnosticMessages(
76164
+ /*details*/
76165
+ void 0,
76166
+ Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type
76167
+ );
76168
+ if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, returnTypeErrorLocation, headMessage, errorInfo)) {
76116
76169
  return;
76117
76170
  }
76118
76171
  const rootName = promiseConstructorName && getFirstIdentifier(promiseConstructorName);
@@ -76134,6 +76187,14 @@ function createTypeChecker(host) {
76134
76187
  node,
76135
76188
  Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member
76136
76189
  );
76190
+ function reportErrorForInvalidReturnType(message, returnTypeNode2, returnTypeErrorLocation2, typeName) {
76191
+ if (returnTypeNode2 === returnTypeErrorLocation2) {
76192
+ error(returnTypeErrorLocation2, message, typeName);
76193
+ } else {
76194
+ const diag2 = error(returnTypeErrorLocation2, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type);
76195
+ addRelatedInfo(diag2, createDiagnosticForNode(returnTypeNode2, message, typeName));
76196
+ }
76197
+ }
76137
76198
  }
76138
76199
  function checkDecorator(node) {
76139
76200
  const signature = getResolvedSignature(node);
@@ -78474,7 +78535,7 @@ function createTypeChecker(host) {
78474
78535
  node
78475
78536
  );
78476
78537
  const willTransformPrivateElementsOrClassStaticBlocks = languageVersion <= 9 /* ES2022 */;
78477
- const willTransformInitializers = !useDefineForClassFields;
78538
+ const willTransformInitializers = !useDefineForClassFields || languageVersion < 9 /* ES2022 */;
78478
78539
  if (willTransformStaticElementsOfDecoratedClass || willTransformPrivateElementsOrClassStaticBlocks) {
78479
78540
  for (const member of node.members) {
78480
78541
  if (willTransformStaticElementsOfDecoratedClass && classElementOrClassElementParameterIsDecorated(
@@ -122037,7 +122098,6 @@ function createWatchProgram(host) {
122037
122098
  if (hasChangedCompilerOptions) {
122038
122099
  newLine = updateNewLine();
122039
122100
  if (program && changesAffectModuleResolution(program.getCompilerOptions(), compilerOptions)) {
122040
- debugger;
122041
122101
  resolutionCache.onChangesAffectModuleResolution();
122042
122102
  }
122043
122103
  }