typescript 4.7.0-dev.20220315 → 4.7.0-dev.20220316

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.
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20220315";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220316";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -8228,7 +8228,7 @@ var ts;
8228
8228
  Identifier_expected: diag(1003, ts.DiagnosticCategory.Error, "Identifier_expected_1003", "Identifier expected."),
8229
8229
  _0_expected: diag(1005, ts.DiagnosticCategory.Error, "_0_expected_1005", "'{0}' expected."),
8230
8230
  A_file_cannot_have_a_reference_to_itself: diag(1006, ts.DiagnosticCategory.Error, "A_file_cannot_have_a_reference_to_itself_1006", "A file cannot have a reference to itself."),
8231
- The_parser_expected_to_find_a_to_match_the_token_here: diag(1007, ts.DiagnosticCategory.Error, "The_parser_expected_to_find_a_to_match_the_token_here_1007", "The parser expected to find a '}' to match the '{' token here."),
8231
+ The_parser_expected_to_find_a_1_to_match_the_0_token_here: diag(1007, ts.DiagnosticCategory.Error, "The_parser_expected_to_find_a_1_to_match_the_0_token_here_1007", "The parser expected to find a '{1}' to match the '{0}' token here."),
8232
8232
  Trailing_comma_not_allowed: diag(1009, ts.DiagnosticCategory.Error, "Trailing_comma_not_allowed_1009", "Trailing comma not allowed."),
8233
8233
  Asterisk_Slash_expected: diag(1010, ts.DiagnosticCategory.Error, "Asterisk_Slash_expected_1010", "'*/' expected."),
8234
8234
  An_element_access_expression_should_take_an_argument: diag(1011, ts.DiagnosticCategory.Error, "An_element_access_expression_should_take_an_argument_1011", "An element access expression should take an argument."),
@@ -31620,20 +31620,23 @@ var ts;
31620
31620
  return inContext(32768 /* AwaitContext */);
31621
31621
  }
31622
31622
  function parseErrorAtCurrentToken(message, arg0) {
31623
- parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
31623
+ return parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
31624
31624
  }
31625
31625
  function parseErrorAtPosition(start, length, message, arg0) {
31626
31626
  // Don't report another error if it would just be at the same position as the last error.
31627
31627
  var lastError = ts.lastOrUndefined(parseDiagnostics);
31628
+ var result;
31628
31629
  if (!lastError || start !== lastError.start) {
31629
- parseDiagnostics.push(ts.createDetachedDiagnostic(fileName, start, length, message, arg0));
31630
+ result = ts.createDetachedDiagnostic(fileName, start, length, message, arg0);
31631
+ parseDiagnostics.push(result);
31630
31632
  }
31631
31633
  // Mark that we've encountered an error. We'll set an appropriate bit on the next
31632
31634
  // node we finish so that it can't be reused incrementally.
31633
31635
  parseErrorBeforeNextFinishedNode = true;
31636
+ return result;
31634
31637
  }
31635
31638
  function parseErrorAt(start, end, message, arg0) {
31636
- parseErrorAtPosition(start, end - start, message, arg0);
31639
+ return parseErrorAtPosition(start, end - start, message, arg0);
31637
31640
  }
31638
31641
  function parseErrorAtRange(range, message, arg0) {
31639
31642
  parseErrorAt(range.pos, range.end, message, arg0);
@@ -31906,6 +31909,19 @@ var ts;
31906
31909
  parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(kind));
31907
31910
  return false;
31908
31911
  }
31912
+ function parseExpectedMatchingBrackets(openKind, closeKind, openParsed, openPosition) {
31913
+ if (token() === closeKind) {
31914
+ nextToken();
31915
+ return;
31916
+ }
31917
+ var lastError = parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(closeKind));
31918
+ if (!openParsed) {
31919
+ return;
31920
+ }
31921
+ if (lastError) {
31922
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openPosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, ts.tokenToString(openKind), ts.tokenToString(closeKind)));
31923
+ }
31924
+ }
31909
31925
  function parseOptional(t) {
31910
31926
  if (token() === t) {
31911
31927
  nextToken();
@@ -33554,7 +33570,7 @@ var ts;
33554
33570
  if (!parseExpected(19 /* CloseBraceToken */)) {
33555
33571
  var lastError = ts.lastOrUndefined(parseDiagnostics);
33556
33572
  if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
33557
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
33573
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}"));
33558
33574
  }
33559
33575
  }
