• adamk's avatar
    [es6] Implement destructuring binding in try/catch · a316db99
    adamk authored
    The approach is to desugar
    
      try { ... }
      catch ({x, y}) { ... }
    
    into
    
      try { ... }
      catch (.catch) {
        let x = .catch.x;
        let y = .catch.y;
        ...
      }
    
    using the PatternRewriter's normal facilities. This has the side benefit
    of throwing the appropriate variable conflict errors for declarations
    made inside the catch block.
    
    No change is made to non-destructured cases, which will hopefully save
    us some work if https://github.com/tc39/ecma262/issues/150 is adopted
    in the spec.
    
    There's one big problem with this patch, which is a lack of PreParser
    support for the redeclaration errors. But it seems we're already lacking
    good PreParser support for such errors, so I'm not sure that should
    block this moving forward.
    
    BUG=v8:811
    LOG=y
    
    Review URL: https://codereview.chromium.org/1417483014
    
    Cr-Commit-Position: refs/heads/master@{#31797}
    a316db99
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs 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...
snapshot_toolchain.gni Loading commit data...