• Toon Verwaest's avatar
    [parser] Treat var initializers in masking catch as assigning · f5818c6b
    Toon Verwaest authored
    This changes the existing implementation that creates an unresolved reference for those cases to look at exactly what scopes are relevant so it can correctly handle catch scopes and avoid re-resolving later.
    
    Variable through with aren't marked as assigning since this information isn't relevant for the with itself; and if the with is passed through, there's no need to mark the outer variable as assigned since it's either initialized or it isn't.
    
    The catch variable is assigned since it is relevant for the catch variable.
    
    The CL uses LookupLocal which wouldn't work for deserialized scopes, but this isn't relevant because 1) eval scopes are declaration scopes, and 2) eval causes all outer variables to be maybe_assigned anyway.
    
    Bug: chromium:1074737
    Change-Id: I3febca479ddd1f3c62eae299190b06c0b4cd3746
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187272
    Commit-Queue: Toon Verwaest <verwaest@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Auto-Submit: Toon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#67683}
    f5818c6b
expression-scope.h 29.2 KB