33560
33576
  return finishNode(factory.createImportTypeAssertionContainer(clause, multiLine), pos);
@@ -35364,10 +35380,11 @@ var ts;
35364
35380
  }
35365
35381
  function parseArrayLiteralExpression() {
35366
35382
  var pos = getNodePos();
35367
- parseExpected(22 /* OpenBracketToken */);
35383
+ var openBracketPosition = scanner.getTokenPos();
35384
+ var openBracketParsed = parseExpected(22 /* OpenBracketToken */);
35368
35385
  var multiLine = scanner.hasPrecedingLineBreak();
35369
35386
  var elements = parseDelimitedList(15 /* ArrayLiteralMembers */, parseArgumentOrArrayLiteralElement);
35370
- parseExpected(23 /* CloseBracketToken */);
35387
+ parseExpectedMatchingBrackets(22 /* OpenBracketToken */, 23 /* CloseBracketToken */, openBracketParsed, openBracketPosition);
35371
35388
  return finishNode(factory.createArrayLiteralExpression(elements, multiLine), pos);
35372
35389
  }
35373
35390
  function parseObjectLiteralElement() {
@@ -35424,15 +35441,10 @@ var ts;
35424
35441
  function parseObjectLiteralExpression() {
35425
35442
  var pos = getNodePos();
35426
35443
  var openBracePosition = scanner.getTokenPos();
35427
- parseExpected(18 /* OpenBraceToken */);
35444
+ var openBraceParsed = parseExpected(18 /* OpenBraceToken */);
35428
35445
  var multiLine = scanner.hasPrecedingLineBreak();
35429
35446
  var properties = parseDelimitedList(12 /* ObjectLiteralMembers */, parseObjectLiteralElement, /*considerSemicolonAsDelimiter*/ true);
35430
- if (!parseExpected(19 /* CloseBraceToken */)) {
35431
- var lastError = ts.lastOrUndefined(parseDiagnostics);
35432
- if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
35433
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
35434
- }
35435
- }
35447
+ parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBraceParsed, openBracePosition);
35436
35448
  return finishNode(factory.createObjectLiteralExpression(properties, multiLine), pos);
35437
35449
  }
