[JSC] Add missing syntax errors for await in function parameter default expressions
authorross.kirsling@sony.com <ross.kirsling@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Sep 2019 22:56:08 +0000 (22:56 +0000)
committerross.kirsling@sony.com <ross.kirsling@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Sep 2019 22:56:08 +0000 (22:56 +0000)
commit02b0f7a99906486b8cd68c91f047761f4abaac4b
tree416e411980205108ed6cf0263d723085578f7ee0
parent604194951244a47914641f3a1a8d5ff45ed182d0
[JSC] Add missing syntax errors for await in function parameter default expressions
https://bugs.webkit.org/show_bug.cgi?id=201615

Reviewed by Darin Adler.

JSTests:

* stress/async-await-reserved-word.js:
* stress/async-await-syntax.js:
Add test cases.

* test262/expectations.yaml:
Mark newly-passing test cases.

Source/JavaScriptCore:

This patch rectifies two oversights:
  1. We were prohibiting `async function f(x = (await) => {}) {}` but not `async function f(x = await => {}) {}`
     (and likewise for async arrow functions).
  2. We were not prohibiting `(x = await => {}) => {}` in an async context
     (regardless of parentheses, but note that this one *only* applies to arrow functions).

* parser/Parser.cpp:
(JSC::Parser<LexerType>::isArrowFunctionParameters): Fix case (1).
(JSC::Parser<LexerType>::parseFunctionInfo): Fix case (2).
(JSC::Parser<LexerType>::parseAwaitExpression): Convert unfailing check into an ASSERT.
(JSC::Parser<LexerType>::parsePrimaryExpression): Adjust error message for case (2).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249925 268f45cc-cd09-0410-ab3c-d52691b4dbfc
JSTests/ChangeLog
JSTests/stress/async-await-reserved-word.js
JSTests/stress/async-await-syntax.js
JSTests/test262/expectations.yaml
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/parser/Parser.cpp