@typescript-deploys/pr-build 5.5.0-pr-49218-53 → 5.5.0-pr-57619-14

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.
@@ -25,3 +25,4 @@ and limitations under the License.
25
25
  /// <reference lib="esnext.collection" />
26
26
  /// <reference lib="esnext.array" />
27
27
  /// <reference lib="esnext.regexp" />
28
+ /// <reference lib="esnext.string" />
@@ -0,0 +1,29 @@
1
+ /*! *****************************************************************************
2
+ Copyright (c) Microsoft Corporation. All rights reserved.
3
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
+ this file except in compliance with the License. You may obtain a copy of the
5
+ License at http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
+ MERCHANTABLITY OR NON-INFRINGEMENT.
11
+
12
+ See the Apache Version 2.0 License for specific language governing permissions
13
+ and limitations under the License.
14
+ ***************************************************************************** */
15
+
16
+
17
+ /// <reference no-default-lib="true"/>
18
+
19
+ interface String {
20
+ /**
21
+ * Returns true if all leading surrogates and trailing surrogates appear paired and in order.
22
+ */
23
+ isWellFormed(): boolean;
24
+
25
+ /**
26
+ * Returns a string where all lone or out-of-order surrogates have been replaced by the Unicode replacement character (U+FFFD).
27
+ */
28
+ toWellFormed(): string;
29
+ }
package/lib/tsc.js CHANGED
@@ -12083,6 +12083,10 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize(
12083
12083
  ],
12084
12084
  es2022: [
12085
12085
  "at"
12086
+ ],
12087
+ esnext: [
12088
+ "isWellFormed",
12089
+ "toWellFormed"
12086
12090
  ]
12087
12091
  })),
