1. 09 Jun, 2017 1 commit
  2. 17 Mar, 2017 1 commit
    • 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