• Leszek Swirski's avatar
    [ignition] Fix iteration finalization exception suppression · 7fbbce5f
    Leszek Swirski authored
    The IteratorClose spec specifies that exceptions in
    %GetMethod(iterator.return) are not suppressed by exceptions in the
    given continuation (body of a loop, assignments in destructuring),
    while exceptions in the execution of iterator.return() are.
    
    This means that we have to split out the property access + a typeof
    check to be outside the try-catch, and keep the call inside of it.
    
    The non-split version is only for cases when there is no 'throws'
    continuation (as is the case for yield* calling IteratorClose), so
    the existing BuildIteratorClose can be renamed to reflect this.
    
    Change-Id: Id71aea4fddd6ffb986bd9aaa09d29615a8800f71
    Reviewed-on: https://chromium-review.googlesource.com/c/1402789Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58694}
    7fbbce5f
destructuring-assignment.js 16.7 KB