@@ -6337,24 +6337,34 @@ func (p *Parser) isUsingDeclaration() bool {
63376337 // 'using' always starts a lexical declaration if followed by an identifier. We also eagerly parse
63386338 // |ObjectBindingPattern| so that we can report a grammar error during check. We don't parse out
63396339 // |ArrayBindingPattern| since it potentially conflicts with element access (i.e., `using[x]`).
6340- return p .lookAhead ((* Parser ).nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine )
6340+ return p .lookAhead (func (p * Parser ) bool {
6341+ return p .nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine ( /*disallowOf*/ false )
6342+ })
63416343}
63426344
6343- func (p * Parser ) nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine () bool {
6345+ func (p * Parser ) nextTokenIsEqualsOrSemicolonOrColonToken () bool {
63446346 p .nextToken ()
6347+ return p .token == ast .KindEqualsToken || p .token == ast .KindSemicolonToken || p .token == ast .KindColonToken
6348+ }
6349+
6350+ func (p * Parser ) nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine (disallowOf bool ) bool {
6351+ p .nextToken ()
6352+ if disallowOf && p .token == ast .KindOfKeyword {
6353+ return p .lookAhead ((* Parser ).nextTokenIsEqualsOrSemicolonOrColonToken )
6354+ }
63456355 return p .isBindingIdentifier () || p .token == ast .KindOpenBraceToken && ! p .hasPrecedingLineBreak ()
63466356}
63476357
63486358func (p * Parser ) nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLineDisallowOf () bool {
6349- return p .nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine () && p . token != ast . KindOfKeyword
6359+ return p .nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine ( /*disallowOf*/ true )
63506360}
63516361
63526362func (p * Parser ) isAwaitUsingDeclaration () bool {
63536363 return p .lookAhead ((* Parser ).nextIsUsingKeywordThenBindingIdentifierOrStartOfObjectDestructuringOnSameLine )
63546364}
63556365
63566366func (p * Parser ) nextIsUsingKeywordThenBindingIdentifierOrStartOfObjectDestructuringOnSameLine () bool {
6357- return p .nextToken () == ast .KindUsingKeyword && p .nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine ()
6367+ return p .nextToken () == ast .KindUsingKeyword && p .nextTokenIsBindingIdentifierOrStartOfDestructuringOnSameLine ( /*disallowOf*/ false )
63586368}
63596369
63606370func (p * Parser ) nextTokenIsTokenStringLiteral () bool {
0 commit comments