Support generator methods in object literals, e.g. o = {*g() {...}}
#1747
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 makes quite a few test262 cases pass.
There's a few tests that were passing and apparently are broken now, but that is a false positive. The reason is that, before this PR, Rhino would not support the syntax altogether and thus would complain with a SyntaxError, whereas now we accept the method definition, and also accept some syntax that we shouldn't have inside the method body. For example one of the test cases,
method-definition/generator-param-redecl-let.js
has this body:Previously rhino would have thrown an error because
*foo
was not supported. After this PR, the method declaration is allowed and the test is passing, but rhino should throw a SyntaxError onlet a = 3
. However, the same test exists for non-generator methods, namedmethod-definition/name-param-redecl-let.js
, which was already failing because of the same underlying reason.I've checked that this is true for all the test262 cases where there is a regression.
Closes #1413