12088
12092
  StringConstructor: new Map(Object.entries({
@@ -34442,6 +34446,7 @@ var libEntries = [
34442
34446
  ["esnext.object", "lib.esnext.object.d.ts"],
34443
34447
  ["esnext.array", "lib.esnext.array.d.ts"],
34444
34448
  ["esnext.regexp", "lib.esnext.regexp.d.ts"],
34449
+ ["esnext.string", "lib.esnext.string.d.ts"],
34445
34450
  ["decorators", "lib.decorators.d.ts"],
34446
34451
  ["decorators.legacy", "lib.decorators.legacy.d.ts"]
34447
34452
  ];
@@ -54700,21 +54705,58 @@ function createTypeChecker(host) {
54700
54705
  result.flags |= callChainFlags;
54701
54706
  return result;
54702
54707
  }
54708
+ function getFallbackExpandedLabels(restType, restDeclaration) {
54709
+ if (!restDeclaration) {
54710
+ return;
54711
+ }
54712
+ Debug.assertNode(restDeclaration, isParameter);
54713
+ if (restDeclaration.name.kind !== 207 /* ArrayBindingPattern */) {
54714
+ return;
54715
+ }
54716
+ const nameElements = restDeclaration.name.elements;
54717
+ const elementFlags = restType.target.elementFlags;
54718
+ let structuresMatch = true;
54719
+ return map(elementFlags, (elementFlag, i) => {
54720
+ if (!structuresMatch || i >= nameElements.length) {
54721
+ return void 0;
54722
+ }
54723
+ const nameElement = nameElements[i];
54724
+ if (elementFlag & 12 /* Variable */) {
54725
+ structuresMatch = false;
54726
+ if (nameElement.kind === 208 /* BindingElement */ && nameElement.name.kind === 80 /* Identifier */ && nameElement.dotDotDotToken) {
54727
+ return nameElement.name.escapedText;
54728
+ }
54729
+ return void 0;
54730
+ }
54731
+ if (nameElement.kind !== 208 /* BindingElement */) {
54732
+ return void 0;
54733
+ }
54734
+ if (nameElement.dotDotDotToken) {
54735
+ structuresMatch = false;
54736
+ return void 0;
54737
+ }
54738
+ if (nameElement.kind === 208 /* BindingElement */ && nameElement.name.kind === 80 /* Identifier */) {
54739
+ return nameElement.name.escapedText;
54740
+ }
54741
+ return void 0;
54742
+ });
54743
+ }
54703
54744
  function getExpandedParameters(sig, skipUnionExpanding) {
54704
54745
  if (signatureHasRestParameter(sig)) {
54705
54746
  const restIndex = sig.parameters.length - 1;
54706
54747
  const restName = sig.parameters[restIndex].escapedName;
54707
54748
  const restType = getTypeOfSymbol(sig.parameters[restIndex]);
54749
+ const restDeclaration = sig.parameters[restIndex].valueDeclaration;
54708
54750
  if (isTupleType(restType)) {
54709
- return [expandSignatureParametersWithTupleMembers(restType, restIndex, restName)];
54751
+ return [expandSignatureParametersWithTupleMembers(restType, restIndex, restName, getFallbackExpandedLabels(restType, restDeclaration))];
54710
54752
  } else if (!skipUnionExpanding && restType.flags & 1048576 /* Union */ && every(restType.types, isTupleType)) {
54711
- return map(restType.types, (t) => expandSignatureParametersWithTupleMembers(t, restIndex, restName));
54753
+ return map(restType.types, (t) => expandSignatureParametersWithTupleMembers(t, restIndex, restName, getFallbackExpandedLabels(t, restDeclaration)));
54712
54754
  }
54713
54755
  }
54714
54756
  return [sig.parameters];
54715
- function expandSignatureParametersWithTupleMembers(restType, restIndex, restName) {
54757
+ function expandSignatureParametersWithTupleMembers(restType, restIndex, restName, fallbackLabels) {
54716
54758
  const elementTypes = getTypeArguments(restType);
54717
- const associatedNames = getUniqAssociatedNamesFromTupleType(restType, restName);
54759
+ const associatedNames = getUniqAssociatedNamesFromTupleType(restType, restName, fallbackLabels);
54718
54760
  const restParams = map(elementTypes, (t, i) => {
54719
54761
  const name = associatedNames && associatedNames[i] ? associatedNames[i] : getParameterNameAtPosition(sig, restIndex + i, restType);
54720
54762
  const flags = restType.target.elementFlags[i];
@@ -54725,10 +54767,10 @@ function createTypeChecker(host) {
54725
54767
  });
54726
54768
  return concatenate(sig.parameters.slice(0, restIndex), restParams);
54727
54769
  }
54728
- function getUniqAssociatedNamesFromTupleType(type, restName) {
54770
+ function getUniqAssociatedNamesFromTupleType(type, restName, fallbackLabels) {
54729
54771
  const associatedNamesMap = /* @__PURE__ */ new Map();
54730
54772
  return map(type.target.labeledElementDeclarations, (labeledElement, i) => {
54731
- const name = getTupleElementLabel(labeledElement, i, restName);
54773
+ const name = getTupleElementLabel(labeledElement, i, restName, fallbackLabels == null ? void 0 : fallbackLabels[i]);
54732
54774
  const prevCounter = associatedNamesMap.get(name);
54733
54775
  if (prevCounter === void 0) {
54734
54776
  associatedNamesMap.set(name, 1);
@@ -61239,37 +61281,7 @@ function createTypeChecker(host) {
61239
61281
  const restIndex = sourceRestType || targetRestType ? paramCount - 1 : -1;
61240
61282
  for (let i = 0; i < paramCount; i++) {
61241
61283
  const sourceType = i === restIndex ? getRestOrAnyTypeAtPosition(source, i) : tryGetTypeAtPosition(source, i);
61242
- let targetType = i === restIndex ? getRestOrAnyTypeAtPosition(target, i) : tryGetTypeAtPosition(target, i);
61243
- if (i === restIndex && targetType && sourceType && isTupleType(sourceType)) {
61244
- targetType = mapType(targetType, (t) => {
61245
- if (!isTupleType(t) || // When both sides are tuples of the same structure, we don't want to "propagate" types from elements of variable positions
61246
- // to the following positions as that would disallow signatures of the exact same structures when trailing fixed elements are involved:
61247
- //
61248
- // let fn: (...rest: [...string[], number]) => void = (...rest: [...string[], number]) => {}; // ok
61249
- //
61250
- // Since we want to allow contextual types to flow into paremeters, we don't need to differentiate between rest and variadic elements
61251
- // as that doesn't affect the contextual type of the parameter
61252
- isTupleTypeStructureMatching(sourceType, t, 2 /* MatchVariable */)) {
61253
- return t;
61254
- }
61255
- const elementTypes = [];
61256
- const elementFlags = [];
61257
- const sourceArity = getTypeReferenceArity(sourceType);
61258
- const targetArity = getTypeReferenceArity(t);
61259
- for (let i2 = 0; i2 < sourceArity; i2++) {
61260
- if (i2 >= targetArity) {
61261
- if (sourceType.target.elementFlags[i2] & 3 /* Fixed */) {
61262
- elementTypes.push(undefinedType);
61263
- elementFlags.push(sourceType.target.elementFlags[i2]);
61264
- }
61265
- continue;
61266
- }
61267
- elementTypes.push(getTupleElementType(t, i2));
61268
- elementFlags.push(sourceType.target.elementFlags[i2]);
61269
- }
61270
- return createTupleType(elementTypes, elementFlags);
61271
- });
61272
- }
61284
+ const targetType = i === restIndex ? getRestOrAnyTypeAtPosition(target, i) : tryGetTypeAtPosition(target, i);
61273
61285
  if (sourceType && targetType) {
61274
61286
  const sourceSig = checkMode & 3 /* Callback */ || isInstantiatedGenericParameter(source, i) ? void 0 : getSingleCallSignature(getNonNullableType(sourceType));
61275
61287
  const targetSig = checkMode & 3 /* Callback */ || isInstantiatedGenericParameter(target, i) ? void 0 : getSingleCallSignature(getNonNullableType(targetType));
@@ -64540,11 +64552,8 @@ function createTypeChecker(host) {
64540
64552
  }
64541
64553
  return void 0;
64542
64554
  }
64543
- function isTupleTypeStructureMatching(t1, t2, tupleStructureComparisonKind) {
64544
- return getTypeReferenceArity(t1) === getTypeReferenceArity(t2) && every(t1.target.elementFlags, (f1, i) => {
64545
- const f2 = t2.target.elementFlags[i];
64546
- return f1 === f2 || !!(tupleStructureComparisonKind & 1 /* MatchFixed */ && f1 & 3 /* Fixed */ && f2 & 3 /* Fixed */) || !!(tupleStructureComparisonKind & 2 /* MatchVariable */ && f1 & 12 /* Variable */ && f2 & 12 /* Variable */);
64547
- });
64555
+ function isTupleTypeStructureMatching(t1, t2) {
64556
+ return getTypeReferenceArity(t1) === getTypeReferenceArity(t2) && every(t1.target.elementFlags, (f, i) => (f & 12 /* Variable */) === (t2.target.elementFlags[i] & 12 /* Variable */));
64548
64557
  }
64549
64558
  function isZeroBigInt({ value }) {
64550
64559
  return value.base10Value === "0";
@@ -65785,7 +65794,7 @@ function createTypeChecker(host) {
65785
65794
  const targetArity = getTypeReferenceArity(target);
65786
65795
  const elementTypes = getTypeArguments(target);
65787
65796
  const elementFlags = target.target.elementFlags;
65788
- if (isTupleType(source) && isTupleTypeStructureMatching(source, target, 1 /* MatchFixed */)) {
65797
+ if (isTupleType(source) && isTupleTypeStructureMatching(source, target)) {
65789
65798
  for (let i = 0; i < targetArity; i++) {
65790
65799
  inferFromTypes(getTypeArguments(source)[i], elementTypes[i]);
65791
65800
  }
@@ -71440,7 +71449,10 @@ function createTypeChecker(host) {
71440
71449
  if (indexInfo.isReadonly && (isAssignmentTarget(node) || isDeleteTarget(node))) {
71441
71450
  error(node, Diagnostics.Index_signature_in_type_0_only_permits_reading, typeToString(apparentType));
71442
71451
  }
71443
- propType = compilerOptions.noUncheckedIndexedAccess && !isAssignmentTarget(node) ? getUnionType([indexInfo.type, missingType]) : indexInfo.type;
71452
+ propType = indexInfo.type;
71453
+ if (compilerOptions.noUncheckedIndexedAccess && getAssignmentTargetKind(node) !== 1 /* Definite */) {
71454
+ propType = getUnionType([propType, missingType]);
71455
+ }
71444
71456
  if (compilerOptions.noPropertyAccessFromIndexSignature && isPropertyAccessExpression(node)) {
71445
71457
  error(right, Diagnostics.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0, unescapeLeadingUnderscores(right.escapedText));
71446
71458
  }
@@ -71890,7 +71902,16 @@ function createTypeChecker(host) {
71890
71902
  return errorType;
71891
71903
  }
71892
71904
  const effectiveIndexType = isForInVariableForNumericPropertyNames(indexExpression) ? numberType : indexType;
71893
- const accessFlags = isAssignmentTarget(node) ? 4 /* Writing */ | (isGenericObjectType(objectType) && !isThisTypeParameter(objectType) ? 2 /* NoIndexSignatures */ : 0) : 32 /* ExpressionPosition */;
71905
+ const assignmentTargetKind = getAssignmentTargetKind(node);
71906
+ let accessFlags;
71907
+ if (assignmentTargetKind === 0 /* None */) {
71908
+ accessFlags = 32 /* ExpressionPosition */;
71909
+ } else {
71910
+ accessFlags = 4 /* Writing */ | (isGenericObjectType(objectType) && !isThisTypeParameter(objectType) ? 2 /* NoIndexSignatures */ : 0);
71911
+ if (assignmentTargetKind === 2 /* Compound */) {
71912
+ accessFlags |= 32 /* ExpressionPosition */;
71913
+ }
71914
+ }
71894
71915
  const indexedAccessType = getIndexedAccessTypeOrUndefined(objectType, effectiveIndexType, accessFlags, node) || errorType;
71895
71916
  return checkIndexedAccessIndexType(getFlowTypeOfAccessExpression(node, getNodeLinks(node).resolvedSymbol, indexedAccessType, indexExpression, checkMode), node);
71896
71917
  }
@@ -74213,9 +74234,9 @@ function createTypeChecker(host) {
74213
74234
  !!declaration && (hasInitializer(declaration) || isOptionalDeclaration(declaration))
74214
74235
  );
74215
74236
  }
74216
- function getTupleElementLabel(d, index, restParameterName = "arg") {
74237
+ function getTupleElementLabel(d, index, restParameterName = "arg", fallbackLabel) {
74217
74238
  if (!d) {
74218
- return `${restParameterName}_${index}`;
74239
+ return fallbackLabel ?? `${restParameterName}_${index}`;
74219
74240
  }
74220
74241
  Debug.assert(isIdentifier(d.name));
74221
74242
  return d.name.escapedText;
package/lib/typescript.js CHANGED
@@ -15916,6 +15916,10 @@ var getScriptTargetFeatures = /* @__PURE__ */ memoize(
15916
15916
  ],
15917
15917
  es2022: [
15918
15918
  "at"
15919
+ ],
15920
+ esnext: [
15921
+ "isWellFormed",
15922
+ "toWellFormed"
15919
15923
  ]
15920
15924
  })),
15921
15925
  StringConstructor: new Map(Object.entries({
@@ -38888,6 +38892,7 @@ var libEntries = [
38888
38892
  ["esnext.object", "lib.esnext.object.d.ts"],
38889
38893
  ["esnext.array", "lib.esnext.array.d.ts"],
38890
38894
  ["esnext.regexp", "lib.esnext.regexp.d.ts"],
38895
+ ["esnext.string", "lib.esnext.string.d.ts"],
38891
38896
  ["decorators", "lib.decorators.d.ts"],
38892
38897
  ["decorators.legacy", "lib.decorators.legacy.d.ts"]
38893
38898
  ];
@@ -59502,21 +59507,58 @@ function createTypeChecker(host) {
59502
59507
  result.flags |= callChainFlags;
59503
59508
  return result;
59504
59509
  }
59510
+ function getFallbackExpandedLabels(restType, restDeclaration) {
59511
+ if (!restDeclaration) {
59512
+ return;
59513
+ }
59514
+ Debug.assertNode(restDeclaration, isParameter);
59515
+ if (restDeclaration.name.kind !== 207 /* ArrayBindingPattern */) {
59516
+ return;
59517
+ }
59518
+ const nameElements = restDeclaration.name.elements;
59519
+ const elementFlags = restType.target.elementFlags;
59520
+ let structuresMatch = true;
59521
+ return map(elementFlags, (elementFlag, i) => {
59522
+ if (!structuresMatch || i >= nameElements.length) {
59523
+ return void 0;
59524
+ }
59525
+ const nameElement = nameElements[i];
59526
+ if (elementFlag & 12 /* Variable */) {
59527
+ structuresMatch = false;
59528
+ if (nameElement.kind === 208 /* BindingElement */ && nameElement.name.kind === 80 /* Identifier */ && nameElement.dotDotDotToken) {
59529
+ return nameElement.name.escapedText;
59530
+ }
59531
+ return void 0;
59532
+ }
59533
+ if (nameElement.kind !== 208 /* BindingElement */) {
59534
+ return void 0;
59535
+ }
59536
+ if (nameElement.dotDotDotToken) {
59537
+ structuresMatch = false;
59538
+ return void 0;
59539
+ }
59540
+ if (nameElement.kind === 208 /* BindingElement */ && nameElement.name.kind === 80 /* Identifier */) {
59541
+ return nameElement.name.escapedText;
59542
+ }
59543
+ return void 0;
59544
+ });
59545
+ }
59505
59546
  function getExpandedParameters(sig, skipUnionExpanding) {
59506
59547
  if (signatureHasRestParameter(sig)) {
59507
59548
  const restIndex = sig.parameters.length - 1;
59508
59549
  const restName = sig.parameters[restIndex].escapedName;
59509
59550
  const restType = getTypeOfSymbol(sig.parameters[restIndex]);
59551
+ const restDeclaration = sig.parameters[restIndex].valueDeclaration;
59510
59552
  if (isTupleType(restType)) {
59511
- return [expandSignatureParametersWithTupleMembers(restType, restIndex, restName)];
59553
+ return [expandSignatureParametersWithTupleMembers(restType, restIndex, restName, getFallbackExpandedLabels(restType, restDeclaration))];
59512
59554
  } else if (!skipUnionExpanding && restType.flags & 1048576 /* Union */ && every(restType.types, isTupleType)) {
59513
- return map(restType.types, (t) => expandSignatureParametersWithTupleMembers(t, restIndex, restName));
59555
+ return map(restType.types, (t) => expandSignatureParametersWithTupleMembers(t, restIndex, restName, getFallbackExpandedLabels(t, restDeclaration)));
59514
59556
  }
59515
59557
  }
59516
59558
  return [sig.parameters];
59517
- function expandSignatureParametersWithTupleMembers(restType, restIndex, restName) {
59559
+ function expandSignatureParametersWithTupleMembers(restType, restIndex, restName, fallbackLabels) {
59518
59560
  const elementTypes = getTypeArguments(restType);
59519
- const associatedNames = getUniqAssociatedNamesFromTupleType(restType, restName);
59561
+ const associatedNames = getUniqAssociatedNamesFromTupleType(restType, restName, fallbackLabels);
59520
59562
  const restParams = map(elementTypes, (t, i) => {
59521
59563
  const name = associatedNames && associatedNames[i] ? associatedNames[i] : getParameterNameAtPosition(sig, restIndex + i, restType);
59522
59564
  const flags = restType.target.elementFlags[i];
@@ -59527,10 +59569,10 @@ function createTypeChecker(host) {
59527
59569
  });
59528
59570
  return concatenate(sig.parameters.slice(0, restIndex), restParams);
59529
59571
  }
59530
- function getUniqAssociatedNamesFromTupleType(type, restName) {
59572
+ function getUniqAssociatedNamesFromTupleType(type, restName, fallbackLabels) {
59531
59573
  const associatedNamesMap = /* @__PURE__ */ new Map();
59532
59574
  return map(type.target.labeledElementDeclarations, (labeledElement, i) => {
59533
- const name = getTupleElementLabel(labeledElement, i, restName);
59575
+ const name = getTupleElementLabel(labeledElement, i, restName, fallbackLabels == null ? void 0 : fallbackLabels[i]);
59534
59576
  const prevCounter = associatedNamesMap.get(name);
59535
59577
  if (prevCounter === void 0) {
59536
59578
  associatedNamesMap.set(name, 1);
@@ -66041,37 +66083,7 @@ function createTypeChecker(host) {
66041
66083
  const restIndex = sourceRestType || targetRestType ? paramCount - 1 : -1;
66042
66084
  for (let i = 0; i < paramCount; i++) {
66043
66085
  const sourceType = i === restIndex ? getRestOrAnyTypeAtPosition(source, i) : tryGetTypeAtPosition(source, i);
66044
- let targetType = i === restIndex ? getRestOrAnyTypeAtPosition(target, i) : tryGetTypeAtPosition(target, i);
66045
- if (i === restIndex && targetType && sourceType && isTupleType(sourceType)) {
66046
- targetType = mapType(targetType, (t) => {
66047
- if (!isTupleType(t) || // When both sides are tuples of the same structure, we don't want to "propagate" types from elements of variable positions
66048
- // to the following positions as that would disallow signatures of the exact same structures when trailing fixed elements are involved:
66049
- //
66050
- // let fn: (...rest: [...string[], number]) => void = (...rest: [...string[], number]) => {}; // ok
66051
- //
66052
- // Since we want to allow contextual types to flow into paremeters, we don't need to differentiate between rest and variadic elements
66053
- // as that doesn't affect the contextual type of the parameter
66054
- isTupleTypeStructureMatching(sourceType, t, 2 /* MatchVariable */)) {
66055
- return t;
66056
- }
66057
- const elementTypes = [];
66058
- const elementFlags = [];
66059
- const sourceArity = getTypeReferenceArity(sourceType);
66060
- const targetArity = getTypeReferenceArity(t);
66061
- for (let i2 = 0; i2 < sourceArity; i2++) {
66062
- if (i2 >= targetArity) {
66063
- if (sourceType.target.elementFlags[i2] & 3 /* Fixed */) {
66064
- elementTypes.push(undefinedType);
66065
- elementFlags.push(sourceType.target.elementFlags[i2]);
66066
- }
66067
- continue;
66068
- }
66069
- elementTypes.push(getTupleElementType(t, i2));
66070
- elementFlags.push(sourceType.target.elementFlags[i2]);
66071
- }
66072
- return createTupleType(elementTypes, elementFlags);
66073
- });
66074
- }
66086
+ const targetType = i === restIndex ? getRestOrAnyTypeAtPosition(target, i) : tryGetTypeAtPosition(target, i);
66075
66087
  if (sourceType && targetType) {
66076
66088
  const sourceSig = checkMode & 3 /* Callback */ || isInstantiatedGenericParameter(source, i) ? void 0 : getSingleCallSignature(getNonNullableType(sourceType));
66077
66089
  const targetSig = checkMode & 3 /* Callback */ || isInstantiatedGenericParameter(target, i) ? void 0 : getSingleCallSignature(getNonNullableType(targetType));
@@ -69342,11 +69354,8 @@ function createTypeChecker(host) {
69342
69354
  }
69343
69355
  return void 0;
69344
69356
  }
69345
- function isTupleTypeStructureMatching(t1, t2, tupleStructureComparisonKind) {
69346
- return getTypeReferenceArity(t1) === getTypeReferenceArity(t2) && every(t1.target.elementFlags, (f1, i) => {
69347
- const f2 = t2.target.elementFlags[i];
69348
- return f1 === f2 || !!(tupleStructureComparisonKind & 1 /* MatchFixed */ && f1 & 3 /* Fixed */ && f2 & 3 /* Fixed */) || !!(tupleStructureComparisonKind & 2 /* MatchVariable */ && f1 & 12 /* Variable */ && f2 & 12 /* Variable */);
69349
- });
69357
+ function isTupleTypeStructureMatching(t1, t2) {
69358
+ return getTypeReferenceArity(t1) === getTypeReferenceArity(t2) && every(t1.target.elementFlags, (f, i) => (f & 12 /* Variable */) === (t2.target.elementFlags[i] & 12 /* Variable */));
69350
69359
  }
69351
69360
  function isZeroBigInt({ value }) {
69352
69361
  return value.base10Value === "0";
@@ -70587,7 +70596,7 @@ function createTypeChecker(host) {
70587
70596
  const targetArity = getTypeReferenceArity(target);
70588
70597
  const elementTypes = getTypeArguments(target);
70589
70598
  const elementFlags = target.target.elementFlags;
70590
- if (isTupleType(source) && isTupleTypeStructureMatching(source, target, 1 /* MatchFixed */)) {
70599
+ if (isTupleType(source) && isTupleTypeStructureMatching(source, target)) {
70591
70600
  for (let i = 0; i < targetArity; i++) {
70592
70601
  inferFromTypes(getTypeArguments(source)[i], elementTypes[i]);
70593
70602
  }
@@ -76242,7 +76251,10 @@ function createTypeChecker(host) {
76242
76251
  if (indexInfo.isReadonly && (isAssignmentTarget(node) || isDeleteTarget(node))) {
76243
76252
  error2(node, Diagnostics.Index_signature_in_type_0_only_permits_reading, typeToString(apparentType));
76244
76253
  }
76245
- propType = compilerOptions.noUncheckedIndexedAccess && !isAssignmentTarget(node) ? getUnionType([indexInfo.type, missingType]) : indexInfo.type;
76254
+ propType = indexInfo.type;
76255
+ if (compilerOptions.noUncheckedIndexedAccess && getAssignmentTargetKind(node) !== 1 /* Definite */) {
76256
+ propType = getUnionType([propType, missingType]);
76257
+ }
76246
76258
  if (compilerOptions.noPropertyAccessFromIndexSignature && isPropertyAccessExpression(node)) {
76247
76259
  error2(right, Diagnostics.Property_0_comes_from_an_index_signature_so_it_must_be_accessed_with_0, unescapeLeadingUnderscores(right.escapedText));
76248
76260
  }
@@ -76692,7 +76704,16 @@ function createTypeChecker(host) {
76692
76704
  return errorType;
76693
76705
  }
76694
76706
  const effectiveIndexType = isForInVariableForNumericPropertyNames(indexExpression) ? numberType : indexType;
76695
- const accessFlags = isAssignmentTarget(node) ? 4 /* Writing */ | (isGenericObjectType(objectType) && !isThisTypeParameter(objectType) ? 2 /* NoIndexSignatures */ : 0) : 32 /* ExpressionPosition */;
76707
+ const assignmentTargetKind = getAssignmentTargetKind(node);
76708
+ let accessFlags;
76709
+ if (assignmentTargetKind === 0 /* None */) {
76710
+ accessFlags = 32 /* ExpressionPosition */;
76711
+ } else {
76712
+ accessFlags = 4 /* Writing */ | (isGenericObjectType(objectType) && !isThisTypeParameter(objectType) ? 2 /* NoIndexSignatures */ : 0);
76713
+ if (assignmentTargetKind === 2 /* Compound */) {
76714
+ accessFlags |= 32 /* ExpressionPosition */;
76715
+ }
76716
+ }
76696
76717
  const indexedAccessType = getIndexedAccessTypeOrUndefined(objectType, effectiveIndexType, accessFlags, node) || errorType;
76697
76718
  return checkIndexedAccessIndexType(getFlowTypeOfAccessExpression(node, getNodeLinks(node).resolvedSymbol, indexedAccessType, indexExpression, checkMode), node);
76698
76719
  }
@@ -79015,9 +79036,9 @@ function createTypeChecker(host) {
79015
79036
  !!declaration && (hasInitializer(declaration) || isOptionalDeclaration(declaration))
79016
79037
  );
79017
79038
  }
79018
- function getTupleElementLabel(d, index, restParameterName = "arg") {
79039
+ function getTupleElementLabel(d, index, restParameterName = "arg", fallbackLabel) {
79019
79040
  if (!d) {
79020
- return `${restParameterName}_${index}`;
79041
+ return fallbackLabel ?? `${restParameterName}_${index}`;
79021
79042
  }
79022
79043
  Debug.assert(isIdentifier(d.name));
79023
79044
  return d.name.escapedText;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@typescript-deploys/pr-build",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.5.0-pr-49218-53",
5
+ "version": "5.5.0-pr-57619-14",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -111,5 +111,5 @@
111
111
  "node": "20.1.0",
112
112
  "npm": "8.19.4"
113
113
  },
114
- "gitHead": "a6705551c8511c14e60cf14599775f5c622468a5"
114
+ "gitHead": "4b37e9b71356111ad30c4c34385c9c8f29da5d9e"
115
115
  }