[es6] implement default parameters via desugaring
authorcaitpotter88 <caitpotter88@gmail.com>
Mon, 1 Jun 2015 17:10:39 +0000 (10:10 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 1 Jun 2015 17:10:50 +0000 (17:10 +0000)
commit892c85485881f8be2f17bd83238980f858126576
treeebe5ce5a6858e659c237ff96758c7fb0fa2995e8
parentaa470e0af0e5aca930ddc38ed8cbe098440e07cc
[es6] implement default parameters via desugaring

Stage 1 implementation:

- Parameters can't be referenced before initialized (from left-to-right)
- SingleNameBindings only, no support for BindingPatterns

Known issues:

- Incorrect scoping (parameter expressions may reference variables declared in function body)
- Function arity is untouched
- Hole-checking needs work
- Rest parameters are broken when mixed with optional arguments

BUG=v8:2160
LOG=N
R=arv@chromium.org, rossberg@chromium.org

Review URL: https://codereview.chromium.org/1127063003

Cr-Commit-Position: refs/heads/master@{#28739}
13 files changed:
src/bootstrapper.cc
src/flag-definitions.h
src/messages.h
src/parser.cc
src/parser.h
src/preparser.cc
src/preparser.h
src/scopes.cc
src/scopes.h
src/variables.h
test/mjsunit/harmony/default-parameters-debug.js [new file with mode: 0644]
test/mjsunit/harmony/default-parameters-lazy.js [new file with mode: 0644]
test/mjsunit/harmony/default-parameters.js [new file with mode: 0644]