@@ -5666,9 +5666,10 @@ namespace ts {
5666
5666
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5667
5667
parseExpected ( SyntaxKind . IfKeyword ) ;
5668
5668
const openParenPosition = scanner . getTokenPos ( ) ;
5669
- parseExpected ( SyntaxKind . OpenParenToken ) ;
5669
+ const openParenExists = parseExpected ( SyntaxKind . OpenParenToken ) ;
5670
5670
const expression = allowInAnd ( parseExpression ) ;
5671
- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5671
+ openParenExists ? parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition )
5672
+ : parseExpected ( SyntaxKind . CloseBraceToken ) ;
5672
5673
const thenStatement = parseStatement ( ) ;
5673
5674
const elseStatement = parseOptional ( SyntaxKind . ElseKeyword ) ? parseStatement ( ) : undefined ;
5674
5675
return withJSDoc ( finishNode ( factory . createIfStatement ( expression , thenStatement , elseStatement ) , pos ) , hasJSDoc ) ;
@@ -5681,9 +5682,10 @@ namespace ts {
5681
5682
const statement = parseStatement ( ) ;
5682
5683
parseExpected ( SyntaxKind . WhileKeyword ) ;
5683
5684
const openParenPosition = scanner . getTokenPos ( ) ;
5684
- parseExpected ( SyntaxKind . OpenParenToken ) ;
5685
+ const openParenExists = parseExpected ( SyntaxKind . OpenParenToken ) ;
5685
5686
const expression = allowInAnd ( parseExpression ) ;
5686
- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5687
+ openParenExists ? parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition )
5688
+ : parseExpected ( SyntaxKind . CloseParenToken ) ;
5687
5689
5688
5690
// From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
5689
5691
// 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
@@ -5698,9 +5700,10 @@ namespace ts {
5698
5700
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5699
5701
parseExpected ( SyntaxKind . WhileKeyword ) ;
5700
5702
const openParenPosition = scanner . getTokenPos ( ) ;
5701
- parseExpected ( SyntaxKind . OpenParenToken ) ;
5703
+ const openParenExists = parseExpected ( SyntaxKind . OpenParenToken ) ;
5702
5704
const expression = allowInAnd ( parseExpression ) ;
5703
- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5705
+ openParenExists ? parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition )
5706
+ : parseExpected ( SyntaxKind . CloseParenToken ) ;
5704
5707
const statement = parseStatement ( ) ;
5705
5708
return withJSDoc ( finishNode ( factory . createWhileStatement ( expression , statement ) , pos ) , hasJSDoc ) ;
5706
5709
}
@@ -5777,9 +5780,10 @@ namespace ts {
5777
5780
const hasJSDoc = hasPrecedingJSDocComment ( ) ;
5778
5781
parseExpected ( SyntaxKind . WithKeyword ) ;
5779
5782
const openParenPosition = scanner . getTokenPos ( ) ;
5780
- parseExpected ( SyntaxKind . OpenParenToken ) ;
5783
+ const openParenExists = parseExpected ( SyntaxKind . OpenParenToken ) ;
5781
5784
const expression = allowInAnd ( parseExpression ) ;
5782
- parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition ) ;
5785
+ openParenExists ? parseExpectedMatchingBrackets ( SyntaxKind . OpenParenToken , SyntaxKind . CloseParenToken , openParenPosition )
5786
+ : parseExpected ( SyntaxKind . CloseParenToken ) ;
5783
5787
const statement = doInsideOfContext ( NodeFlags . InWithStatement , parseStatement ) ;
5784
5788
return withJSDoc ( finishNode ( factory . createWithStatement ( expression , statement ) , pos ) , hasJSDoc ) ;
5785
5789
}
0 commit comments