diff --git a/test/language/expressions/async-arrow-function/async-lineterminator-identifier-throws.js b/test/language/expressions/async-arrow-function/async-lineterminator-identifier-throws.js new file mode 100644 index 0000000000..0716b5d4c4 --- /dev/null +++ b/test/language/expressions/async-arrow-function/async-lineterminator-identifier-throws.js @@ -0,0 +1,19 @@ +// Copyright (C) 2017 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-AsyncArrowFunction +description: > + async arrows cannot have a line terminator between "async" and the AsyncArrowBindingIdentifier +info: | + 14.7 Async Arrow Function Definitions + + AsyncArrowFunction: + async [no LineTerminator here] AsyncArrowBindingIdentifier [no LineTerminator here] => AsyncConciseBody + [...] +---*/ + +assert.throws(ReferenceError, function() { + async + identifier => {} +}); diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-lineterminator.js b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-lineterminator.js new file mode 100644 index 0000000000..8794324b1e --- /dev/null +++ b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-lineterminator.js @@ -0,0 +1,31 @@ +// Copyright (C) 2017 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-AsyncArrowHead +description: async arrows cannot have a line terminator between "async" and the formals +info: | + 14.7 Async Arrow Function Definitions + + AsyncArrowFunction: + [...] + CoverCallExpressionAndAsyncArrowHead [no LineTerminator here] => AsyncConciseBody + + Supplemental Syntax + + When processing an instance of the production + + AsyncArrowFunction: + CoverCallExpressionAndAsyncArrowHead [no LineTerminator here] => AsyncConciseBody + + the interpretation of CoverCallExpressionAndAsyncArrowHead is refined using the following grammar: + + AsyncArrowHead: + async [no LineTerminator here] ArrowFormalParameters +negative: + phase: early + type: SyntaxError +---*/ + +async +(foo) => { } diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js index 4d67144a28..a7266b66b4 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js @@ -10,6 +10,6 @@ negative: type: SyntaxError flags: [onlyStrict] ---*/ -!{ +({ async foo (arguments) { } -} +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-async-lineterminator.js b/test/language/expressions/object/method-definition/early-errors-object-method-async-lineterminator.js new file mode 100644 index 0000000000..35d23cf6fc --- /dev/null +++ b/test/language/expressions/object/method-definition/early-errors-object-method-async-lineterminator.js @@ -0,0 +1,20 @@ +// Copyright (C) 2017 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-AsyncMethod +description: async methods cannot have a line terminator between "async" and the property name +info: | + 14.6 Async Function Definitions + + AsyncMethod: + async [no LineTerminator here] PropertyName ( UniqueFormalParameters ) { AsyncFunctionBody } +negative: + phase: early + type: SyntaxError +---*/ + +({ + async + foo() { } +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js index 8b6dc5ebff..256aeb536b 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js @@ -9,7 +9,7 @@ negative: phase: early type: SyntaxError ---*/ -!{ +({ async foo (x = await) { } -} +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js index c606a9a449..566c98f698 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js @@ -9,6 +9,6 @@ negative: phase: early type: SyntaxError ---*/ -!{ +({ async foo (await) { } -} +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js b/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js index 8f8852146c..9a226b5669 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js @@ -9,6 +9,6 @@ negative: phase: early type: SyntaxError ---*/ -!{ +({ async foo () { super() } -} +}) 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 aee8ea55e8..0f135f6294 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 @@ -10,6 +10,6 @@ negative: phase: early type: SyntaxError ---*/ -!{ +({ async foo(a, a) { } -} +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js index b80ee27ac1..b1a0da9fa5 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js @@ -10,6 +10,6 @@ negative: type: SyntaxError flags: [onlyStrict] ---*/ -!{ +({ async foo(eval) { } -} +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js b/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js index 62bc0144e4..a356280bde 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js @@ -10,6 +10,6 @@ negative: type: SyntaxError ---*/ -!{ +({ async function foo(bar) { let bar; } -} +}) diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js b/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js index b3b50267ad..afc07f5347 100644 --- a/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js +++ b/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js @@ -9,6 +9,6 @@ negative: phase: early type: SyntaxError ---*/ -!{ +({ async foo(foo = super()) { } -} +})