35438
35450
  function parseFunctionExpression() {
@@ -35488,15 +35500,11 @@ var ts;
35488
35500
  var pos = getNodePos();
35489
35501
  var hasJSDoc = hasPrecedingJSDocComment();
35490
35502
  var openBracePosition = scanner.getTokenPos();
35491
- if (parseExpected(18 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) {
35503
+ var openBraceParsed = parseExpected(18 /* OpenBraceToken */, diagnosticMessage);
35504
+ if (openBraceParsed || ignoreMissingOpenBrace) {
35492
35505
  var multiLine = scanner.hasPrecedingLineBreak();
35493
35506
  var statements = parseList(1 /* BlockStatements */, parseStatement);
35494
- if (!parseExpected(19 /* CloseBraceToken */)) {
35495
- var lastError = ts.lastOrUndefined(parseDiagnostics);
35496
- if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
35497
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
35498
- }
35499
- }
35507
+ parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBraceParsed, openBracePosition);
35500
35508
  var result = withJSDoc(finishNode(factory.createBlock(statements, multiLine), pos), hasJSDoc);
35501
35509
  if (token() === 63 /* EqualsToken */) {
35502
35510
  parseErrorAtCurrentToken(ts.Diagnostics.Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_the_whole_assignment_in_parentheses);
@@ -35541,9 +35549,10 @@ var ts;
35541
35549
  var pos = getNodePos();
35542
35550
  var hasJSDoc = hasPrecedingJSDocComment();
35543
35551
  parseExpected(99 /* IfKeyword */);
35544
- parseExpected(20 /* OpenParenToken */);
35552
+ var openParenPosition = scanner.getTokenPos();
35553
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35545
35554
  var expression = allowInAnd(parseExpression);
35546
- parseExpected(21 /* CloseParenToken */);
35555
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35547
35556
  var thenStatement = parseStatement();
35548
35557
  var elseStatement = parseOptional(91 /* ElseKeyword */) ? parseStatement() : undefined;
35549
35558
  return withJSDoc(finishNode(factory.createIfStatement(expression, thenStatement, elseStatement), pos), hasJSDoc);
@@ -35554,9 +35563,10 @@ var ts;
35554
35563
  parseExpected(90 /* DoKeyword */);
35555
35564
  var statement = parseStatement();
35556
35565
  parseExpected(115 /* WhileKeyword */);
35557
- parseExpected(20 /* OpenParenToken */);
35566
+ var openParenPosition = scanner.getTokenPos();
35567
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35558
35568
  var expression = allowInAnd(parseExpression);
35559
- parseExpected(21 /* CloseParenToken */);
35569
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35560
35570
  // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
35561
35571
  // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
35562
35572
  // spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby
@@ -35568,9 +35578,10 @@ var ts;
35568
35578
  var pos = getNodePos();
35569
35579
  var hasJSDoc = hasPrecedingJSDocComment();
35570
35580
  parseExpected(115 /* WhileKeyword */);
35571
- parseExpected(20 /* OpenParenToken */);
35581
+ var openParenPosition = scanner.getTokenPos();
35582
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35572
35583
  var expression = allowInAnd(parseExpression);
35573
- parseExpected(21 /* CloseParenToken */);
35584
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35574
35585
  var statement = parseStatement();
35575
35586
  return withJSDoc(finishNode(factory.createWhileStatement(expression, statement), pos), hasJSDoc);
35576
35587
  }
@@ -35637,9 +35648,10 @@ var ts;
35637
35648
  var pos = getNodePos();
35638
35649
  var hasJSDoc = hasPrecedingJSDocComment();
35639
35650
  parseExpected(116 /* WithKeyword */);
35640
- parseExpected(20 /* OpenParenToken */);
35651
+ var openParenPosition = scanner.getTokenPos();
35652
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35641
35653
  var expression = allowInAnd(parseExpression);
35642
- parseExpected(21 /* CloseParenToken */);
35654
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35643
35655
  var statement = doInsideOfContext(16777216 /* InWithStatement */, parseStatement);
35644
35656
  return withJSDoc(finishNode(factory.createWithStatement(expression, statement), pos), hasJSDoc);
35645
35657
  }
@@ -36773,7 +36785,7 @@ var ts;
36773
36785
  if (!parseExpected(19 /* CloseBraceToken */)) {
36774
36786
  var lastError = ts.lastOrUndefined(parseDiagnostics);
36775
36787
  if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
36776
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
36788
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}"));
36777
36789
  }
36778
36790
  }
36779
36791
  return finishNode(factory.createAssertClause(elements, multiLine), pos);
@@ -37749,8 +37761,7 @@ var ts;
37749
37761
  hasChildren = true;
37750
37762
  if (child.kind === 342 /* JSDocTypeTag */) {
37751
37763
  if (childTypeTag) {
37752
- parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
37753
- var lastError = ts.lastOrUndefined(parseDiagnostics);
37764
+ var lastError = parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
37754
37765
  if (lastError) {
37755
37766
  ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, 0, 0, ts.Diagnostics.The_tag_was_first_specified_here));
37756
37767
  }
@@ -58488,8 +58499,10 @@ var ts;
58488
58499
  return type;
58489
58500
  }
58490
58501
  function isMappedTypeGenericIndexedAccess(type) {
58491
- return type.flags & 8388608 /* IndexedAccess */ && ts.getObjectFlags(type.objectType) & 32 /* Mapped */ &&
58492
- !isGenericMappedType(type.objectType) && isGenericIndexType(type.indexType);
58502
+ var objectType;
58503
+ return !!(type.flags & 8388608 /* IndexedAccess */ && ts.getObjectFlags(objectType = type.objectType) & 32 /* Mapped */ &&
58504
+ !isGenericMappedType(objectType) && isGenericIndexType(type.indexType) &&
58505
+ !objectType.declaration.questionToken && !objectType.declaration.nameType);
58493
58506
  }
