@@ -1543,20 +1543,6 @@ namespace ts {
15431543 return false ;
15441544 }
15451545
1546- function parseExpectedMatchingBrackets ( openKind : SyntaxKind , closeKind : SyntaxKind , openPosition : number ) {
1547- if ( ! parseExpected ( closeKind ) ) {
1548- const lastError = lastOrUndefined ( parseDiagnostics ) ;
1549- if ( lastError && lastError . code === Diagnostics . _0_expected . code ) {
1550- addRelatedInfo (
1551- lastError ,
1552- createDetachedDiagnostic ( fileName , openPosition , 1 , Diagnostics . The_parser_expected_to_find_a_1_to_match_the_0_token_here , tokenToString ( openKind ) , tokenToString ( closeKind ) )
1553- ) ;
1554- }
1555- return false ;
1556- }
1557- return true ;
1558- }
1559-
15601546 function parseOptional ( t : SyntaxKind ) : boolean {
15611547 if ( token ( ) === t ) {
15621548 nextToken ( ) ;
@@ -5447,11 +5433,10 @@ namespace ts {
54475433
54485434 function parseArrayLiteralExpression ( ) : ArrayLiteralExpression {
54495435 const pos = getNodePos ( ) ;
5450- const openBracketPosition = scanner . getTokenPos ( ) ;
54515436 parseExpected ( SyntaxKind . OpenBracketToken ) ;
54525437 const multiLine = scanner . hasPrecedingLineBreak ( ) ;
54535438 const elements = parseDelimitedList ( ParsingContext . ArrayLiteralMembers , parseArgumentOrArrayLiteralElement ) ;
5454- parseExpectedMatchingBrackets ( SyntaxKind . OpenBracketToken , SyntaxKind . CloseBracketToken , openBracketPosition ) ;
5439+ parseExpected ( SyntaxKind . CloseBracketToken ) ;
54555440 return finishNode ( factory . createArrayLiteralExpression ( elements , multiLine ) , pos ) ;
54565441 }
54575442
@@ -5525,7 +5510,7 @@ namespace ts {
55255510 if ( lastError && lastError . code === Diagnostics . _0_expected . code ) {
55265511 addRelatedInfo (
55275512 lastError ,
5528- createDetachedDiagnostic ( fileName , openBracePosition , 1 , Diagnostics . The_parser_expected_to_find_a_1_to_match_the_0_token_here , tokenToString ( SyntaxKind . OpenBraceToken ) , tokenToString ( SyntaxKind . CloseBraceToken ) )
5513+ createDetachedDiagnostic ( fileName , openBracePosition , 1 , Diagnostics . The_parser_expected_to_find_a_to_match_the_token_here )
55295514 ) ;
55305515 }
55315516 }
@@ -5614,14 +5599,16 @@ namespace ts {
56145599 if ( parseExpected ( SyntaxKind . OpenBraceToken , diagnosticMessage ) || ignoreMissingOpenBrace ) {
56155600 const multiLine = scanner . hasPrecedingLineBreak ( ) ;
56165601 const statements = parseList ( ParsingContext . BlockStatements , parseStatement ) ;
5617- parseExpectedMatchingBrackets ( SyntaxKind . OpenBraceToken , SyntaxKind . CloseBraceToken , openBracePosition ) ;
5618- const result = withJSDoc ( finishNode ( factory . createBlock ( statements , multiLine ) , pos ) , hasJSDoc ) ;
5619- if ( token ( ) === SyntaxKind . EqualsToken ) {
5620- parseErrorAtCurrentToken ( 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 ) ;
5621- nextToken ( ) ;
5602+ if ( ! parseExpected ( SyntaxKind . CloseBraceToken ) ) {
5603+ const lastError = lastOrUndefined ( parseDiagnostics ) ;
5604+ if ( lastError && lastError . code === Diagnostics . _0_expected . code ) {
5605+ addRelatedInfo (
5606+ lastError ,
5607+ createDetachedDiagnostic ( fileName , openBracePosition , 1 , Diagnostics . The_parser_expected_to_find_a_to_match_the_token_here )
5608+ ) ;
5609+ }
56225610 }
5623-
5624- return result ;
5611+ return finishNode ( factory . createBlock ( statements , multiLine ) , pos ) ;
56255612 }
56265613 else {
56275614 const statements = createMissingList < Statement > ( ) ;
@@ -5670,10 +5657,9 @@ namespace ts {
56705657 const pos = getNodePos ( ) ;
56715658 const hasJSDoc = hasPrecedingJSDocComment ( ) ;
56725659 parseExpected ( SyntaxKind . IfKeyword ) ;
5673- const openParenPosition = scanner . getTokenPos ( ) ;
56745660 parseExpected ( SyntaxKind . OpenParenToken ) ;
56755661 const expression = allowInAnd ( parseExpression ) ;
5676- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5662+ parseExpected ( SyntaxKind . CloseParenToken ) ;
56775663 const thenStatement = parseStatement ( ) ;
56785664 const elseStatement = parseOptional ( SyntaxKind . ElseKeyword ) ? parseStatement ( ) : undefined ;
56795665 return withJSDoc ( finishNode ( factory . createIfStatement ( expression , thenStatement , elseStatement ) , pos ) , hasJSDoc ) ;
@@ -5685,10 +5671,9 @@ namespace ts {
56855671 parseExpected ( SyntaxKind . DoKeyword ) ;
56865672 const statement = parseStatement ( ) ;
56875673 parseExpected ( SyntaxKind . WhileKeyword ) ;
5688- const openParenPosition = scanner . getTokenPos ( ) ;
56895674 parseExpected ( SyntaxKind . OpenParenToken ) ;
56905675 const expression = allowInAnd ( parseExpression ) ;
5691- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5676+ parseExpected ( SyntaxKind . CloseParenToken ) ;
56925677
56935678 // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
56945679 // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
@@ -5702,10 +5687,9 @@ namespace ts {
57025687 const pos = getNodePos ( ) ;
57035688 const hasJSDoc = hasPrecedingJSDocComment ( ) ;
57045689 parseExpected ( SyntaxKind . WhileKeyword ) ;
5705- const openParenPosition = scanner . getTokenPos ( ) ;
57065690 parseExpected ( SyntaxKind . OpenParenToken ) ;
57075691 const expression = allowInAnd ( parseExpression ) ;
5708- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5692+ parseExpected ( SyntaxKind . CloseParenToken ) ;
57095693 const statement = parseStatement ( ) ;
57105694 return withJSDoc ( finishNode ( factory . createWhileStatement ( expression , statement ) , pos ) , hasJSDoc ) ;
57115695 }
@@ -5781,10 +5765,9 @@ namespace ts {
57815765 const pos = getNodePos ( ) ;
57825766 const hasJSDoc = hasPrecedingJSDocComment ( ) ;
57835767 parseExpected ( SyntaxKind . WithKeyword ) ;
5784- const openParenPosition = scanner . getTokenPos ( ) ;
57855768 parseExpected ( SyntaxKind . OpenParenToken ) ;
57865769 const expression = allowInAnd ( parseExpression ) ;
5787- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5770+ parseExpected ( SyntaxKind . CloseParenToken ) ;
57885771 const statement = doInsideOfContext ( NodeFlags . InWithStatement , parseStatement ) ;
57895772 return withJSDoc ( finishNode ( factory . createWithStatement ( expression , statement ) , pos ) , hasJSDoc ) ;
57905773 }
0 commit comments