Add more tests for for (async of
edge-cases
#2983
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds tests for two more edge-cases related to the
for (async of
restriction (tc39/ecma262#2256):In this case, the identifier
async
is written with an escape sequence. This avoids theasync of
lookahead, which only considers non-escaped words.This detects implementations that check for an
async
token without considering whether it was escaped.Recently fixed in V8: https://bugs.chromium.org/p/v8/issues/detail?id=11722
In this case, the identifier token
async
is preceded by a(
token, which avoids theasync of
lookahead becauseasync
is no longer the first token in the head.This detects implementations that check whether the LHS is an identifier at the AST level, without considering parentheses.
Motivated by babel/babel#13244 (review).