58494
58507
  /**
58495
58508
  * For a type parameter, return the base constraint of the type parameter. For the string, number,
@@ -61674,7 +61687,7 @@ var ts;
61674
61687
  // If the object type is a mapped type { [P in K]: E }, where K is generic, instantiate E using a mapper
61675
61688
  // that substitutes the index type for P. For example, for an index access { [P in K]: Box<T[P]> }[X], we
61676
61689
  // construct the type Box<T[X]>.
61677
- if (isGenericMappedType(objectType)) {
61690
+ if (isGenericMappedType(objectType) && !objectType.declaration.nameType) {
61678
61691
  return type[cache] = mapType(substituteIndexedMappedType(objectType, type.indexType), function (t) { return getSimplifiedType(t, writing); });
61679
61692
  }
61680
61693
  return type[cache] = type;
@@ -63747,7 +63760,7 @@ var ts;
63747
63760
  var targetReturnType = isResolvingReturnTypeOfSignature(target) ? anyType
63748
63761
  : target.declaration && isJSConstructor(target.declaration) ? getDeclaredTypeOfClassOrInterface(getMergedSymbol(target.declaration.symbol))
63749
63762
  : getReturnTypeOfSignature(target);
63750
- if (targetReturnType === voidType) {
63763
+ if (targetReturnType === voidType || targetReturnType === anyType) {
63751
63764
  return result;
63752
63765
  }
63753
63766
  var sourceReturnType = isResolvingReturnTypeOfSignature(source) ? anyType
@@ -72036,7 +72049,7 @@ var ts;
72036
72049
  function getTypeOfPropertyOfContextualType(type, name, nameType) {
72037
72050
  return mapType(type, function (t) {
72038
72051
  var _a;
72039
- if (isGenericMappedType(t)) {
72052
+ if (isGenericMappedType(t) && !t.declaration.nameType) {
72040
72053
  var constraint = getConstraintTypeFromMappedType(t);
72041
72054
  var constraintOfConstraint = getBaseConstraintOfType(constraint) || constraint;
72042
72055
  var propertyNameType = nameType || getStringLiteralType(ts.unescapeLeadingUnderscores(name));
@@ -141668,6 +141681,41 @@ var ts;
141668
141681
  if (ts.scanner.getToken() === 1 /* EndOfFileToken */) {
141669
141682
  break;
141670
141683
  }
141684
+ if (ts.scanner.getToken() === 15 /* TemplateHead */) {
141685
+ var stack = [ts.scanner.getToken()];
141686
+ var token = ts.scanner.scan();
141687
+ loop: while (ts.length(stack)) {
141688
+ switch (token) {
141689
+ case 1 /* EndOfFileToken */:
141690
+ break loop;
141691
+ case 100 /* ImportKeyword */:
141692
+ tryConsumeImport();
141693
+ break;
141694
+ case 15 /* TemplateHead */:
141695
+ stack.push(token);
141696
+ break;
141697
+ case 18 /* OpenBraceToken */:
141698
+ if (ts.length(stack)) {
141699
+ stack.push(token);
141700
+ }
141701
+ break;
141702
+ case 19 /* CloseBraceToken */:
141703
+ if (ts.length(stack)) {
141704
+ if (ts.lastOrUndefined(stack) === 15 /* TemplateHead */) {
141705
+ if (ts.scanner.reScanTemplateToken(/* isTaggedTemplate */ false) === 17 /* TemplateTail */) {
141706
+ stack.pop();
141707
+ }
141708
+ }
141709
+ else {
141710
+ stack.pop();
141711
+ }
141712
+ }
141713
+ break;
141714
+ }
141715
+ token = ts.scanner.scan();
141716
+ }
141717
+ nextToken();
141718
+ }
141671
141719
  // check if at least one of alternative have moved scanner forward
