@typescript-deploys/pr-build 5.0.0-pr-52818-5 → 5.0.0-pr-50431-13

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
@@ -15652,20 +15652,36 @@ function isWriteOnlyAccess(node) {
15652
15652
  function isWriteAccess(node) {
15653
15653
  return accessKind(node) !== 0 /* Read */;
15654
15654
  }
15655
+ function isWriteOnlyUsage(node) {
15656
+ return accessKindForUsageChecks(node) === 1 /* Write */;
15657
+ }
15658
+ function accessKindForUsageChecks(node) {
15659
+ const kind = accessKind(node);
15660
+ const { parent } = node;
15661
+ switch (parent == null ? void 0 : parent.kind) {
15662
+ case 222 /* PostfixUnaryExpression */:
15663
+ case 221 /* PrefixUnaryExpression */:
15664
+ case 223 /* BinaryExpression */:
15665
+ return kind === 2 /* ReadWrite */ ? writeOrReadWrite() : kind;
15666
+ default:
15667
+ return kind;
15668
+ }
15669
+ function writeOrReadWrite() {
15670
+ return parent.parent && walkUpParenthesizedExpressions(parent.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
15671
+ }
15672
+ }
15655
15673
  function accessKind(node) {
15656
15674
  const { parent } = node;
15657
- if (!parent)
15658
- return 0 /* Read */;
15659
- switch (parent.kind) {
15675
+ switch (parent == null ? void 0 : parent.kind) {
15660
15676
  case 214 /* ParenthesizedExpression */:
15661
15677
  return accessKind(parent);
15662
15678
  case 222 /* PostfixUnaryExpression */:
15663
15679
  case 221 /* PrefixUnaryExpression */:
15664
15680
  const { operator } = parent;
15665
- return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? writeOrReadWrite() : 0 /* Read */;
15681
+ return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? 2 /* ReadWrite */ : 0 /* Read */;
15666
15682
  case 223 /* BinaryExpression */:
15667
15683
  const { left, operatorToken } = parent;
15668
- return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : writeOrReadWrite() : 0 /* Read */;
15684
+ return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : 2 /* ReadWrite */ : 0 /* Read */;
15669
15685
  case 208 /* PropertyAccessExpression */:
15670
15686
  return parent.name !== node ? 0 /* Read */ : accessKind(parent);
15671
15687
  case 299 /* PropertyAssignment */: {
@@ -15679,9 +15695,6 @@ function accessKind(node) {
15679
15695
  default:
15680
15696
  return 0 /* Read */;
15681
15697
  }
15682
- function writeOrReadWrite() {
15683
- return parent.parent && walkUpParenthesizedExpressions(parent.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
15684
- }
15685
15698
  }
15686
15699
  function reverseAccessKind(a) {
15687
15700
  switch (a) {
@@ -29585,9 +29598,13 @@ var Parser;
29585
29598
  function parseJsxClosingFragment(inExpressionContext) {
29586
29599
  const pos = getNodePos();
29587
29600
  parseExpected(30 /* LessThanSlashToken */);
29601
+ if (tokenIsIdentifierOrKeyword(token())) {
29602
+ parseErrorAtRange(parseJsxElementName(), Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment);
29603
+ }
29588
29604
  if (parseExpected(
29589
29605
  31 /* GreaterThanToken */,
29590
- Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment,
29606
+ /*diagnostic*/
29607
+ void 0,
29591
29608
  /*shouldAdvance*/
29592
29609
  false
29593
29610
  )) {
@@ -63351,7 +63368,7 @@ function createTypeChecker(host) {
63351
63368
  111551 /* Value */ | 1048576 /* ExportValue */,
63352
63369
  getCannotFindNameDiagnosticForName(node),
63353
63370
  node,
63354
- !isWriteOnlyAccess(node),
63371
+ !isWriteOnlyUsage(node),
63355
63372
  /*excludeGlobals*/
63356
63373
  false
63357
63374
  ) || unknownSymbol;
@@ -68169,8 +68186,8 @@ function createTypeChecker(host) {
68169
68186
  }
68170
68187
  return nonNullType;
68171
68188
  }
68172
- function checkPropertyAccessExpression(node, checkMode) {
68173
- return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode);
68189
+ function checkPropertyAccessExpression(node, checkMode, writeOnly) {
68190
+ return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode, writeOnly);
68174
68191
  }
68175
68192
  function checkPropertyAccessChain(node, checkMode) {
68176
68193
  const leftType = checkExpression(node.expression);
@@ -68301,7 +68318,7 @@ function createTypeChecker(host) {
68301
68318
  false
68302
68319
  ) === getDeclaringConstructor(prop);
68303
68320
  }
68304
- function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode) {
68321
+ function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode, writeOnly) {
68305
68322
  const parentSymbol = getNodeLinks(left).resolvedSymbol;
68306
68323
  const assignmentKind = getAssignmentTargetKind(node);
68307
68324
  const apparentType = getApparentType(assignmentKind !== 0 /* None */ || isMethodAccessForCall(node) ? getWidenedType(leftType) : leftType);
@@ -68400,13 +68417,12 @@ function createTypeChecker(host) {
68400
68417
  checkPropertyNotUsedBeforeDeclaration(prop, node, right);
68401
68418
  markPropertyAsReferenced(prop, node, isSelfTypeAccess(left, parentSymbol));
68402
68419
  getNodeLinks(node).resolvedSymbol = prop;
68403
- const writing = isWriteAccess(node);
68404
- checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, writing, apparentType, prop);
68420
+ checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, isWriteAccess(node), apparentType, prop);
68405
68421
  if (isAssignmentToReadonlyEntity(node, prop, assignmentKind)) {
68406
68422
  error(right, Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, idText(right));
68407
68423
  return errorType;
68408
68424
  }
68409
- propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writing ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
68425
+ propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writeOnly || isWriteOnlyAccess(node) ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
68410
68426
  }
68411
68427
  return getFlowTypeOfAccessExpression(node, prop, propType, right, checkMode);
68412
68428
  }
@@ -68722,7 +68738,7 @@ function createTypeChecker(host) {
68722
68738
  if (!hasPrivateModifier && !hasPrivateIdentifier) {
68723
68739
  return;
68724
68740
  }
68725
- if (nodeForCheckWriteOnly && isWriteOnlyAccess(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
68741
+ if (nodeForCheckWriteOnly && isWriteOnlyUsage(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
68726
68742
  return;
68727
68743
  }
68728
68744
  if (isSelfTypeAccess2) {
@@ -73036,6 +73052,16 @@ function createTypeChecker(host) {
73036
73052
  addLazyDiagnostic(checkAssignmentOperatorWorker);
73037
73053
  }
73038
73054
  function checkAssignmentOperatorWorker() {
73055
+ let assigneeType = leftType;
73056
+ if (isCompoundAssignment(operatorToken.kind) && left.kind === 208 /* PropertyAccessExpression */) {
73057
+ assigneeType = checkPropertyAccessExpression(
73058
+ left,
73059
+ /*checkMode*/
73060
+ void 0,
73061
+ /*writeOnly*/
73062
+ true
73063
+ );
73064
+ }
73039
73065
  if (checkReferenceExpression(
73040
73066
  left,
73041
73067
  Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,
@@ -73048,7 +73074,7 @@ function createTypeChecker(host) {
73048
73074
  headMessage = Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target;
73049
73075
  }
73050
73076
  }
73051
- checkTypeAssignableToAndOptionallyElaborate(valueType, leftType, left, right, headMessage);
73077
+ checkTypeAssignableToAndOptionallyElaborate(valueType, assigneeType, left, right, headMessage);
73052
73078
  }
73053
73079
  }
73054
73080
  }
package/lib/tsserver.js CHANGED
@@ -1797,6 +1797,8 @@ __export(server_exports, {
1797
1797
  isWithStatement: () => isWithStatement,
1798
1798
  isWriteAccess: () => isWriteAccess,
1799
1799
  isWriteOnlyAccess: () => isWriteOnlyAccess,
1800
+ isWriteOnlyUsage: () => isWriteOnlyUsage,
1801
+ isWriteUsage: () => isWriteUsage,
1800
1802
  isYieldExpression: () => isYieldExpression,
1801
1803
  jsxModeNeedsExplicitImport: () => jsxModeNeedsExplicitImport,
1802
1804
  keywordPart: () => keywordPart,
@@ -19652,20 +19654,39 @@ function isWriteOnlyAccess(node) {
19652
19654
  function isWriteAccess(node) {
19653
19655
  return accessKind(node) !== 0 /* Read */;
19654
19656
  }
19657
+ function isWriteOnlyUsage(node) {
19658
+ return accessKindForUsageChecks(node) === 1 /* Write */;
19659
+ }
19660
+ function isWriteUsage(node) {
19661
+ return accessKindForUsageChecks(node) !== 0 /* Read */;
19662
+ }
19663
+ function accessKindForUsageChecks(node) {
19664
+ const kind = accessKind(node);
19665
+ const { parent: parent2 } = node;
19666
+ switch (parent2 == null ? void 0 : parent2.kind) {
19667
+ case 222 /* PostfixUnaryExpression */:
19668
+ case 221 /* PrefixUnaryExpression */:
19669
+ case 223 /* BinaryExpression */:
19670
+ return kind === 2 /* ReadWrite */ ? writeOrReadWrite() : kind;
19671
+ default:
19672
+ return kind;
19673
+ }
19674
+ function writeOrReadWrite() {
19675
+ return parent2.parent && walkUpParenthesizedExpressions(parent2.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
19676
+ }
19677
+ }
19655
19678
  function accessKind(node) {
19656
19679
  const { parent: parent2 } = node;
19657
- if (!parent2)
19658
- return 0 /* Read */;
19659
- switch (parent2.kind) {
19680
+ switch (parent2 == null ? void 0 : parent2.kind) {
19660
19681
  case 214 /* ParenthesizedExpression */:
19661
19682
  return accessKind(parent2);
19662
19683
  case 222 /* PostfixUnaryExpression */:
19663
19684
  case 221 /* PrefixUnaryExpression */:
19664
19685
  const { operator } = parent2;
19665
- return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? writeOrReadWrite() : 0 /* Read */;
19686
+ return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? 2 /* ReadWrite */ : 0 /* Read */;
19666
19687
  case 223 /* BinaryExpression */:
19667
19688
  const { left, operatorToken } = parent2;
19668
- return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : writeOrReadWrite() : 0 /* Read */;
19689
+ return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : 2 /* ReadWrite */ : 0 /* Read */;
19669
19690
  case 208 /* PropertyAccessExpression */:
19670
19691
  return parent2.name !== node ? 0 /* Read */ : accessKind(parent2);
19671
19692
  case 299 /* PropertyAssignment */: {
@@ -19679,9 +19700,6 @@ function accessKind(node) {
19679
19700
  default:
19680
19701
  return 0 /* Read */;
19681
19702
  }
19682
- function writeOrReadWrite() {
19683
- return parent2.parent && walkUpParenthesizedExpressions(parent2.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
19684
- }
19685
19703
  }
19686
19704
  function reverseAccessKind(a) {
19687
19705
  switch (a) {
@@ -33931,9 +33949,13 @@ var Parser;
33931
33949
  function parseJsxClosingFragment(inExpressionContext) {
33932
33950
  const pos = getNodePos();
33933
33951
  parseExpected(30 /* LessThanSlashToken */);
33952
+ if (tokenIsIdentifierOrKeyword(token())) {
33953
+ parseErrorAtRange(parseJsxElementName(), Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment);
33954
+ }
33934
33955
  if (parseExpected(
33935
33956
  31 /* GreaterThanToken */,
33936
- Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment,
33957
+ /*diagnostic*/
33958
+ void 0,
33937
33959
  /*shouldAdvance*/
33938
33960
  false
33939
33961
  )) {
@@ -67958,7 +67980,7 @@ function createTypeChecker(host) {
67958
67980
  111551 /* Value */ | 1048576 /* ExportValue */,
67959
67981
  getCannotFindNameDiagnosticForName(node),
67960
67982
  node,
67961
- !isWriteOnlyAccess(node),
67983
+ !isWriteOnlyUsage(node),
67962
67984
  /*excludeGlobals*/
67963
67985
  false
67964
67986
  ) || unknownSymbol;
@@ -72776,8 +72798,8 @@ function createTypeChecker(host) {
72776
72798
  }
72777
72799
  return nonNullType;
72778
72800
  }
72779
- function checkPropertyAccessExpression(node, checkMode) {
72780
- return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode);
72801
+ function checkPropertyAccessExpression(node, checkMode, writeOnly) {
72802
+ return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode, writeOnly);
72781
72803
  }
72782
72804
  function checkPropertyAccessChain(node, checkMode) {
72783
72805
  const leftType = checkExpression(node.expression);
@@ -72908,7 +72930,7 @@ function createTypeChecker(host) {
72908
72930
  false
72909
72931
  ) === getDeclaringConstructor(prop);
72910
72932
  }
72911
- function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode) {
72933
+ function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode, writeOnly) {
72912
72934
  const parentSymbol = getNodeLinks(left).resolvedSymbol;
72913
72935
  const assignmentKind = getAssignmentTargetKind(node);
72914
72936
  const apparentType = getApparentType(assignmentKind !== 0 /* None */ || isMethodAccessForCall(node) ? getWidenedType(leftType) : leftType);
@@ -73007,13 +73029,12 @@ function createTypeChecker(host) {
73007
73029
  checkPropertyNotUsedBeforeDeclaration(prop, node, right);
73008
73030
  markPropertyAsReferenced(prop, node, isSelfTypeAccess(left, parentSymbol));
73009
73031
  getNodeLinks(node).resolvedSymbol = prop;
73010
- const writing = isWriteAccess(node);
73011
- checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, writing, apparentType, prop);
73032
+ checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, isWriteAccess(node), apparentType, prop);
73012
73033
  if (isAssignmentToReadonlyEntity(node, prop, assignmentKind)) {
73013
73034
  error(right, Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, idText(right));
73014
73035
  return errorType;
73015
73036
  }
73016
- propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writing ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
73037
+ propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writeOnly || isWriteOnlyAccess(node) ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
73017
73038
  }
73018
73039
  return getFlowTypeOfAccessExpression(node, prop, propType, right, checkMode);
73019
73040
  }
@@ -73329,7 +73350,7 @@ function createTypeChecker(host) {
73329
73350
  if (!hasPrivateModifier && !hasPrivateIdentifier) {
73330
73351
  return;
73331
73352
  }
73332
- if (nodeForCheckWriteOnly && isWriteOnlyAccess(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
73353
+ if (nodeForCheckWriteOnly && isWriteOnlyUsage(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
73333
73354
  return;
73334
73355
  }
73335
73356
  if (isSelfTypeAccess2) {
@@ -77643,6 +77664,16 @@ function createTypeChecker(host) {
77643
77664
  addLazyDiagnostic(checkAssignmentOperatorWorker);
77644
77665
  }
77645
77666
  function checkAssignmentOperatorWorker() {
77667
+ let assigneeType = leftType;
77668
+ if (isCompoundAssignment(operatorToken.kind) && left.kind === 208 /* PropertyAccessExpression */) {
77669
+ assigneeType = checkPropertyAccessExpression(
77670
+ left,
77671
+ /*checkMode*/
77672
+ void 0,
77673
+ /*writeOnly*/
77674
+ true
77675
+ );
77676
+ }
77646
77677
  if (checkReferenceExpression(
77647
77678
  left,
77648
77679
  Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,
@@ -77655,7 +77686,7 @@ function createTypeChecker(host) {
77655
77686
  headMessage = Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target;
77656
77687
  }
77657
77688
  }
77658
- checkTypeAssignableToAndOptionallyElaborate(valueType, leftType, left, right, headMessage);
77689
+ checkTypeAssignableToAndOptionallyElaborate(valueType, assigneeType, left, right, headMessage);
77659
77690
  }
77660
77691
  }
77661
77692
  }
@@ -166453,7 +166484,7 @@ function formatSpanWorker(originalRange, enclosingNode, initialIndentation, delt
166453
166484
  }
166454
166485
  function processChildNode(child, inheritedIndentation, parent2, parentDynamicIndentation, parentStartLine, undecoratedParentStartLine, isListItem, isFirstListItem) {
166455
166486
  Debug.assert(!nodeIsSynthesized(child));
166456
- if (nodeIsMissing(child)) {
166487
+ if (nodeIsMissing(child) || isGrammarError(parent2, child)) {
166457
166488
  return inheritedIndentation;
166458
166489
  }
166459
166490
  const childStartPos = child.getStart(sourceFile);
@@ -166496,7 +166527,7 @@ function formatSpanWorker(originalRange, enclosingNode, initialIndentation, delt
166496
166527
  }
166497
166528
  if (isToken(child)) {
166498
166529
  const tokenInfo = formattingScanner.readTokenInfo(child);
166499
- if (child.kind !== 11 /* JsxText */ && !isGrammarError(parent2, child)) {
166530
+ if (child.kind !== 11 /* JsxText */) {
166500
166531
  Debug.assert(tokenInfo.token.end === child.end, "Token end is child end");
166501
166532
  consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child);
166502
166533
  return inheritedIndentation;
@@ -169312,6 +169343,8 @@ __export(ts_exports3, {
169312
169343
  isWithStatement: () => isWithStatement,
169313
169344
  isWriteAccess: () => isWriteAccess,
169314
169345
  isWriteOnlyAccess: () => isWriteOnlyAccess,
169346
+ isWriteOnlyUsage: () => isWriteOnlyUsage,
169347
+ isWriteUsage: () => isWriteUsage,
169315
169348
  isYieldExpression: () => isYieldExpression,
169316
169349
  jsxModeNeedsExplicitImport: () => jsxModeNeedsExplicitImport,
169317
169350
  keywordPart: () => keywordPart,
@@ -183262,6 +183295,8 @@ start(initializeNodeSystem(), require("os").platform());
183262
183295
  isWithStatement,
183263
183296
  isWriteAccess,
183264
183297
  isWriteOnlyAccess,
183298
+ isWriteOnlyUsage,
183299
+ isWriteUsage,
183265
183300
  isYieldExpression,
183266
183301
  jsxModeNeedsExplicitImport,
183267
183302
  keywordPart,
@@ -17391,20 +17391,39 @@ ${lanes.join("\n")}
17391
17391
  function isWriteAccess(node) {
17392
17392
  return accessKind(node) !== 0 /* Read */;
17393
17393
  }
17394
+ function isWriteOnlyUsage(node) {
17395
+ return accessKindForUsageChecks(node) === 1 /* Write */;
17396
+ }
17397
+ function isWriteUsage(node) {
17398
+ return accessKindForUsageChecks(node) !== 0 /* Read */;
17399
+ }
17400
+ function accessKindForUsageChecks(node) {
17401
+ const kind = accessKind(node);
17402
+ const { parent: parent2 } = node;
17403
+ switch (parent2 == null ? void 0 : parent2.kind) {
17404
+ case 222 /* PostfixUnaryExpression */:
17405
+ case 221 /* PrefixUnaryExpression */:
17406
+ case 223 /* BinaryExpression */:
17407
+ return kind === 2 /* ReadWrite */ ? writeOrReadWrite() : kind;
17408
+ default:
17409
+ return kind;
17410
+ }
17411
+ function writeOrReadWrite() {
17412
+ return parent2.parent && walkUpParenthesizedExpressions(parent2.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
17413
+ }
17414
+ }
17394
17415
  function accessKind(node) {
17395
17416
  const { parent: parent2 } = node;
17396
- if (!parent2)
17397
- return 0 /* Read */;
17398
- switch (parent2.kind) {
17417
+ switch (parent2 == null ? void 0 : parent2.kind) {
17399
17418
  case 214 /* ParenthesizedExpression */:
17400
17419
  return accessKind(parent2);
17401
17420
  case 222 /* PostfixUnaryExpression */:
17402
17421
  case 221 /* PrefixUnaryExpression */:
17403
17422
  const { operator } = parent2;
17404
- return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? writeOrReadWrite() : 0 /* Read */;
17423
+ return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? 2 /* ReadWrite */ : 0 /* Read */;
17405
17424
  case 223 /* BinaryExpression */:
17406
17425
  const { left, operatorToken } = parent2;
17407
- return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : writeOrReadWrite() : 0 /* Read */;
17426
+ return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : 2 /* ReadWrite */ : 0 /* Read */;
17408
17427
  case 208 /* PropertyAccessExpression */:
17409
17428
  return parent2.name !== node ? 0 /* Read */ : accessKind(parent2);
17410
17429
  case 299 /* PropertyAssignment */: {
@@ -17418,9 +17437,6 @@ ${lanes.join("\n")}
17418
17437
  default:
17419
17438
  return 0 /* Read */;
17420
17439
  }
17421
- function writeOrReadWrite() {
17422
- return parent2.parent && walkUpParenthesizedExpressions(parent2.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
17423
- }
17424
17440
  }
17425
17441
  function reverseAccessKind(a) {
17426
17442
  switch (a) {
@@ -32041,9 +32057,13 @@ ${lanes.join("\n")}
32041
32057
  function parseJsxClosingFragment(inExpressionContext) {
32042
32058
  const pos = getNodePos();
32043
32059
  parseExpected(30 /* LessThanSlashToken */);
32060
+ if (tokenIsIdentifierOrKeyword(token())) {
32061
+ parseErrorAtRange(parseJsxElementName(), Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment);
32062
+ }
32044
32063
  if (parseExpected(
32045
32064
  31 /* GreaterThanToken */,
32046
- Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment,
32065
+ /*diagnostic*/
32066
+ void 0,
32047
32067
  /*shouldAdvance*/
32048
32068
  false
32049
32069
  )) {
@@ -65766,7 +65786,7 @@ ${lanes.join("\n")}
65766
65786
  111551 /* Value */ | 1048576 /* ExportValue */,
65767
65787
  getCannotFindNameDiagnosticForName(node),
65768
65788
  node,
65769
- !isWriteOnlyAccess(node),
65789
+ !isWriteOnlyUsage(node),
65770
65790
  /*excludeGlobals*/
65771
65791
  false
65772
65792
  ) || unknownSymbol;
@@ -70584,8 +70604,8 @@ ${lanes.join("\n")}
70584
70604
  }
70585
70605
  return nonNullType;
70586
70606
  }
70587
- function checkPropertyAccessExpression(node, checkMode) {
70588
- return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode);
70607
+ function checkPropertyAccessExpression(node, checkMode, writeOnly) {
70608
+ return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode, writeOnly);
70589
70609
  }
70590
70610
  function checkPropertyAccessChain(node, checkMode) {
70591
70611
  const leftType = checkExpression(node.expression);
@@ -70716,7 +70736,7 @@ ${lanes.join("\n")}
70716
70736
  false
70717
70737
  ) === getDeclaringConstructor(prop);
70718
70738
  }
70719
- function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode) {
70739
+ function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode, writeOnly) {
70720
70740
  const parentSymbol = getNodeLinks(left).resolvedSymbol;
70721
70741
  const assignmentKind = getAssignmentTargetKind(node);
70722
70742
  const apparentType = getApparentType(assignmentKind !== 0 /* None */ || isMethodAccessForCall(node) ? getWidenedType(leftType) : leftType);
@@ -70815,13 +70835,12 @@ ${lanes.join("\n")}
70815
70835
  checkPropertyNotUsedBeforeDeclaration(prop, node, right);
70816
70836
  markPropertyAsReferenced(prop, node, isSelfTypeAccess(left, parentSymbol));
70817
70837
  getNodeLinks(node).resolvedSymbol = prop;
70818
- const writing = isWriteAccess(node);
70819
- checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, writing, apparentType, prop);
70838
+ checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, isWriteAccess(node), apparentType, prop);
70820
70839
  if (isAssignmentToReadonlyEntity(node, prop, assignmentKind)) {
70821
70840
  error(right, Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, idText(right));
70822
70841
  return errorType;
70823
70842
  }
70824
- propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writing ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
70843
+ propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writeOnly || isWriteOnlyAccess(node) ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
70825
70844
  }
70826
70845
  return getFlowTypeOfAccessExpression(node, prop, propType, right, checkMode);
70827
70846
  }
@@ -71137,7 +71156,7 @@ ${lanes.join("\n")}
71137
71156
  if (!hasPrivateModifier && !hasPrivateIdentifier) {
71138
71157
  return;
71139
71158
  }
71140
- if (nodeForCheckWriteOnly && isWriteOnlyAccess(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
71159
+ if (nodeForCheckWriteOnly && isWriteOnlyUsage(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
71141
71160
  return;
71142
71161
  }
71143
71162
  if (isSelfTypeAccess2) {
@@ -75451,6 +75470,16 @@ ${lanes.join("\n")}
75451
75470
  addLazyDiagnostic(checkAssignmentOperatorWorker);
75452
75471
  }
75453
75472
  function checkAssignmentOperatorWorker() {
75473
+ let assigneeType = leftType;
75474
+ if (isCompoundAssignment(operatorToken.kind) && left.kind === 208 /* PropertyAccessExpression */) {
75475
+ assigneeType = checkPropertyAccessExpression(
75476
+ left,
75477
+ /*checkMode*/
75478
+ void 0,
75479
+ /*writeOnly*/
75480
+ true
75481
+ );
75482
+ }
75454
75483
  if (checkReferenceExpression(
75455
75484
  left,
75456
75485
  Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,
@@ -75463,7 +75492,7 @@ ${lanes.join("\n")}
75463
75492
  headMessage = Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target;
75464
75493
  }
75465
75494
  }
75466
- checkTypeAssignableToAndOptionallyElaborate(valueType, leftType, left, right, headMessage);
75495
+ checkTypeAssignableToAndOptionallyElaborate(valueType, assigneeType, left, right, headMessage);
75467
75496
  }
75468
75497
  }
75469
75498
  }
@@ -165943,7 +165972,7 @@ ${options.prefix}` : "\n" : options.prefix
165943
165972
  }
165944
165973
  function processChildNode(child, inheritedIndentation, parent2, parentDynamicIndentation, parentStartLine, undecoratedParentStartLine, isListItem, isFirstListItem) {
165945
165974
  Debug.assert(!nodeIsSynthesized(child));
165946
- if (nodeIsMissing(child)) {
165975
+ if (nodeIsMissing(child) || isGrammarError(parent2, child)) {
165947
165976
  return inheritedIndentation;
165948
165977
  }
165949
165978
  const childStartPos = child.getStart(sourceFile);
@@ -165986,7 +166015,7 @@ ${options.prefix}` : "\n" : options.prefix
165986
166015
  }
165987
166016
  if (isToken(child)) {
165988
166017
  const tokenInfo = formattingScanner.readTokenInfo(child);
165989
- if (child.kind !== 11 /* JsxText */ && !isGrammarError(parent2, child)) {
166018
+ if (child.kind !== 11 /* JsxText */) {
165990
166019
  Debug.assert(tokenInfo.token.end === child.end, "Token end is child end");
165991
166020
  consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child);
165992
166021
  return inheritedIndentation;
@@ -179898,6 +179927,8 @@ ${e.message}`;
179898
179927
  isWithStatement: () => isWithStatement,
179899
179928
  isWriteAccess: () => isWriteAccess,
179900
179929
  isWriteOnlyAccess: () => isWriteOnlyAccess,
179930
+ isWriteOnlyUsage: () => isWriteOnlyUsage,
179931
+ isWriteUsage: () => isWriteUsage,
179901
179932
  isYieldExpression: () => isYieldExpression,
179902
179933
  jsxModeNeedsExplicitImport: () => jsxModeNeedsExplicitImport,
179903
179934
  keywordPart: () => keywordPart,
@@ -182258,6 +182289,8 @@ ${e.message}`;
182258
182289
  isWithStatement: () => isWithStatement,
182259
182290
  isWriteAccess: () => isWriteAccess,
182260
182291
  isWriteOnlyAccess: () => isWriteOnlyAccess,
182292
+ isWriteOnlyUsage: () => isWriteOnlyUsage,
182293
+ isWriteUsage: () => isWriteUsage,
182261
182294
  isYieldExpression: () => isYieldExpression,
182262
182295
  jsxModeNeedsExplicitImport: () => jsxModeNeedsExplicitImport,
182263
182296
  keywordPart: () => keywordPart,
package/lib/typescript.js CHANGED
@@ -17391,20 +17391,39 @@ ${lanes.join("\n")}
17391
17391
  function isWriteAccess(node) {
17392
17392
  return accessKind(node) !== 0 /* Read */;
17393
17393
  }
17394
+ function isWriteOnlyUsage(node) {
17395
+ return accessKindForUsageChecks(node) === 1 /* Write */;
17396
+ }
17397
+ function isWriteUsage(node) {
17398
+ return accessKindForUsageChecks(node) !== 0 /* Read */;
17399
+ }
17400
+ function accessKindForUsageChecks(node) {
17401
+ const kind = accessKind(node);
17402
+ const { parent: parent2 } = node;
17403
+ switch (parent2 == null ? void 0 : parent2.kind) {
17404
+ case 222 /* PostfixUnaryExpression */:
17405
+ case 221 /* PrefixUnaryExpression */:
17406
+ case 223 /* BinaryExpression */:
17407
+ return kind === 2 /* ReadWrite */ ? writeOrReadWrite() : kind;
17408
+ default:
17409
+ return kind;
17410
+ }
17411
+ function writeOrReadWrite() {
17412
+ return parent2.parent && walkUpParenthesizedExpressions(parent2.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
17413
+ }
17414
+ }
17394
17415
  function accessKind(node) {
17395
17416
  const { parent: parent2 } = node;
17396
- if (!parent2)
17397
- return 0 /* Read */;
17398
- switch (parent2.kind) {
17417
+ switch (parent2 == null ? void 0 : parent2.kind) {
17399
17418
  case 214 /* ParenthesizedExpression */:
17400
17419
  return accessKind(parent2);
17401
17420
  case 222 /* PostfixUnaryExpression */:
17402
17421
  case 221 /* PrefixUnaryExpression */:
17403
17422
  const { operator } = parent2;
17404
- return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? writeOrReadWrite() : 0 /* Read */;
17423
+ return operator === 45 /* PlusPlusToken */ || operator === 46 /* MinusMinusToken */ ? 2 /* ReadWrite */ : 0 /* Read */;
17405
17424
  case 223 /* BinaryExpression */:
17406
17425
  const { left, operatorToken } = parent2;
17407
- return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : writeOrReadWrite() : 0 /* Read */;
17426
+ return left === node && isAssignmentOperator(operatorToken.kind) ? operatorToken.kind === 63 /* EqualsToken */ ? 1 /* Write */ : 2 /* ReadWrite */ : 0 /* Read */;
17408
17427
  case 208 /* PropertyAccessExpression */:
17409
17428
  return parent2.name !== node ? 0 /* Read */ : accessKind(parent2);
17410
17429
  case 299 /* PropertyAssignment */: {
@@ -17418,9 +17437,6 @@ ${lanes.join("\n")}
17418
17437
  default:
17419
17438
  return 0 /* Read */;
17420
17439
  }
17421
- function writeOrReadWrite() {
17422
- return parent2.parent && walkUpParenthesizedExpressions(parent2.parent).kind === 241 /* ExpressionStatement */ ? 1 /* Write */ : 2 /* ReadWrite */;
17423
- }
17424
17440
  }
17425
17441
  function reverseAccessKind(a) {
17426
17442
  switch (a) {
@@ -32041,9 +32057,13 @@ ${lanes.join("\n")}
32041
32057
  function parseJsxClosingFragment(inExpressionContext) {
32042
32058
  const pos = getNodePos();
32043
32059
  parseExpected(30 /* LessThanSlashToken */);
32060
+ if (tokenIsIdentifierOrKeyword(token())) {
32061
+ parseErrorAtRange(parseJsxElementName(), Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment);
32062
+ }
32044
32063
  if (parseExpected(
32045
32064
  31 /* GreaterThanToken */,
32046
- Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment,
32065
+ /*diagnostic*/
32066
+ void 0,
32047
32067
  /*shouldAdvance*/
32048
32068
  false
32049
32069
  )) {
@@ -65766,7 +65786,7 @@ ${lanes.join("\n")}
65766
65786
  111551 /* Value */ | 1048576 /* ExportValue */,
65767
65787
  getCannotFindNameDiagnosticForName(node),
65768
65788
  node,
65769
- !isWriteOnlyAccess(node),
65789
+ !isWriteOnlyUsage(node),
65770
65790
  /*excludeGlobals*/
65771
65791
  false
65772
65792
  ) || unknownSymbol;
@@ -70584,8 +70604,8 @@ ${lanes.join("\n")}
70584
70604
  }
70585
70605
  return nonNullType;
70586
70606
  }
70587
- function checkPropertyAccessExpression(node, checkMode) {
70588
- return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode);
70607
+ function checkPropertyAccessExpression(node, checkMode, writeOnly) {
70608
+ return node.flags & 32 /* OptionalChain */ ? checkPropertyAccessChain(node, checkMode) : checkPropertyAccessExpressionOrQualifiedName(node, node.expression, checkNonNullExpression(node.expression), node.name, checkMode, writeOnly);
70589
70609
  }
70590
70610
  function checkPropertyAccessChain(node, checkMode) {
70591
70611
  const leftType = checkExpression(node.expression);
@@ -70716,7 +70736,7 @@ ${lanes.join("\n")}
70716
70736
  false
70717
70737
  ) === getDeclaringConstructor(prop);
70718
70738
  }
70719
- function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode) {
70739
+ function checkPropertyAccessExpressionOrQualifiedName(node, left, leftType, right, checkMode, writeOnly) {
70720
70740
  const parentSymbol = getNodeLinks(left).resolvedSymbol;
70721
70741
  const assignmentKind = getAssignmentTargetKind(node);
70722
70742
  const apparentType = getApparentType(assignmentKind !== 0 /* None */ || isMethodAccessForCall(node) ? getWidenedType(leftType) : leftType);
@@ -70815,13 +70835,12 @@ ${lanes.join("\n")}
70815
70835
  checkPropertyNotUsedBeforeDeclaration(prop, node, right);
70816
70836
  markPropertyAsReferenced(prop, node, isSelfTypeAccess(left, parentSymbol));
70817
70837
  getNodeLinks(node).resolvedSymbol = prop;
70818
- const writing = isWriteAccess(node);
70819
- checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, writing, apparentType, prop);
70838
+ checkPropertyAccessibility(node, left.kind === 106 /* SuperKeyword */, isWriteAccess(node), apparentType, prop);
70820
70839
  if (isAssignmentToReadonlyEntity(node, prop, assignmentKind)) {
70821
70840
  error(right, Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property, idText(right));
70822
70841
  return errorType;
70823
70842
  }
70824
- propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writing ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
70843
+ propType = isThisPropertyAccessInConstructor(node, prop) ? autoType : writeOnly || isWriteOnlyAccess(node) ? getWriteTypeOfSymbol(prop) : getTypeOfSymbol(prop);
70825
70844
  }
70826
70845
  return getFlowTypeOfAccessExpression(node, prop, propType, right, checkMode);
70827
70846
  }
@@ -71137,7 +71156,7 @@ ${lanes.join("\n")}
71137
71156
  if (!hasPrivateModifier && !hasPrivateIdentifier) {
71138
71157
  return;
71139
71158
  }
71140
- if (nodeForCheckWriteOnly && isWriteOnlyAccess(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
71159
+ if (nodeForCheckWriteOnly && isWriteOnlyUsage(nodeForCheckWriteOnly) && !(prop.flags & 65536 /* SetAccessor */)) {
71141
71160
  return;
71142
71161
  }
71143
71162
  if (isSelfTypeAccess2) {
@@ -75451,6 +75470,16 @@ ${lanes.join("\n")}
75451
75470
  addLazyDiagnostic(checkAssignmentOperatorWorker);
75452
75471
  }
75453
75472
  function checkAssignmentOperatorWorker() {
75473
+ let assigneeType = leftType;
75474
+ if (isCompoundAssignment(operatorToken.kind) && left.kind === 208 /* PropertyAccessExpression */) {
75475
+ assigneeType = checkPropertyAccessExpression(
75476
+ left,
75477
+ /*checkMode*/
75478
+ void 0,
75479
+ /*writeOnly*/
75480
+ true
75481
+ );
75482
+ }
75454
75483
  if (checkReferenceExpression(
75455
75484
  left,
75456
75485
  Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,
@@ -75463,7 +75492,7 @@ ${lanes.join("\n")}
75463
75492
  headMessage = Diagnostics.Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefined_to_the_type_of_the_target;
75464
75493
  }
75465
75494
  }
75466
- checkTypeAssignableToAndOptionallyElaborate(valueType, leftType, left, right, headMessage);
75495
+ checkTypeAssignableToAndOptionallyElaborate(valueType, assigneeType, left, right, headMessage);
75467
75496
  }
75468
75497
  }
75469
75498
  }
@@ -165957,7 +165986,7 @@ ${options.prefix}` : "\n" : options.prefix
165957
165986
  }
165958
165987
  function processChildNode(child, inheritedIndentation, parent2, parentDynamicIndentation, parentStartLine, undecoratedParentStartLine, isListItem, isFirstListItem) {
165959
165988
  Debug.assert(!nodeIsSynthesized(child));
165960
- if (nodeIsMissing(child)) {
165989
+ if (nodeIsMissing(child) || isGrammarError(parent2, child)) {
165961
165990
  return inheritedIndentation;
165962
165991
  }
165963
165992
  const childStartPos = child.getStart(sourceFile);
@@ -166000,7 +166029,7 @@ ${options.prefix}` : "\n" : options.prefix
166000
166029
  }
166001
166030
  if (isToken(child)) {
166002
166031
  const tokenInfo = formattingScanner.readTokenInfo(child);
166003
- if (child.kind !== 11 /* JsxText */ && !isGrammarError(parent2, child)) {
166032
+ if (child.kind !== 11 /* JsxText */) {
166004
166033
  Debug.assert(tokenInfo.token.end === child.end, "Token end is child end");
166005
166034
  consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child);
166006
166035
  return inheritedIndentation;
@@ -169079,6 +169108,8 @@ ${options.prefix}` : "\n" : options.prefix
169079
169108
  isWithStatement: () => isWithStatement,
169080
169109
  isWriteAccess: () => isWriteAccess,
169081
169110
  isWriteOnlyAccess: () => isWriteOnlyAccess,
169111
+ isWriteOnlyUsage: () => isWriteOnlyUsage,
169112
+ isWriteUsage: () => isWriteUsage,
169082
169113
  isYieldExpression: () => isYieldExpression,
169083
169114
  jsxModeNeedsExplicitImport: () => jsxModeNeedsExplicitImport,
169084
169115
  keywordPart: () => keywordPart,
@@ -22429,9 +22429,13 @@ var Parser;
22429
22429
  function parseJsxClosingFragment(inExpressionContext) {
22430
22430
  const pos = getNodePos();
22431
22431
  parseExpected(30 /* LessThanSlashToken */);
22432
+ if (tokenIsIdentifierOrKeyword(token())) {
22433
+ parseErrorAtRange(parseJsxElementName(), Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment);
22434
+ }
22432
22435
  if (parseExpected(
22433
22436
  31 /* GreaterThanToken */,
22434
- Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment,
22437
+ /*diagnostic*/
22438
+ void 0,
22435
22439
  /*shouldAdvance*/
22436
22440
  false
22437
22441
  )) {
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.0.0-pr-52818-5",
5
+ "version": "5.0.0-pr-50431-13",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [