• rossberg's avatar
    [es6] Implement proper TDZ for parameters · 4273f66e
    rossberg authored
    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
    
    Review URL: https://codereview.chromium.org/1259283002
    
    Cr-Commit-Position: refs/heads/master@{#30025}
    4273f66e
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...