141672
141720
  if (tryConsumeDeclare() ||
141673
141721
  tryConsumeImport() ||
package/lib/typescript.js CHANGED
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20220315";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220316";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -8228,7 +8228,7 @@ var ts;
8228
8228
  Identifier_expected: diag(1003, ts.DiagnosticCategory.Error, "Identifier_expected_1003", "Identifier expected."),
8229
8229
  _0_expected: diag(1005, ts.DiagnosticCategory.Error, "_0_expected_1005", "'{0}' expected."),
8230
8230
  A_file_cannot_have_a_reference_to_itself: diag(1006, ts.DiagnosticCategory.Error, "A_file_cannot_have_a_reference_to_itself_1006", "A file cannot have a reference to itself."),
8231
- The_parser_expected_to_find_a_to_match_the_token_here: diag(1007, ts.DiagnosticCategory.Error, "The_parser_expected_to_find_a_to_match_the_token_here_1007", "The parser expected to find a '}' to match the '{' token here."),
8231
+ The_parser_expected_to_find_a_1_to_match_the_0_token_here: diag(1007, ts.DiagnosticCategory.Error, "The_parser_expected_to_find_a_1_to_match_the_0_token_here_1007", "The parser expected to find a '{1}' to match the '{0}' token here."),
8232
8232
  Trailing_comma_not_allowed: diag(1009, ts.DiagnosticCategory.Error, "Trailing_comma_not_allowed_1009", "Trailing comma not allowed."),
8233
8233
  Asterisk_Slash_expected: diag(1010, ts.DiagnosticCategory.Error, "Asterisk_Slash_expected_1010", "'*/' expected."),
8234
8234
  An_element_access_expression_should_take_an_argument: diag(1011, ts.DiagnosticCategory.Error, "An_element_access_expression_should_take_an_argument_1011", "An element access expression should take an argument."),
@@ -31620,20 +31620,23 @@ var ts;
31620
31620
  return inContext(32768 /* AwaitContext */);
31621
31621
  }
31622
31622
  function parseErrorAtCurrentToken(message, arg0) {
31623
- parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
31623
+ return parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
31624
31624
  }
31625
31625
  function parseErrorAtPosition(start, length, message, arg0) {
31626
31626
  // Don't report another error if it would just be at the same position as the last error.
31627
31627
  var lastError = ts.lastOrUndefined(parseDiagnostics);
31628
+ var result;
31628
31629
  if (!lastError || start !== lastError.start) {
31629
- parseDiagnostics.push(ts.createDetachedDiagnostic(fileName, start, length, message, arg0));
31630
+ result = ts.createDetachedDiagnostic(fileName, start, length, message, arg0);
31631
+ parseDiagnostics.push(result);
31630
31632
  }
31631
31633
  // Mark that we've encountered an error. We'll set an appropriate bit on the next
31632
31634
  // node we finish so that it can't be reused incrementally.
31633
31635
  parseErrorBeforeNextFinishedNode = true;
31636
+ return result;
31634
31637
  }
31635
31638
  function parseErrorAt(start, end, message, arg0) {
31636
- parseErrorAtPosition(start, end - start, message, arg0);
31639
+ return parseErrorAtPosition(start, end - start, message, arg0);
31637
31640
  }
31638
31641
  function parseErrorAtRange(range, message, arg0) {
31639
31642
  parseErrorAt(range.pos, range.end, message, arg0);
@@ -31906,6 +31909,19 @@ var ts;
31906
31909
  parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(kind));
31907
31910
  return false;
31908
31911
  }
31912
+ function parseExpectedMatchingBrackets(openKind, closeKind, openParsed, openPosition) {
31913
+ if (token() === closeKind) {
31914
+ nextToken();
31915
+ return;
31916
+ }
31917
+ var lastError = parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(closeKind));
31918
+ if (!openParsed) {
31919
+ return;
31920
+ }
31921
+ if (lastError) {
31922
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openPosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, ts.tokenToString(openKind), ts.tokenToString(closeKind)));
31923
+ }
31924
+ }
31909
31925
  function parseOptional(t) {
31910
31926
  if (token() === t) {
31911
31927
  nextToken();
@@ -33554,7 +33570,7 @@ var ts;
33554
33570
  if (!parseExpected(19 /* CloseBraceToken */)) {
33555
33571
  var lastError = ts.lastOrUndefined(parseDiagnostics);
33556
33572
  if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
33557
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
33573
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}"));
33558
33574
  }
33559
33575
  }
