• 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...
cctest Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...