diff --git a/test/language/expressions/arrow-function/params-duplicate.js b/test/language/expressions/arrow-function/params-duplicate.js new file mode 100644 index 0000000000000000000000000000000000000000..14fde6fbd07fd988047f27aa26af349013e159e0 --- /dev/null +++ b/test/language/expressions/arrow-function/params-duplicate.js @@ -0,0 +1,33 @@ +// Copyright 2019 Mike Pennisi. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arrow-function-definitions +description: Formal parameters may not contain duplicates +info: | + # 14.2 Arrow Function Definitions + + When the production + + ArrowParameters:CoverParenthesizedExpressionAndArrowParameterList + + is recognized the following grammar is used to refine the interpretation + of CoverParenthesizedExpressionAndArrowParameterList: + + ArrowFormalParameters[Yield, Await]: + (UniqueFormalParameters[?Yield, ?Await]) + + # 14.1.2 Static Semantics: Early Errors + + UniqueFormalParameters:FormalParameters + + - It is a Syntax Error if BoundNames of FormalParameters contains any + duplicate elements. +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +0, (a, a) => { }; diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js b/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js index b0be62af49678cb9105cd12e09a926042fc9e754..a6783b9889d3ee8d140e47c8c1e8661b9a1bd293 100644 --- a/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js +++ b/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js @@ -3,13 +3,30 @@ /*--- author: Brian Terlson <brian.terlson@microsoft.com> -esid: pending -description: > - If strict mode, early error rules for StrictFormalParameters are applied +esid: sec-async-arrow-function-definitions +description: Formal parameters may not contain duplicates +info: | + # 14.2 Arrow Function Definitions + + When the production + + ArrowParameters:CoverParenthesizedExpressionAndArrowParameterList + + is recognized the following grammar is used to refine the interpretation + of CoverParenthesizedExpressionAndArrowParameterList: + + ArrowFormalParameters[Yield, Await]: + (UniqueFormalParameters[?Yield, ?Await]) + + # 14.1.2 Static Semantics: Early Errors + + UniqueFormalParameters:FormalParameters + + - It is a Syntax Error if BoundNames of FormalParameters contains any + duplicate elements. negative: phase: parse type: SyntaxError -flags: [onlyStrict] ---*/ $DONOTEVALUATE(); diff --git a/test/language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js new file mode 100644 index 0000000000000000000000000000000000000000..bbf97846b27ecb02b4e2ba2c13b98690ee404944 --- /dev/null +++ b/test/language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js @@ -0,0 +1,28 @@ +// Copyright 2016 Microsoft, Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Brian Terlson <brian.terlson@microsoft.com> +esid: sec-async-function-definitions +description: Formal parameters may not contain duplicates +info: | + # 14.7 Async Function Definitions + + AsyncMethod[Yield, Await]: + async[no LineTerminator here]PropertyName[?Yield, ?Await](UniqueFormalParameters[~Yield, +Await]){AsyncFunctionBody} + + # 14.1.2 Static Semantics: Early Errors + + UniqueFormalParameters:FormalParameters + + - It is a Syntax Error if BoundNames of FormalParameters contains any + duplicate elements. +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); +({ + async foo(a, a) { } +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js index 79b0c1365900d91ffbff906e6e12bf092174342b..dbd6eed49250e718d7c81f328e6988232de31858 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js @@ -1,11 +1,21 @@ -// Copyright 2016 Microsoft, Inc. All rights reserved. +// Copyright 2019 Mike Pennisi. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -author: Brian Terlson <brian.terlson@microsoft.com> -esid: pending -description: > - Early error rules for StrictFormalParameters are applied +esid: sec-method-definitions +description: Formal parameters may not contain duplicates +info: | + # 14.3 Method Definitions + + MethodDefinition[Yield, Await]: + PropertyName[?Yield, ?Await](UniqueFormalParameters[~Yield, ~Await]){FunctionBody[~Yield, ~Await]} + + # 14.1.2 Static Semantics: Early Errors + + UniqueFormalParameters:FormalParameters + + - It is a Syntax Error if BoundNames of FormalParameters contains any + duplicate elements. negative: phase: parse type: SyntaxError @@ -13,5 +23,5 @@ negative: $DONOTEVALUATE(); ({ - async foo(a, a) { } + foo(a, a) { } }) diff --git a/test/language/statements/class/definition/early-errors-class-async-method-duplicate-parameters.js b/test/language/statements/class/definition/early-errors-class-async-method-duplicate-parameters.js new file mode 100644 index 0000000000000000000000000000000000000000..e9f6115277cf35b01e9f1548a5357758b2d405a6 --- /dev/null +++ b/test/language/statements/class/definition/early-errors-class-async-method-duplicate-parameters.js @@ -0,0 +1,29 @@ +// Copyright 2016 Microsoft, Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Brian Terlson <brian.terlson@microsoft.com> +esid: sec-async-function-definitions +description: Formal parameters may not contain duplicates +info: | + # 14.7 Arrow Function Definitions + + AsyncMethod[Yield, Await]: + async[no LineTerminator here]PropertyName[?Yield, ?Await](UniqueFormalParameters[~Yield, +Await]){AsyncFunctionBody} + + # 14.1.2 Static Semantics: Early Errors + + UniqueFormalParameters:FormalParameters + + - It is a Syntax Error if BoundNames of FormalParameters contains any + duplicate elements. +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +class Foo { + async foo(a, a) { } +} diff --git a/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js b/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js index 8187b54e95d39f8c52c2309631eef41f445a23f5..93077124d253d21ba2891a45c5a364367f238dcc 100644 --- a/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js +++ b/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js @@ -1,11 +1,21 @@ -// Copyright 2016 Microsoft, Inc. All rights reserved. +// Copyright 2019 Mike Pennisi. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -author: Brian Terlson <brian.terlson@microsoft.com> -esid: pending -description: > - Early error rules for StrictFormalParameters are applied +esid: sec-method-definitions +description: Formal parameters may not contain duplicates +info: | + # 14.3 Method Definitions + + MethodDefinition[Yield, Await]: + PropertyName[?Yield, ?Await](UniqueFormalParameters[~Yield, ~Await]){FunctionBody[~Yield, ~Await]} + + # 14.1.2 Static Semantics: Early Errors + + UniqueFormalParameters:FormalParameters + + - It is a Syntax Error if BoundNames of FormalParameters contains any + duplicate elements. negative: phase: parse type: SyntaxError @@ -14,5 +24,5 @@ negative: $DONOTEVALUATE(); class Foo { - async foo(a, a) { } + foo(a, a) { } }