33560
33576
  return finishNode(factory.createImportTypeAssertionContainer(clause, multiLine), pos);
@@ -35364,10 +35380,11 @@ var ts;
35364
35380
  }
35365
35381
  function parseArrayLiteralExpression() {
35366
35382
  var pos = getNodePos();
35367
- parseExpected(22 /* OpenBracketToken */);
35383
+ var openBracketPosition = scanner.getTokenPos();
35384
+ var openBracketParsed = parseExpected(22 /* OpenBracketToken */);
35368
35385
  var multiLine = scanner.hasPrecedingLineBreak();
35369
35386
  var elements = parseDelimitedList(15 /* ArrayLiteralMembers */, parseArgumentOrArrayLiteralElement);
35370
- parseExpected(23 /* CloseBracketToken */);
35387
+ parseExpectedMatchingBrackets(22 /* OpenBracketToken */, 23 /* CloseBracketToken */, openBracketParsed, openBracketPosition);
35371
35388
  return finishNode(factory.createArrayLiteralExpression(elements, multiLine), pos);
35372
35389
  }
35373
35390
  function parseObjectLiteralElement() {
@@ -35424,15 +35441,10 @@ var ts;
35424
35441
  function parseObjectLiteralExpression() {
35425
35442
  var pos = getNodePos();
35426
35443
  var openBracePosition = scanner.getTokenPos();
35427
- parseExpected(18 /* OpenBraceToken */);
35444
+ var openBraceParsed = parseExpected(18 /* OpenBraceToken */);
35428
35445
  var multiLine = scanner.hasPrecedingLineBreak();
35429
35446
  var properties = parseDelimitedList(12 /* ObjectLiteralMembers */, parseObjectLiteralElement, /*considerSemicolonAsDelimiter*/ true);
35430
- if (!parseExpected(19 /* CloseBraceToken */)) {
35431
- var lastError = ts.lastOrUndefined(parseDiagnostics);
35432
- if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
35433
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
35434
- }
35435
- }
35447
+ parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBraceParsed, openBracePosition);
35436
35448
  return finishNode(factory.createObjectLiteralExpression(properties, multiLine), pos);
35437
35449
  }
