Description[es6] Implement proper TDZ for parameters
Previously, examples like (({a = x}, x) => {})({}, 0) did not throw a ReferenceError like they should. This CL
- Splits up DeclareFormalParameters such that the formals can be recorded first and declared later.
- Declaration then takes the complete parameter list into account. If it is not simple, temporaries are introduced for all parameters.
- BuildParameterInitializationBlock desugars all parameters from non-simple lists into let-bindings.
- Refactored Pre/ParserFormalParameters, so that the arity information is no longer duplicated in Parser.
- Rest is currently handled specially, until rest-via-destructuring has landed.
R=adamk@chromium.org, littledan@chromium.org
BUG=v8:811
LOG=N
Committed: https://crrev.com/4273f66e9882f1239c6b7846c31730d47b870d81
Cr-Commit-Position: refs/heads/master@{#30025}
Patch Set 1 #
Total comments: 10
Patch Set 2 : Rebase #Patch Set 3 : Adam's comments #
Total comments: 6
Patch Set 4 : Adjust test expectations #
Total comments: 1
Messages
Total messages: 17 (5 generated)
|