• Leszek Swirski's avatar
    [parser] Don't desugar destructuring declarations. · 5e725a2b
    Leszek Swirski authored
    Emit a single destructuring assignment for destructuring declarations,
    which can be desugared by the bytecode generator. This allows us to
    remove destructuring desugaring from the parser (specifically, the
    pattern rewriter) entirely.
    
    The pattern "rewriter" is now only responsible for walking the
    destructuring pattern to declare variables, mark them assigned, and
    potentially rewrite scopes for the edge case of parameters with a sloppy
    eval.
    
    Note that since the rewriter is no longer rewriting, we have to flip the
    VariableProxy copying logic for var re-lookup, so that we now pass the
    new VariableProxy to the variable declaration and leave the original
    unresolved (rather than passing the original through and rewriting to a
    new unresolved VariableProxy).
    
    This change does have some effect on breakpoint locations, due to some
    of the available information changing between the parser and bytecode
    generator, however the new locations appear to be more consistent
    between assignments and declarations.
    
    Change-Id: I3a58dd0a387d2bfb8e5e9e22dde0acc5f440cb82
    Reviewed-on: https://chromium-review.googlesource.com/c/1382462
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
    Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58670}
    5e725a2b
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni 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 Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind 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...