• Marja Hölttä's avatar
    [parser|cleanup] Add tests for duplicate parameters. · ab4233e3
    Marja Hölttä authored
    There are at least 3 mechanisms for detecting duplicate parameters.
    - ExpressionClassifier
    - Scope::DeclareParameter checking IsDeclaredParameter
    - PatternRewriter::VisitVariableProxy failing to declare a duplicate parameter
    
    The conditions for when duplicate parameters are allowed and when not are pretty
    involved too. They are allowed when
    - the function is not an arrow function and not a concise method *and*
    - when the parameter list is simple *and*
    - we're in sloppy mode (incl. the function doesn't declare itself strict).
    
    In addition, we don't recognize some of the early errors, and it's 
    non-trivial to see which ones are recognized and which not (see bug
    v8:6108). E.g., (dup, dup) => {}; is recognized but (dup, [dup]) => {} is
    not. And (dup, [dup]) => 1; is.
    
    We do have tests for some aspects of duplicate parameters (e.g., arrow function
    duplicate parameters are included in arrow function tests), but it's hard to see
    whether all combinations of the relevant conditions are tested.
    
    This CL adds more structured tests which hopefully enables reducing the
    duplicate parameter detection mechanisms to 2 or maybe even to 1.
    
    BUG=v8:6092
    
    Change-Id: Idd3db43b380aae4b9a89be5f1ed0755d39bfb36d
    Reviewed-on: https://chromium-review.googlesource.com/456336
    Commit-Queue: Marja Hölttä <marja@chromium.org>
    Reviewed-by: 's avatarDaniel Vogelheim <vogelheim@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#43895}
    ab4233e3
duplicate-parameters.js 7.07 KB