@@ -1555,15 +1555,15 @@ namespace ts {
1555
1555
return false ;
1556
1556
}
1557
1557
1558
- function parseExpectedMatchingBrackets ( openKind : SyntaxKind , closeKind : SyntaxKind , openParsed : boolean , openPosition : number ) {
1559
- if ( ! openParsed ) {
1560
- return parseExpected ( closeKind ) ;
1561
- }
1558
+ function parseExpectedMatchingBrackets ( openKind : SyntaxKind , closeKind : SyntaxKind , openParsed : boolean , openPosition : number ) {
1562
1559
if ( token ( ) === closeKind ) {
1563
1560
nextToken ( ) ;
1564
1561
return ;
1565
1562
}
1566
1563
const lastError = parseErrorAtCurrentToken ( Diagnostics . _0_expected , tokenToString ( closeKind ) ) ;
1564
+ if ( ! openParsed ) {
1565
+ return ;
1566
+ }
1567
1567
if ( lastError ) {
1568
1568
addRelatedInfo (
1569
1569
lastError ,
@@ -5501,11 +5501,10 @@ namespace ts {
5501
5501
5502
5502
function parseArrayLiteralExpression ( ) : ArrayLiteralExpression {
5503
5503
const pos = getNodePos ( ) ;
5504
- const openBracketPosition = scanner . getTokenPos ( ) ;
5505
5504
const openBracketParsed = parseExpected ( SyntaxKind . OpenBracketToken ) ;
5506
5505
const multiLine = scanner . hasPrecedingLineBreak ( ) ;
5507
5506
const elements = parseDelimitedList ( ParsingContext . ArrayLiteralMembers , parseArgumentOrArrayLiteralElement ) ;
5508
- parseExpectedMatchingBrackets ( SyntaxKind . OpenBracketToken , SyntaxKind . CloseBracketToken , openBracketParsed , openBracketPosition ) ;
5507
+ parseExpectedMatchingBrackets ( SyntaxKind . OpenBracketToken , SyntaxKind . CloseBracketToken , openBracketParsed , pos ) ;
5509
5508
return finishNode ( factory . createArrayLiteralExpression ( elements , multiLine ) , pos ) ;
5510
5509
}
5511
5510
@@ -5570,11 +5569,10 @@ namespace ts {
5570
5569
5571
5570
function parseObjectLiteralExpression ( ) : ObjectLiteralExpression {
5572
5571
const pos = getNodePos ( ) ;
5573
- const openBracePosition = scanner . getTokenPos ( ) ;
5574
5572
const openBraceParsed = parseExpected ( SyntaxKind . OpenBraceToken ) ;
5575
5573
const multiLine = scanner . hasPrecedingLineBreak ( ) ;
5576
5574
const properties = parseDelimitedList ( ParsingContext . ObjectLiteralMembers , parseObjectLiteralElement , /*considerSemicolonAsDelimiter*/ true ) ;
5577
- parseExpectedMatchingBrackets ( SyntaxKind . OpenBraceToken , SyntaxKind . CloseBraceToken , openBraceParsed , openBracePosition ) ;
5575
+ parseExpectedMatchingBrackets ( SyntaxKind . OpenBraceToken , SyntaxKind . CloseBraceToken , openBraceParsed , pos ) ;
5578
5576
return finishNode ( factory . createObjectLiteralExpression ( properties , multiLine ) , pos ) ;
5579
5577
}
5580
5578
@@ -5656,12 +5654,11 @@ namespace ts {
5656
5654
function parseBlock ( ignoreMissingOpenBrace : boolean , diagnosticMessage ?: DiagnosticMessage ) : Block {
5657
5655
const pos = getNodePos ( ) ;
5658
5656
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5659
- const openBracePosition = scanner . getTokenPos ( ) ;
5660
- const openBraceParsed = parseExpected ( SyntaxKind . OpenBraceToken , diagnosticMessage )
5657
+ const openBraceParsed = parseExpected ( SyntaxKind . OpenBraceToken , diagnosticMessage ) ;
5661
5658
if ( openBraceParsed || ignoreMissingOpenBrace ) {
5662
5659
const multiLine = scanner . hasPrecedingLineBreak ( ) ;
5663
5660
const statements = parseList ( ParsingContext . BlockStatements , parseStatement ) ;
5664
- parseExpectedMatchingBrackets ( SyntaxKind . OpenBraceToken , SyntaxKind . CloseBraceToken , openBraceParsed , openBracePosition ) ;
5661
+ parseExpectedMatchingBrackets ( SyntaxKind . OpenBraceToken , SyntaxKind . CloseBraceToken , openBraceParsed , pos ) ;
5665
5662
const result = withJSDoc ( finishNode ( factory . createBlock ( statements , multiLine ) , pos ) , hasJSDoc ) ;
5666
5663
if ( token ( ) === SyntaxKind . EqualsToken ) {
5667
5664
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 ) ;
@@ -5717,10 +5714,10 @@ namespace ts {
5717
5714
const pos = getNodePos ( ) ;
5718
5715
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5719
5716
parseExpected ( SyntaxKind . IfKeyword ) ;
5720
- const openParenPosition = scanner . getTokenPos ( ) ;
5717
+ const openParenPosition = getNodePos ( ) ;
5721
5718
const openParenParsed = parseExpected ( SyntaxKind . OpenParenToken ) ;
5722
5719
const expression = allowInAnd ( parseExpression ) ;
5723
- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenParsed , openParenPosition )
5720
+ parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenParsed , openParenPosition ) ;
5724
5721
const thenStatement = parseStatement ( ) ;
5725
5722
const elseStatement = parseOptional ( SyntaxKind . ElseKeyword ) ? parseStatement ( ) : undefined ;
5726
5723
return withJSDoc ( finishNode ( factory . createIfStatement ( expression , thenStatement , elseStatement ) , pos ) , hasJSDoc ) ;
@@ -5732,10 +5729,10 @@ namespace ts {
5732
5729
parseExpected ( SyntaxKind . DoKeyword ) ;
5733
5730
const statement = parseStatement ( ) ;
5734
5731
parseExpected ( SyntaxKind . WhileKeyword ) ;
5735
- const openParenPosition = scanner . getTokenPos ( ) ;
5732
+ const openParenPosition = getNodePos ( ) ;
5736
5733
const openParenParsed = parseExpected ( SyntaxKind . OpenParenToken ) ;
5737
5734
const expression = allowInAnd ( parseExpression ) ;
5738
- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenParsed , openParenPosition )
5735
+ parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenParsed , openParenPosition ) ;
5739
5736
5740
5737
// From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
5741
5738
// 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
@@ -5749,7 +5746,7 @@ namespace ts {
5749
5746
const pos = getNodePos ( ) ;
5750
5747
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5751
5748
parseExpected ( SyntaxKind . WhileKeyword ) ;
5752
- const openParenPosition = scanner . getTokenPos ( ) ;
5749
+ const openParenPosition = getNodePos ( ) ;
5753
5750
const openParenParsed = parseExpected ( SyntaxKind . OpenParenToken ) ;
5754
5751
const expression = allowInAnd ( parseExpression ) ;
5755
5752
parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenParsed , openParenPosition ) ;
@@ -5828,7 +5825,7 @@ namespace ts {
5828
5825
const pos = getNodePos ( ) ;
5829
5826
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5830
5827
parseExpected ( SyntaxKind . WithKeyword ) ;
5831
- const openParenPosition = scanner . getTokenPos ( ) ;
5828
+ const openParenPosition = getNodePos ( ) ;
5832
5829
const openParenParsed = parseExpected ( SyntaxKind . OpenParenToken ) ;
5833
5830
const expression = allowInAnd ( parseExpression ) ;
5834
5831
parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenParsed , openParenPosition ) ;
0 commit comments