mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 00:27:43 +00:00
LibJS: Implement rules for duplicate function parameters
- A regular function can have duplicate parameters except in strict mode or if its parameter list is not "simple" (has a default or rest parameter) - An arrow function can never have duplicate parameters Compared to other engines I opted for more useful syntax error messages than a generic "duplicate parameter name not allowed in this context": "use strict"; function test(foo, foo) {} ^ Uncaught exception: [SyntaxError]: Duplicate parameter 'foo' not allowed in strict mode (line: 1, column: 34) function test(foo, foo = 1) {} ^ Uncaught exception: [SyntaxError]: Duplicate parameter 'foo' not allowed in function with default parameter (line: 1, column: 20) function test(foo, ...foo) {} ^ Uncaught exception: [SyntaxError]: Duplicate parameter 'foo' not allowed in function with rest parameter (line: 1, column: 23) (foo, foo) => {} ^ Uncaught exception: [SyntaxError]: Duplicate parameter 'foo' not allowed in arrow function (line: 1, column: 7)
This commit is contained in:
parent
b1eeb15129
commit
dca9e4ec10
4 changed files with 83 additions and 7 deletions
|
@ -51,7 +51,7 @@ describe("normal behavior", () => {
|
|||
test("callback receives array", () => {
|
||||
var callbackCalled = 0;
|
||||
var a = [1, 2, 3];
|
||||
a.forEach((_, _, array) => {
|
||||
a.forEach((_, __, array) => {
|
||||
callbackCalled++;
|
||||
expect(a).toEqual(array);
|
||||
a.push("test");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue