• Tobias Tebbi's avatar
    [torque] avoid ambiguity if a catch catches from other handlers · 7e7b24eb
    Tobias Tebbi authored
    Torque desugars try-catch/label constructs with several handlers
    into nested try structures, with the first handler ending-up
    innermost. So currently, if you write
    
    try {
    ...
    } label Foo {
      Throw(...);
    } catch (e) {
    
    }
    
    The catch will catch the preceding Throw in another handler.
    This is different from how multiple try-catch handlers are done in
    languages like Java, where throwing from a preceding catch handler
    is not caught by a later one. To avoid this possible ambiguity, this
    CL prohibits this pattern, enforcing that a catch handler comes first,
    before any other label-handler attached to the same try.
    This way, a catch handler never catches from any other handler on the
    same try, since they have to come later.
    
    Bug: v8:7793
    Change-Id: I943f14b2393d307c4254a3fc3a78f236dbcf86df
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2169098
    Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
    Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#67516}
    7e7b24eb
Name
Last commit
Last update
..
ls Loading commit data...
OWNERS Loading commit data...
ast.h Loading commit data...
cfg.cc Loading commit data...
cfg.h Loading commit data...
class-debug-reader-generator.cc Loading commit data...
constants.h Loading commit data...
contextual.h Loading commit data...
csa-generator.cc Loading commit data...
csa-generator.h Loading commit data...
declarable.cc Loading commit data...
declarable.h Loading commit data...
declaration-visitor.cc Loading commit data...
declaration-visitor.h Loading commit data...
declarations.cc Loading commit data...
declarations.h Loading commit data...
earley-parser.cc Loading commit data...
earley-parser.h Loading commit data...
global-context.cc Loading commit data...
global-context.h Loading commit data...
implementation-visitor.cc Loading commit data...
implementation-visitor.h Loading commit data...
instance-type-generator.cc Loading commit data...
instructions.cc Loading commit data...
instructions.h Loading commit data...
parameter-difference.h Loading commit data...
runtime-support.h Loading commit data...
server-data.cc Loading commit data...
server-data.h Loading commit data...
source-positions.cc Loading commit data...
source-positions.h Loading commit data...
torque-compiler.cc Loading commit data...
torque-compiler.h Loading commit data...
torque-parser.cc Loading commit data...
torque-parser.h Loading commit data...
torque.cc Loading commit data...
type-inference.cc Loading commit data...
type-inference.h Loading commit data...
type-oracle.cc Loading commit data...
type-oracle.h Loading commit data...
type-visitor.cc Loading commit data...
type-visitor.h Loading commit data...
types.cc Loading commit data...
types.h Loading commit data...
utils.cc Loading commit data...
utils.h Loading commit data...