35438
35450
  function parseFunctionExpression() {
@@ -35488,15 +35500,11 @@ var ts;
35488
35500
  var pos = getNodePos();
35489
35501
  var hasJSDoc = hasPrecedingJSDocComment();
35490
35502
  var openBracePosition = scanner.getTokenPos();
35491
- if (parseExpected(18 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) {
35503
+ var openBraceParsed = parseExpected(18 /* OpenBraceToken */, diagnosticMessage);
35504
+ if (openBraceParsed || ignoreMissingOpenBrace) {
35492
35505
  var multiLine = scanner.hasPrecedingLineBreak();
35493
35506
  var statements = parseList(1 /* BlockStatements */, parseStatement);
35494
- if (!parseExpected(19 /* CloseBraceToken */)) {
35495
- var lastError = ts.lastOrUndefined(parseDiagnostics);
35496
- if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
35497
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
35498
- }
35499
- }
35507
+ parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBraceParsed, openBracePosition);
35500
35508
  var result = withJSDoc(finishNode(factory.createBlock(statements, multiLine), pos), hasJSDoc);
35501
35509
  if (token() === 63 /* EqualsToken */) {
35502
35510
  parseErrorAtCurrentToken(ts.Diagnostics.Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_the_whole_assignment_in_parentheses);
@@ -35541,9 +35549,10 @@ var ts;
35541
35549
  var pos = getNodePos();
35542
35550
  var hasJSDoc = hasPrecedingJSDocComment();
35543
35551
  parseExpected(99 /* IfKeyword */);
35544
- parseExpected(20 /* OpenParenToken */);
35552
+ var openParenPosition = scanner.getTokenPos();
35553
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35545
35554
  var expression = allowInAnd(parseExpression);
35546
- parseExpected(21 /* CloseParenToken */);
35555
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35547
35556
  var thenStatement = parseStatement();
35548
35557
  var elseStatement = parseOptional(91 /* ElseKeyword */) ? parseStatement() : undefined;
35549
35558
  return withJSDoc(finishNode(factory.createIfStatement(expression, thenStatement, elseStatement), pos), hasJSDoc);
@@ -35554,9 +35563,10 @@ var ts;
35554
35563
  parseExpected(90 /* DoKeyword */);
35555
35564
  var statement = parseStatement();
35556
35565
  parseExpected(115 /* WhileKeyword */);
35557
- parseExpected(20 /* OpenParenToken */);
35566
+ var openParenPosition = scanner.getTokenPos();
35567
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35558
35568
  var expression = allowInAnd(parseExpression);
35559
- parseExpected(21 /* CloseParenToken */);
35569
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35560
35570
  // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
35561
35571
  // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
35562
35572
  // spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby
@@ -35568,9 +35578,10 @@ var ts;
35568
35578
  var pos = getNodePos();
35569
35579
  var hasJSDoc = hasPrecedingJSDocComment();
35570
35580
  parseExpected(115 /* WhileKeyword */);
35571
- parseExpected(20 /* OpenParenToken */);
35581
+ var openParenPosition = scanner.getTokenPos();
35582
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35572
35583
  var expression = allowInAnd(parseExpression);
35573
- parseExpected(21 /* CloseParenToken */);
35584
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35574
35585
  var statement = parseStatement();
35575
35586
  return withJSDoc(finishNode(factory.createWhileStatement(expression, statement), pos), hasJSDoc);
35576
35587
  }
@@ -35637,9 +35648,10 @@ var ts;
35637
35648
  var pos = getNodePos();
35638
35649
  var hasJSDoc = hasPrecedingJSDocComment();
35639
35650
  parseExpected(116 /* WithKeyword */);
35640
- parseExpected(20 /* OpenParenToken */);
35651
+ var openParenPosition = scanner.getTokenPos();
35652
+ var openParenParsed = parseExpected(20 /* OpenParenToken */);
35641
35653
  var expression = allowInAnd(parseExpression);
35642
- parseExpected(21 /* CloseParenToken */);
35654
+ parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenParsed, openParenPosition);
35643
35655
  var statement = doInsideOfContext(16777216 /* InWithStatement */, parseStatement);
35644
35656
  return withJSDoc(finishNode(factory.createWithStatement(expression, statement), pos), hasJSDoc);
35645
35657
  }
@@ -36773,7 +36785,7 @@ var ts;
36773
36785
  if (!parseExpected(19 /* CloseBraceToken */)) {
36774
36786
  var lastError = ts.lastOrUndefined(parseDiagnostics);
36775
36787
  if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
36776
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
36788
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, "{", "}"));
36777
36789
  }
36778
36790
  }
36779
36791
  return finishNode(factory.createAssertClause(elements, multiLine), pos);
@@ -37749,8 +37761,7 @@ var ts;
37749
37761
  hasChildren = true;
37750
37762
  if (child.kind === 342 /* JSDocTypeTag */) {
37751
37763
  if (childTypeTag) {
37752
- parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
37753
- var lastError = ts.lastOrUndefined(parseDiagnostics);
37764
+ var lastError = parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
37754
37765
  if (lastError) {
37755
37766
  ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, 0, 0, ts.Diagnostics.The_tag_was_first_specified_here));
37756
37767
  }
@@ -58488,8 +58499,10 @@ var ts;
58488
58499
  return type;
58489
58500
  }
58490
58501
  function isMappedTypeGenericIndexedAccess(type) {
58491
- return type.flags & 8388608 /* IndexedAccess */ && ts.getObjectFlags(type.objectType) & 32 /* Mapped */ &&
58492
- !isGenericMappedType(type.objectType) && isGenericIndexType(type.indexType);
58502
+ var objectType;
58503
+ return !!(type.flags & 8388608 /* IndexedAccess */ && ts.getObjectFlags(objectType = type.objectType) & 32 /* Mapped */ &&
58504
+ !isGenericMappedType(objectType) && isGenericIndexType(type.indexType) &&
58505
+ !objectType.declaration.questionToken && !objectType.declaration.nameType);
58493
58506
  }
