[es6] Implement destructuring binding in try/catch
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}
Showing
Please
register
or
sign in
to comment