1ac0965542
Add a flag harmony_trailing_commas_in_parameters that allows trailing commas in function parameter declaration lists and function call parameter lists. Trailing commas are allowed in parenthetical lists like `(a, b, c,)` only if the next token is `=>`, thereby making it an arrow function declaration. Only 1 trailing comma is allowed, not `(a,,)`. A trailing comma must follow a non-rest parameter, so `(,)` and `(...a,)` are still SyntaxErrors. However, a trailing comma is allowed after a spread parameter, e.g. `a(...b,);`. Add parser tests for all of the above. BUG=v8:5051 LOG=y Review-Url: https://codereview.chromium.org/2094463002 Cr-Commit-Position: refs/heads/master@{#37355}
32 lines
899 B
JavaScript
32 lines
899 B
JavaScript
// Copyright 2016 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --harmony-trailing-commas
|
|
|
|
function f1(a,) {}
|
|
function f2(a,b,) {}
|
|
function f3(a,b,c,) {}
|
|
assertEquals(1, f1.length);
|
|
assertEquals(2, f2.length);
|
|
assertEquals(3, f3.length);
|
|
|
|
function* g1(a,) {}
|
|
function* g2(a,b,) {}
|
|
function* g3(a,b,c,) {}
|
|
assertEquals(1, g1.length);
|
|
assertEquals(2, g2.length);
|
|
assertEquals(3, g3.length);
|
|
|
|
assertEquals(1, (function(a,) {}).length);
|
|
assertEquals(2, (function(a,b,) {}).length);
|
|
assertEquals(3, (function(a,b,c,) {}).length);
|
|
|
|
assertEquals(1, (function*(a,) {}).length);
|
|
assertEquals(2, (function*(a,b,) {}).length);
|
|
assertEquals(3, (function*(a,b,c,) {}).length);
|
|
|
|
assertEquals(1, ((a,) => {}).length);
|
|
assertEquals(2, ((a,b,) => {}).length);
|
|
assertEquals(3, ((a,b,c,) => {}).length);
|