58494
58507
  /**
58495
58508
  * For a type parameter, return the base constraint of the type parameter. For the string, number,
@@ -61674,7 +61687,7 @@ var ts;
61674
61687
  // If the object type is a mapped type { [P in K]: E }, where K is generic, instantiate E using a mapper
61675
61688
  // that substitutes the index type for P. For example, for an index access { [P in K]: Box<T[P]> }[X], we
61676
61689
  // construct the type Box<T[X]>.
61677
- if (isGenericMappedType(objectType)) {
61690
+ if (isGenericMappedType(objectType) && !objectType.declaration.nameType) {
61678
61691
  return type[cache] = mapType(substituteIndexedMappedType(objectType, type.indexType), function (t) { return getSimplifiedType(t, writing); });
61679
61692
  }
61680
61693
  return type[cache] = type;
@@ -63747,7 +63760,7 @@ var ts;
63747
63760
  var targetReturnType = isResolvingReturnTypeOfSignature(target) ? anyType
63748
63761
  : target.declaration && isJSConstructor(target.declaration) ? getDeclaredTypeOfClassOrInterface(getMergedSymbol(target.declaration.symbol))
63749
63762
  : getReturnTypeOfSignature(target);
63750
- if (targetReturnType === voidType) {
63763
+ if (targetReturnType === voidType || targetReturnType === anyType) {
63751
63764
  return result;
63752
63765
  }
63753
63766
  var sourceReturnType = isResolvingReturnTypeOfSignature(source) ? anyType
@@ -72036,7 +72049,7 @@ var ts;
72036
72049
  function getTypeOfPropertyOfContextualType(type, name, nameType) {
72037
72050
  return mapType(type, function (t) {
72038
72051
  var _a;
72039
- if (isGenericMappedType(t)) {
72052
+ if (isGenericMappedType(t) && !t.declaration.nameType) {
72040
72053
  var constraint = getConstraintTypeFromMappedType(t);
72041
72054
  var constraintOfConstraint = getBaseConstraintOfType(constraint) || constraint;
72042
72055
  var propertyNameType = nameType || getStringLiteralType(ts.unescapeLeadingUnderscores(name));
@@ -141668,6 +141681,41 @@ var ts;
141668
141681
  if (ts.scanner.getToken() === 1 /* EndOfFileToken */) {
141669
141682
  break;
141670
141683
  }
141684
+ if (ts.scanner.getToken() === 15 /* TemplateHead */) {
141685
+ var stack = [ts.scanner.getToken()];
141686
+ var token = ts.scanner.scan();
141687
+ loop: while (ts.length(stack)) {
141688
+ switch (token) {
141689
+ case 1 /* EndOfFileToken */:
141690
+ break loop;
141691
+ case 100 /* ImportKeyword */:
141692
+ tryConsumeImport();
141693
+ break;
141694
+ case 15 /* TemplateHead */:
141695
+ stack.push(token);
141696
+ break;
141697
+ case 18 /* OpenBraceToken */:
141698
+ if (ts.length(stack)) {
141699
+ stack.push(token);
141700
+ }
141701
+ break;
141702
+ case 19 /* CloseBraceToken */:
141703
+ if (ts.length(stack)) {
141704
+ if (ts.lastOrUndefined(stack) === 15 /* TemplateHead */) {
141705
+ if (ts.scanner.reScanTemplateToken(/* isTaggedTemplate */ false) === 17 /* TemplateTail */) {
141706
+ stack.pop();
141707
+ }
141708
+ }
141709
+ else {
141710
+ stack.pop();
141711
+ }
141712
+ }
141713
+ break;
141714
+ }
141715
+ token = ts.scanner.scan();
141716
+ }
141717
+ nextToken();
141718
+ }
141671
141719
  // check if at least one of alternative have moved scanner forward
141672
141720
  if (tryConsumeDeclare() ||
141673
141721
  tryConsumeImport() ||