• Toon Verwaest's avatar
    [parser] Disambiguate variables through expression-scope · f9529f6b
    Toon Verwaest authored
    Previously we'd always push variable proxies into the unresolved list of the
    current scope, and possibly delete them from the list later in case they end up
    being declarations. If variables become assigned, there were two ways to mark
    them as such: The preparser would marked the variables tracked on the
    PreParserExpression, and the parser would traverse the LHS AST to find and mark
    all variables.
    
    After this CL, if the scope already knows it's tracking declarations, the
    variables are never added to the unresolved list in the first place. If the
    scope is ambigous, it tracks the variable proxies on the side and only adds
    them to the unresolved list if they end up being references rather than
    declarations. The same list is now used to bulk mark all LHS variables as
    assigned; uniformely for both the parser and the preparser.
    
    In a next step we'll also use the scope to create declarations. That way we can
    stop tracking variables_ on PreParserExpression altogether.
    
    Change-Id: I6ada37006cc2e066731f29cd4ea314550fc7959f
    Reviewed-on: https://chromium-review.googlesource.com/c/1397669
    Commit-Queue: Toon Verwaest <verwaest@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58629}
    f9529f6b
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...