-
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: Daniel Vogelheim <vogelheim@chromium.org> Cr-Commit-Position: refs/heads/master@{#43895}
ab4233e3