From 42d993c45a064587b4fcbb8e24afaa4f1f77bddc Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Thu, 16 Mar 2017 13:27:13 -0400 Subject: [PATCH 1/9] Normalize folder async generator expressions --- .../early-errors-expression-NSPL-with-USD.js | 0 .../early-errors-expression-arguments-in-formal-parameters.js | 0 ...arly-errors-expression-await-as-function-binding-identifier.js | 0 .../early-errors-expression-binding-identifier-arguments.js | 0 .../early-errors-expression-binding-identifier-eval.js | 0 .../early-errors-expression-body-contains-super-call.js | 0 .../early-errors-expression-body-contains-super-property.js | 0 .../early-errors-expression-eval-in-formal-parameters.js | 0 .../early-errors-expression-formals-body-duplicate-const.js | 0 .../early-errors-expression-formals-body-duplicate-let.js | 0 .../early-errors-expression-formals-contains-await-expr.js | 0 .../early-errors-expression-formals-contains-await.js | 0 .../early-errors-expression-formals-contains-super-call.js | 0 .../early-errors-expression-formals-contains-super-property.js | 0 .../early-errors-expression-formals-contains-yield-expr.js | 0 .../early-errors-expression-formals-contains-yield.js | 0 .../early-errors-expression-label-name-await.js | 0 .../early-errors-expression-label-name-yield.js | 0 .../early-errors-expression-not-simple-assignment-target.js | 0 ...arly-errors-expression-yield-as-function-binding-identifier.js | 0 .../early-errors-expression-yield-star-after-newline.js | 0 .../expression-await-as-yield-operand.js | 0 .../expression-await-promise-as-yield-operand.js | 0 .../expression-await-thenable-as-yield-operand.js | 0 .../expression-yield-as-operand.js | 0 .../expression-yield-as-statement.js | 0 .../expression-yield-newline.js | 0 .../expression-yield-star-before-newline.js | 0 .../return-suspendedStart-promise.js | 0 .../return-suspendedStart.js | 0 .../return-suspendedYield-promise.js | 0 .../return-suspendedYield-try-finally-return.js | 0 .../return-suspendedYield-try-finally-throw.js | 0 .../return-suspendedYield-try-finally.js | 0 .../return-suspendedYield.js | 0 .../throw-suspendedStart-promise.js | 0 .../{async-generators => async-generator}/throw-suspendedStart.js | 0 .../throw-suspendedYield-promise.js | 0 .../throw-suspendedYield-try-catch.js | 0 .../throw-suspendedYield-try-finally-return.js | 0 .../throw-suspendedYield-try-finally-throw.js | 0 .../throw-suspendedYield-try-finally.js | 0 .../{async-generators => async-generator}/throw-suspendedYield.js | 0 43 files changed, 0 insertions(+), 0 deletions(-) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-NSPL-with-USD.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-arguments-in-formal-parameters.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-await-as-function-binding-identifier.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-binding-identifier-arguments.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-binding-identifier-eval.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-body-contains-super-call.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-body-contains-super-property.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-eval-in-formal-parameters.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-body-duplicate-const.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-body-duplicate-let.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-contains-await-expr.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-contains-await.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-contains-super-call.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-contains-super-property.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-contains-yield-expr.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-formals-contains-yield.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-label-name-await.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-label-name-yield.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-not-simple-assignment-target.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-yield-as-function-binding-identifier.js (100%) rename test/language/expressions/{async-generators => async-generator}/early-errors-expression-yield-star-after-newline.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-await-as-yield-operand.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-await-promise-as-yield-operand.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-await-thenable-as-yield-operand.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-yield-as-operand.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-yield-as-statement.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-yield-newline.js (100%) rename test/language/expressions/{async-generators => async-generator}/expression-yield-star-before-newline.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedStart-promise.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedStart.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedYield-promise.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedYield-try-finally-return.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedYield-try-finally-throw.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedYield-try-finally.js (100%) rename test/language/expressions/{async-generators => async-generator}/return-suspendedYield.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedStart-promise.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedStart.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedYield-promise.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedYield-try-catch.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedYield-try-finally-return.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedYield-try-finally-throw.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedYield-try-finally.js (100%) rename test/language/expressions/{async-generators => async-generator}/throw-suspendedYield.js (100%) diff --git a/test/language/expressions/async-generators/early-errors-expression-NSPL-with-USD.js b/test/language/expressions/async-generator/early-errors-expression-NSPL-with-USD.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-NSPL-with-USD.js rename to test/language/expressions/async-generator/early-errors-expression-NSPL-with-USD.js diff --git a/test/language/expressions/async-generators/early-errors-expression-arguments-in-formal-parameters.js b/test/language/expressions/async-generator/early-errors-expression-arguments-in-formal-parameters.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-arguments-in-formal-parameters.js rename to test/language/expressions/async-generator/early-errors-expression-arguments-in-formal-parameters.js diff --git a/test/language/expressions/async-generators/early-errors-expression-await-as-function-binding-identifier.js b/test/language/expressions/async-generator/early-errors-expression-await-as-function-binding-identifier.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-await-as-function-binding-identifier.js rename to test/language/expressions/async-generator/early-errors-expression-await-as-function-binding-identifier.js diff --git a/test/language/expressions/async-generators/early-errors-expression-binding-identifier-arguments.js b/test/language/expressions/async-generator/early-errors-expression-binding-identifier-arguments.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-binding-identifier-arguments.js rename to test/language/expressions/async-generator/early-errors-expression-binding-identifier-arguments.js diff --git a/test/language/expressions/async-generators/early-errors-expression-binding-identifier-eval.js b/test/language/expressions/async-generator/early-errors-expression-binding-identifier-eval.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-binding-identifier-eval.js rename to test/language/expressions/async-generator/early-errors-expression-binding-identifier-eval.js diff --git a/test/language/expressions/async-generators/early-errors-expression-body-contains-super-call.js b/test/language/expressions/async-generator/early-errors-expression-body-contains-super-call.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-body-contains-super-call.js rename to test/language/expressions/async-generator/early-errors-expression-body-contains-super-call.js diff --git a/test/language/expressions/async-generators/early-errors-expression-body-contains-super-property.js b/test/language/expressions/async-generator/early-errors-expression-body-contains-super-property.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-body-contains-super-property.js rename to test/language/expressions/async-generator/early-errors-expression-body-contains-super-property.js diff --git a/test/language/expressions/async-generators/early-errors-expression-eval-in-formal-parameters.js b/test/language/expressions/async-generator/early-errors-expression-eval-in-formal-parameters.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-eval-in-formal-parameters.js rename to test/language/expressions/async-generator/early-errors-expression-eval-in-formal-parameters.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-body-duplicate-const.js b/test/language/expressions/async-generator/early-errors-expression-formals-body-duplicate-const.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-body-duplicate-const.js rename to test/language/expressions/async-generator/early-errors-expression-formals-body-duplicate-const.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-body-duplicate-let.js b/test/language/expressions/async-generator/early-errors-expression-formals-body-duplicate-let.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-body-duplicate-let.js rename to test/language/expressions/async-generator/early-errors-expression-formals-body-duplicate-let.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-contains-await-expr.js b/test/language/expressions/async-generator/early-errors-expression-formals-contains-await-expr.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-contains-await-expr.js rename to test/language/expressions/async-generator/early-errors-expression-formals-contains-await-expr.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-contains-await.js b/test/language/expressions/async-generator/early-errors-expression-formals-contains-await.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-contains-await.js rename to test/language/expressions/async-generator/early-errors-expression-formals-contains-await.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-contains-super-call.js b/test/language/expressions/async-generator/early-errors-expression-formals-contains-super-call.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-contains-super-call.js rename to test/language/expressions/async-generator/early-errors-expression-formals-contains-super-call.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-contains-super-property.js b/test/language/expressions/async-generator/early-errors-expression-formals-contains-super-property.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-contains-super-property.js rename to test/language/expressions/async-generator/early-errors-expression-formals-contains-super-property.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-contains-yield-expr.js b/test/language/expressions/async-generator/early-errors-expression-formals-contains-yield-expr.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-contains-yield-expr.js rename to test/language/expressions/async-generator/early-errors-expression-formals-contains-yield-expr.js diff --git a/test/language/expressions/async-generators/early-errors-expression-formals-contains-yield.js b/test/language/expressions/async-generator/early-errors-expression-formals-contains-yield.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-formals-contains-yield.js rename to test/language/expressions/async-generator/early-errors-expression-formals-contains-yield.js diff --git a/test/language/expressions/async-generators/early-errors-expression-label-name-await.js b/test/language/expressions/async-generator/early-errors-expression-label-name-await.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-label-name-await.js rename to test/language/expressions/async-generator/early-errors-expression-label-name-await.js diff --git a/test/language/expressions/async-generators/early-errors-expression-label-name-yield.js b/test/language/expressions/async-generator/early-errors-expression-label-name-yield.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-label-name-yield.js rename to test/language/expressions/async-generator/early-errors-expression-label-name-yield.js diff --git a/test/language/expressions/async-generators/early-errors-expression-not-simple-assignment-target.js b/test/language/expressions/async-generator/early-errors-expression-not-simple-assignment-target.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-not-simple-assignment-target.js rename to test/language/expressions/async-generator/early-errors-expression-not-simple-assignment-target.js diff --git a/test/language/expressions/async-generators/early-errors-expression-yield-as-function-binding-identifier.js b/test/language/expressions/async-generator/early-errors-expression-yield-as-function-binding-identifier.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-yield-as-function-binding-identifier.js rename to test/language/expressions/async-generator/early-errors-expression-yield-as-function-binding-identifier.js diff --git a/test/language/expressions/async-generators/early-errors-expression-yield-star-after-newline.js b/test/language/expressions/async-generator/early-errors-expression-yield-star-after-newline.js similarity index 100% rename from test/language/expressions/async-generators/early-errors-expression-yield-star-after-newline.js rename to test/language/expressions/async-generator/early-errors-expression-yield-star-after-newline.js diff --git a/test/language/expressions/async-generators/expression-await-as-yield-operand.js b/test/language/expressions/async-generator/expression-await-as-yield-operand.js similarity index 100% rename from test/language/expressions/async-generators/expression-await-as-yield-operand.js rename to test/language/expressions/async-generator/expression-await-as-yield-operand.js diff --git a/test/language/expressions/async-generators/expression-await-promise-as-yield-operand.js b/test/language/expressions/async-generator/expression-await-promise-as-yield-operand.js similarity index 100% rename from test/language/expressions/async-generators/expression-await-promise-as-yield-operand.js rename to test/language/expressions/async-generator/expression-await-promise-as-yield-operand.js diff --git a/test/language/expressions/async-generators/expression-await-thenable-as-yield-operand.js b/test/language/expressions/async-generator/expression-await-thenable-as-yield-operand.js similarity index 100% rename from test/language/expressions/async-generators/expression-await-thenable-as-yield-operand.js rename to test/language/expressions/async-generator/expression-await-thenable-as-yield-operand.js diff --git a/test/language/expressions/async-generators/expression-yield-as-operand.js b/test/language/expressions/async-generator/expression-yield-as-operand.js similarity index 100% rename from test/language/expressions/async-generators/expression-yield-as-operand.js rename to test/language/expressions/async-generator/expression-yield-as-operand.js diff --git a/test/language/expressions/async-generators/expression-yield-as-statement.js b/test/language/expressions/async-generator/expression-yield-as-statement.js similarity index 100% rename from test/language/expressions/async-generators/expression-yield-as-statement.js rename to test/language/expressions/async-generator/expression-yield-as-statement.js diff --git a/test/language/expressions/async-generators/expression-yield-newline.js b/test/language/expressions/async-generator/expression-yield-newline.js similarity index 100% rename from test/language/expressions/async-generators/expression-yield-newline.js rename to test/language/expressions/async-generator/expression-yield-newline.js diff --git a/test/language/expressions/async-generators/expression-yield-star-before-newline.js b/test/language/expressions/async-generator/expression-yield-star-before-newline.js similarity index 100% rename from test/language/expressions/async-generators/expression-yield-star-before-newline.js rename to test/language/expressions/async-generator/expression-yield-star-before-newline.js diff --git a/test/language/expressions/async-generators/return-suspendedStart-promise.js b/test/language/expressions/async-generator/return-suspendedStart-promise.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedStart-promise.js rename to test/language/expressions/async-generator/return-suspendedStart-promise.js diff --git a/test/language/expressions/async-generators/return-suspendedStart.js b/test/language/expressions/async-generator/return-suspendedStart.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedStart.js rename to test/language/expressions/async-generator/return-suspendedStart.js diff --git a/test/language/expressions/async-generators/return-suspendedYield-promise.js b/test/language/expressions/async-generator/return-suspendedYield-promise.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedYield-promise.js rename to test/language/expressions/async-generator/return-suspendedYield-promise.js diff --git a/test/language/expressions/async-generators/return-suspendedYield-try-finally-return.js b/test/language/expressions/async-generator/return-suspendedYield-try-finally-return.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedYield-try-finally-return.js rename to test/language/expressions/async-generator/return-suspendedYield-try-finally-return.js diff --git a/test/language/expressions/async-generators/return-suspendedYield-try-finally-throw.js b/test/language/expressions/async-generator/return-suspendedYield-try-finally-throw.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedYield-try-finally-throw.js rename to test/language/expressions/async-generator/return-suspendedYield-try-finally-throw.js diff --git a/test/language/expressions/async-generators/return-suspendedYield-try-finally.js b/test/language/expressions/async-generator/return-suspendedYield-try-finally.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedYield-try-finally.js rename to test/language/expressions/async-generator/return-suspendedYield-try-finally.js diff --git a/test/language/expressions/async-generators/return-suspendedYield.js b/test/language/expressions/async-generator/return-suspendedYield.js similarity index 100% rename from test/language/expressions/async-generators/return-suspendedYield.js rename to test/language/expressions/async-generator/return-suspendedYield.js diff --git a/test/language/expressions/async-generators/throw-suspendedStart-promise.js b/test/language/expressions/async-generator/throw-suspendedStart-promise.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedStart-promise.js rename to test/language/expressions/async-generator/throw-suspendedStart-promise.js diff --git a/test/language/expressions/async-generators/throw-suspendedStart.js b/test/language/expressions/async-generator/throw-suspendedStart.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedStart.js rename to test/language/expressions/async-generator/throw-suspendedStart.js diff --git a/test/language/expressions/async-generators/throw-suspendedYield-promise.js b/test/language/expressions/async-generator/throw-suspendedYield-promise.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedYield-promise.js rename to test/language/expressions/async-generator/throw-suspendedYield-promise.js diff --git a/test/language/expressions/async-generators/throw-suspendedYield-try-catch.js b/test/language/expressions/async-generator/throw-suspendedYield-try-catch.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedYield-try-catch.js rename to test/language/expressions/async-generator/throw-suspendedYield-try-catch.js diff --git a/test/language/expressions/async-generators/throw-suspendedYield-try-finally-return.js b/test/language/expressions/async-generator/throw-suspendedYield-try-finally-return.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedYield-try-finally-return.js rename to test/language/expressions/async-generator/throw-suspendedYield-try-finally-return.js diff --git a/test/language/expressions/async-generators/throw-suspendedYield-try-finally-throw.js b/test/language/expressions/async-generator/throw-suspendedYield-try-finally-throw.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedYield-try-finally-throw.js rename to test/language/expressions/async-generator/throw-suspendedYield-try-finally-throw.js diff --git a/test/language/expressions/async-generators/throw-suspendedYield-try-finally.js b/test/language/expressions/async-generator/throw-suspendedYield-try-finally.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedYield-try-finally.js rename to test/language/expressions/async-generator/throw-suspendedYield-try-finally.js diff --git a/test/language/expressions/async-generators/throw-suspendedYield.js b/test/language/expressions/async-generator/throw-suspendedYield.js similarity index 100% rename from test/language/expressions/async-generators/throw-suspendedYield.js rename to test/language/expressions/async-generator/throw-suspendedYield.js From 76001a503f99e24482decb06357a807c3b5461ad Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Thu, 16 Mar 2017 12:58:01 -0400 Subject: [PATCH 2/9] Fix current generator templates --- .../default/class-decl-method.template | 33 +++++++++++++++++++ .../default/class-decl-static-method.template | 33 +++++++++++++++++++ ...on.template => class-expr-method.template} | 16 ++++----- .../default/class-expr-static-method.template | 33 +++++++++++++++++++ ...tatement.template => declaration.template} | 6 ++-- .../default/expression-named.template | 25 ++++++++++++++ src/generators/default/expression.template | 4 +-- ...efinition.template => obj-method.template} | 2 +- ...tatement.template => declaration.template} | 0 .../non-strict/expression-named.template | 25 ++++++++++++++ src/generators/non-strict/expression.template | 2 +- ...efinition.template => obj-method.template} | 4 +-- 12 files changed, 166 insertions(+), 17 deletions(-) create mode 100644 src/generators/default/class-decl-method.template create mode 100644 src/generators/default/class-decl-static-method.template rename src/generators/default/{class-method-definition.template => class-expr-method.template} (56%) create mode 100644 src/generators/default/class-expr-static-method.template rename src/generators/default/{statement.template => declaration.template} (68%) create mode 100644 src/generators/default/expression-named.template rename src/generators/default/{method-definition.template => obj-method.template} (89%) rename src/generators/non-strict/{statement.template => declaration.template} (100%) create mode 100644 src/generators/non-strict/expression-named.template rename src/generators/non-strict/{method-definition.template => obj-method.template} (75%) diff --git a/src/generators/default/class-decl-method.template b/src/generators/default/class-decl-method.template new file mode 100644 index 0000000000..ad49590307 --- /dev/null +++ b/src/generators/default/class-decl-method.template @@ -0,0 +1,33 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +path: language/statements/class/gen-method- +name: Geenerator method as a ClassDeclaration element +esid: prod-GeneratorMethod +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +class C { *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/generators/default/class-decl-static-method.template b/src/generators/default/class-decl-static-method.template new file mode 100644 index 0000000000..dcd8f4e68c --- /dev/null +++ b/src/generators/default/class-decl-static-method.template @@ -0,0 +1,33 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +path: language/statements/class/gen-method-static- +name: Static generator method as a ClassDeclaration element +esid: prod-GeneratorMethod +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +class C {static *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/generators/default/class-method-definition.template b/src/generators/default/class-expr-method.template similarity index 56% rename from src/generators/default/class-method-definition.template rename to src/generators/default/class-expr-method.template index 4515d51ef5..8580bb9391 100644 --- a/src/generators/default/class-method-definition.template +++ b/src/generators/default/class-expr-method.template @@ -2,24 +2,24 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- path: language/expressions/class/gen-method- -name: Generator method as a ClassElement +name: Generator method as a ClassExpression element esid: prod-GeneratorMethod info: | - ClassElement[Yield, Await]: - MethodDefinition[?Yield, ?Await] + ClassElement : + MethodDefinition - MethodDefinition[Yield, Await]: - GeneratorMethod[?Yield, ?Await] + MethodDefinition : + GeneratorMethod 14.4 Generator Function Definitions - GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } ---*/ var callCount = 0; -class C { *gen() { +var C = class {*gen() { callCount += 1; /*{ body }*/ }} diff --git a/src/generators/default/class-expr-static-method.template b/src/generators/default/class-expr-static-method.template new file mode 100644 index 0000000000..dd6e4ef0f7 --- /dev/null +++ b/src/generators/default/class-expr-static-method.template @@ -0,0 +1,33 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +path: language/expressions/class/gen-method-static- +name: Static generator method as a ClassExpression element +esid: prod-GeneratorMethod +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +var C = class { static *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/generators/default/statement.template b/src/generators/default/declaration.template similarity index 68% rename from src/generators/default/statement.template rename to src/generators/default/declaration.template index d70481d62f..c9454f6921 100644 --- a/src/generators/default/statement.template +++ b/src/generators/default/declaration.template @@ -2,13 +2,13 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- path: language/statements/generators/ -name: Generator function declaration +name: Generator Function declaration esid: prod-GeneratorDeclaration info: | 14.4 Generator Function Definitions - GeneratorDeclaration[Yield, Await, Default]: - function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorDeclaration : + function * BindingIdentifier ( FormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/src/generators/default/expression-named.template b/src/generators/default/expression-named.template new file mode 100644 index 0000000000..1a2ad892d9 --- /dev/null +++ b/src/generators/default/expression-named.template @@ -0,0 +1,25 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +path: language/expressions/generators/named- +name: Named generator expression +esid: prod-GeneratorExpression +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + /*{ body }*/ +}; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/generators/default/expression.template b/src/generators/default/expression.template index ddead781f5..f66994b8b1 100644 --- a/src/generators/default/expression.template +++ b/src/generators/default/expression.template @@ -2,13 +2,13 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- path: language/expressions/generators/ -name: Generator expression +name: Unnamed generator expression esid: prod-GeneratorExpression info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/src/generators/default/method-definition.template b/src/generators/default/obj-method.template similarity index 89% rename from src/generators/default/method-definition.template rename to src/generators/default/obj-method.template index d075f36830..d909462bc7 100644 --- a/src/generators/default/method-definition.template +++ b/src/generators/default/obj-method.template @@ -1,7 +1,7 @@ // Copyright (C) 2017 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -path: language/expressions/object/method-definition/generator- +path: language/expressions/object/method-definition/gen- name: Generator method esid: prod-GeneratorMethod info: | diff --git a/src/generators/non-strict/statement.template b/src/generators/non-strict/declaration.template similarity index 100% rename from src/generators/non-strict/statement.template rename to src/generators/non-strict/declaration.template diff --git a/src/generators/non-strict/expression-named.template b/src/generators/non-strict/expression-named.template new file mode 100644 index 0000000000..43448e0963 --- /dev/null +++ b/src/generators/non-strict/expression-named.template @@ -0,0 +1,25 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +path: language/expressions/generators/named- +name: Generator named expression - valid for non-strict only cases +esid: prod-GeneratorExpression +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + /*{ body }*/ +}; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/generators/non-strict/expression.template b/src/generators/non-strict/expression.template index 1237f25f66..285a84b75b 100644 --- a/src/generators/non-strict/expression.template +++ b/src/generators/non-strict/expression.template @@ -8,7 +8,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/src/generators/non-strict/method-definition.template b/src/generators/non-strict/obj-method.template similarity index 75% rename from src/generators/non-strict/method-definition.template rename to src/generators/non-strict/obj-method.template index 84cee1cfd1..67b6e23377 100644 --- a/src/generators/non-strict/method-definition.template +++ b/src/generators/non-strict/obj-method.template @@ -1,14 +1,14 @@ // Copyright (C) 2017 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -path: language/expressions/object/method-definition/generator- +path: language/expressions/object/method-definition/gen- name: Generator method - valid for non-strict only cases esid: prod-GeneratorMethod info: | 14.4 Generator Function Definitions GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } ---*/ var callCount = 0; From 74b07de387d4976eb232cbf69338f5a7305486e3 Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Thu, 16 Mar 2017 15:54:24 -0400 Subject: [PATCH 3/9] Generate tests --- ...d-static-yield-identifier-spread-strict.js | 50 +++++++++++++++++ ...n-method-static-yield-identifier-strict.js | 40 ++++++++++++++ ...method-static-yield-spread-arr-multiple.js | 48 ++++++++++++++++ ...n-method-static-yield-spread-arr-single.js | 46 ++++++++++++++++ .../gen-method-static-yield-spread-obj.js | 55 +++++++++++++++++++ ...n-method-yield-identifier-spread-strict.js | 18 +++--- .../gen-method-yield-identifier-strict.js | 18 +++--- .../gen-method-yield-spread-arr-multiple.js | 18 +++--- .../gen-method-yield-spread-arr-single.js | 18 +++--- .../class/gen-method-yield-spread-obj.js | 18 +++--- .../named-yield-identifier-non-strict.js | 37 +++++++++++++ ...amed-yield-identifier-spread-non-strict.js | 55 +++++++++++++++++++ .../named-yield-identifier-spread-strict.js | 42 ++++++++++++++ .../named-yield-identifier-strict.js | 32 +++++++++++ .../named-yield-spread-arr-multiple.js | 40 ++++++++++++++ .../named-yield-spread-arr-single.js | 38 +++++++++++++ .../generators/named-yield-spread-obj.js | 47 ++++++++++++++++ .../generators/yield-identifier-non-strict.js | 2 +- .../yield-identifier-spread-non-strict.js | 2 +- .../yield-identifier-spread-strict.js | 4 +- .../generators/yield-identifier-strict.js | 4 +- .../generators/yield-spread-arr-multiple.js | 4 +- .../generators/yield-spread-arr-single.js | 4 +- .../generators/yield-spread-obj.js | 4 +- ....js => gen-yield-identifier-non-strict.js} | 4 +- ...gen-yield-identifier-spread-non-strict.js} | 4 +- ... => gen-yield-identifier-spread-strict.js} | 2 +- ...rict.js => gen-yield-identifier-strict.js} | 2 +- ...le.js => gen-yield-spread-arr-multiple.js} | 2 +- ...ngle.js => gen-yield-spread-arr-single.js} | 2 +- ...-spread-obj.js => gen-yield-spread-obj.js} | 2 +- ...d-static-yield-identifier-spread-strict.js | 50 +++++++++++++++++ ...n-method-static-yield-identifier-strict.js | 40 ++++++++++++++ ...method-static-yield-spread-arr-multiple.js | 48 ++++++++++++++++ ...n-method-static-yield-spread-arr-single.js | 46 ++++++++++++++++ .../gen-method-static-yield-spread-obj.js | 55 +++++++++++++++++++ ...n-method-yield-identifier-spread-strict.js | 50 +++++++++++++++++ .../gen-method-yield-identifier-strict.js | 40 ++++++++++++++ .../gen-method-yield-spread-arr-multiple.js | 48 ++++++++++++++++ .../gen-method-yield-spread-arr-single.js | 46 ++++++++++++++++ .../class/gen-method-yield-spread-obj.js | 55 +++++++++++++++++++ .../generators/yield-identifier-non-strict.js | 2 +- .../yield-identifier-spread-non-strict.js | 2 +- .../yield-identifier-spread-strict.js | 8 +-- .../generators/yield-identifier-strict.js | 8 +-- .../generators/yield-spread-arr-multiple.js | 8 +-- .../generators/yield-spread-arr-single.js | 8 +-- .../statements/generators/yield-spread-obj.js | 8 +-- 48 files changed, 1096 insertions(+), 88 deletions(-) create mode 100644 test/language/expressions/class/gen-method-static-yield-identifier-spread-strict.js create mode 100644 test/language/expressions/class/gen-method-static-yield-identifier-strict.js create mode 100644 test/language/expressions/class/gen-method-static-yield-spread-arr-multiple.js create mode 100644 test/language/expressions/class/gen-method-static-yield-spread-arr-single.js create mode 100644 test/language/expressions/class/gen-method-static-yield-spread-obj.js create mode 100644 test/language/expressions/generators/named-yield-identifier-non-strict.js create mode 100644 test/language/expressions/generators/named-yield-identifier-spread-non-strict.js create mode 100644 test/language/expressions/generators/named-yield-identifier-spread-strict.js create mode 100644 test/language/expressions/generators/named-yield-identifier-strict.js create mode 100644 test/language/expressions/generators/named-yield-spread-arr-multiple.js create mode 100644 test/language/expressions/generators/named-yield-spread-arr-single.js create mode 100644 test/language/expressions/generators/named-yield-spread-obj.js rename test/language/expressions/object/method-definition/{generator-yield-identifier-non-strict.js => gen-yield-identifier-non-strict.js} (84%) rename test/language/expressions/object/method-definition/{generator-yield-identifier-spread-non-strict.js => gen-yield-identifier-spread-non-strict.js} (89%) rename test/language/expressions/object/method-definition/{generator-yield-identifier-spread-strict.js => gen-yield-identifier-spread-strict.js} (94%) rename test/language/expressions/object/method-definition/{generator-yield-identifier-strict.js => gen-yield-identifier-strict.js} (93%) rename test/language/expressions/object/method-definition/{generator-yield-spread-arr-multiple.js => gen-yield-spread-arr-multiple.js} (94%) rename test/language/expressions/object/method-definition/{generator-yield-spread-arr-single.js => gen-yield-spread-arr-single.js} (94%) rename test/language/expressions/object/method-definition/{generator-yield-spread-obj.js => gen-yield-spread-obj.js} (95%) create mode 100644 test/language/statements/class/gen-method-static-yield-identifier-spread-strict.js create mode 100644 test/language/statements/class/gen-method-static-yield-identifier-strict.js create mode 100644 test/language/statements/class/gen-method-static-yield-spread-arr-multiple.js create mode 100644 test/language/statements/class/gen-method-static-yield-spread-arr-single.js create mode 100644 test/language/statements/class/gen-method-static-yield-spread-obj.js create mode 100644 test/language/statements/class/gen-method-yield-identifier-spread-strict.js create mode 100644 test/language/statements/class/gen-method-yield-identifier-strict.js create mode 100644 test/language/statements/class/gen-method-yield-spread-arr-multiple.js create mode 100644 test/language/statements/class/gen-method-yield-spread-arr-single.js create mode 100644 test/language/statements/class/gen-method-yield-spread-obj.js diff --git a/test/language/expressions/class/gen-method-static-yield-identifier-spread-strict.js b/test/language/expressions/class/gen-method-static-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..045a8d8817 --- /dev/null +++ b/test/language/expressions/class/gen-method-static-yield-identifier-spread-strict.js @@ -0,0 +1,50 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-spread-strict.case +// - src/generators/default/class-expr-static-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Static generator method as a ClassExpression element) +esid: prod-GeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var C = class { static *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/gen-method-static-yield-identifier-strict.js b/test/language/expressions/class/gen-method-static-yield-identifier-strict.js new file mode 100644 index 0000000000..7de5baf3dc --- /dev/null +++ b/test/language/expressions/class/gen-method-static-yield-identifier-strict.js @@ -0,0 +1,40 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-strict.case +// - src/generators/default/class-expr-static-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Static generator method as a ClassExpression element) +esid: prod-GeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +var C = class { static *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/gen-method-static-yield-spread-arr-multiple.js b/test/language/expressions/class/gen-method-static-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..c522fe8c9f --- /dev/null +++ b/test/language/expressions/class/gen-method-static-yield-spread-arr-multiple.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-multiple.case +// - src/generators/default/class-expr-static-method.template +/*--- +description: Use yield value in a array spread position (Static generator method as a ClassExpression element) +esid: prod-GeneratorMethod +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + +var callCount = 0; + +var C = class { static *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); +item = iter.next(item.value); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js b/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js new file mode 100644 index 0000000000..9e98366650 --- /dev/null +++ b/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js @@ -0,0 +1,46 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-single.case +// - src/generators/default/class-expr-static-method.template +/*--- +description: Use yield value in a array spread position (Static generator method as a ClassExpression element) +esid: prod-GeneratorMethod +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + +var callCount = 0; + +var C = class { static *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/gen-method-static-yield-spread-obj.js b/test/language/expressions/class/gen-method-static-yield-spread-obj.js new file mode 100644 index 0000000000..22c26e1970 --- /dev/null +++ b/test/language/expressions/class/gen-method-static-yield-spread-obj.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-obj.case +// - src/generators/default/class-expr-static-method.template +/*--- +description: Use yield value in a object spread position (Static generator method as a ClassExpression element) +esid: prod-GeneratorMethod +features: [object-spread] +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var C = class { static *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +assert.sameValue(item.value.x, 42); +assert.sameValue(item.value.y, 39); +assert.sameValue(Object.keys(item.value).length, 2); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/gen-method-yield-identifier-spread-strict.js b/test/language/expressions/class/gen-method-yield-identifier-spread-strict.js index b4b808dad8..c60ac8d463 100644 --- a/test/language/expressions/class/gen-method-yield-identifier-spread-strict.js +++ b/test/language/expressions/class/gen-method-yield-identifier-spread-strict.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-spread-strict.case -// - src/generators/default/class-method-definition.template +// - src/generators/default/class-expr-method.template /*--- -description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator method as a ClassElement) +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator method as a ClassExpression element) esid: prod-GeneratorMethod features: [object-spread] flags: [generated, onlyStrict] @@ -10,16 +10,16 @@ negative: phase: early type: SyntaxError info: | - ClassElement[Yield, Await]: - MethodDefinition[?Yield, ?Await] + ClassElement : + MethodDefinition - MethodDefinition[Yield, Await]: - GeneratorMethod[?Yield, ?Await] + MethodDefinition : + GeneratorMethod 14.4 Generator Function Definitions - GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } Spread Properties @@ -31,7 +31,7 @@ info: | var callCount = 0; -class C { *gen() { +var C = class {*gen() { callCount += 1; return { ...(function() { diff --git a/test/language/expressions/class/gen-method-yield-identifier-strict.js b/test/language/expressions/class/gen-method-yield-identifier-strict.js index e9c76cef22..a9e667e528 100644 --- a/test/language/expressions/class/gen-method-yield-identifier-strict.js +++ b/test/language/expressions/class/gen-method-yield-identifier-strict.js @@ -1,29 +1,29 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-strict.case -// - src/generators/default/class-method-definition.template +// - src/generators/default/class-expr-method.template /*--- -description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator method as a ClassElement) +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator method as a ClassExpression element) esid: prod-GeneratorMethod flags: [generated, onlyStrict] negative: phase: early type: SyntaxError info: | - ClassElement[Yield, Await]: - MethodDefinition[?Yield, ?Await] + ClassElement : + MethodDefinition - MethodDefinition[Yield, Await]: - GeneratorMethod[?Yield, ?Await] + MethodDefinition : + GeneratorMethod 14.4 Generator Function Definitions - GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } ---*/ var callCount = 0; -class C { *gen() { +var C = class {*gen() { callCount += 1; (function() { var yield; diff --git a/test/language/expressions/class/gen-method-yield-spread-arr-multiple.js b/test/language/expressions/class/gen-method-yield-spread-arr-multiple.js index 2bb68b422c..ac42e5da8e 100644 --- a/test/language/expressions/class/gen-method-yield-spread-arr-multiple.js +++ b/test/language/expressions/class/gen-method-yield-spread-arr-multiple.js @@ -1,22 +1,22 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-arr-multiple.case -// - src/generators/default/class-method-definition.template +// - src/generators/default/class-expr-method.template /*--- -description: Use yield value in a array spread position (Generator method as a ClassElement) +description: Use yield value in a array spread position (Generator method as a ClassExpression element) esid: prod-GeneratorMethod flags: [generated] includes: [compareArray.js] info: | - ClassElement[Yield, Await]: - MethodDefinition[?Yield, ?Await] + ClassElement : + MethodDefinition - MethodDefinition[Yield, Await]: - GeneratorMethod[?Yield, ?Await] + MethodDefinition : + GeneratorMethod 14.4 Generator Function Definitions - GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } Array Initializer @@ -29,7 +29,7 @@ var item; var callCount = 0; -class C { *gen() { +var C = class {*gen() { callCount += 1; yield [...yield yield]; }} diff --git a/test/language/expressions/class/gen-method-yield-spread-arr-single.js b/test/language/expressions/class/gen-method-yield-spread-arr-single.js index 6732fcd7bd..a9ecc6af52 100644 --- a/test/language/expressions/class/gen-method-yield-spread-arr-single.js +++ b/test/language/expressions/class/gen-method-yield-spread-arr-single.js @@ -1,22 +1,22 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-arr-single.case -// - src/generators/default/class-method-definition.template +// - src/generators/default/class-expr-method.template /*--- -description: Use yield value in a array spread position (Generator method as a ClassElement) +description: Use yield value in a array spread position (Generator method as a ClassExpression element) esid: prod-GeneratorMethod flags: [generated] includes: [compareArray.js] info: | - ClassElement[Yield, Await]: - MethodDefinition[?Yield, ?Await] + ClassElement : + MethodDefinition - MethodDefinition[Yield, Await]: - GeneratorMethod[?Yield, ?Await] + MethodDefinition : + GeneratorMethod 14.4 Generator Function Definitions - GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } Array Initializer @@ -28,7 +28,7 @@ var arr = ['a', 'b', 'c']; var callCount = 0; -class C { *gen() { +var C = class {*gen() { callCount += 1; yield [...yield]; }} diff --git a/test/language/expressions/class/gen-method-yield-spread-obj.js b/test/language/expressions/class/gen-method-yield-spread-obj.js index 6795c84517..192c508b2b 100644 --- a/test/language/expressions/class/gen-method-yield-spread-obj.js +++ b/test/language/expressions/class/gen-method-yield-spread-obj.js @@ -1,23 +1,23 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-obj.case -// - src/generators/default/class-method-definition.template +// - src/generators/default/class-expr-method.template /*--- -description: Use yield value in a object spread position (Generator method as a ClassElement) +description: Use yield value in a object spread position (Generator method as a ClassExpression element) esid: prod-GeneratorMethod features: [object-spread] flags: [generated] includes: [compareArray.js] info: | - ClassElement[Yield, Await]: - MethodDefinition[?Yield, ?Await] + ClassElement : + MethodDefinition - MethodDefinition[Yield, Await]: - GeneratorMethod[?Yield, ?Await] + MethodDefinition : + GeneratorMethod 14.4 Generator Function Definitions - GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } Spread Properties @@ -29,7 +29,7 @@ info: | var callCount = 0; -class C { *gen() { +var C = class {*gen() { callCount += 1; yield { ...yield, diff --git a/test/language/expressions/generators/named-yield-identifier-non-strict.js b/test/language/expressions/generators/named-yield-identifier-non-strict.js new file mode 100644 index 0000000000..857edb209b --- /dev/null +++ b/test/language/expressions/generators/named-yield-identifier-non-strict.js @@ -0,0 +1,37 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-non-strict.case +// - src/generators/non-strict/expression-named.template +/*--- +description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Generator named expression - valid for non-strict only cases) +esid: prod-GeneratorExpression +flags: [generated, noStrict] +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + return (function(arg) { + var yield = arg + 1; + return yield; + }(yield)) +}; + +var iter = gen(); + +var item = iter.next(); + +assert.sameValue(item.done, false); +assert.sameValue(item.value, undefined); + +item = iter.next(42); + +assert.sameValue(item.done, true); +assert.sameValue(item.value, 43); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js b/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js new file mode 100644 index 0000000000..4931f2f953 --- /dev/null +++ b/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-spread-non-strict.case +// - src/generators/non-strict/expression-named.template +/*--- +description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Generator named expression - valid for non-strict only cases) +esid: prod-GeneratorExpression +features: [object-spread] +flags: [generated, noStrict] +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + yield { + ...yield yield, + ...(function(arg) { + var yield = arg; + return {...yield}; + }(yield)), + ...yield, + } +}; + +var iter = gen(); + +var iter = gen(); + +iter.next(); +iter.next(); +iter.next({ x: 10, a: 0, b: 0 }); +iter.next({ y: 20, a: 1, b: 1 }); +var item = iter.next({ z: 30, b: 2 }); + +assert.sameValue(item.done, false); +assert.sameValue(item.value.x, 10); +assert.sameValue(item.value.y, 20); +assert.sameValue(item.value.z, 30); +assert.sameValue(item.value.a, 1); +assert.sameValue(item.value.b, 2); +assert.sameValue(Object.keys(item.value).length, 5); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-identifier-spread-strict.js b/test/language/expressions/generators/named-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..f375e7a0f8 --- /dev/null +++ b/test/language/expressions/generators/named-yield-identifier-spread-strict.js @@ -0,0 +1,42 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-spread-strict.case +// - src/generators/default/expression-named.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Named generator expression) +esid: prod-GeneratorExpression +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-identifier-strict.js b/test/language/expressions/generators/named-yield-identifier-strict.js new file mode 100644 index 0000000000..70101210b2 --- /dev/null +++ b/test/language/expressions/generators/named-yield-identifier-strict.js @@ -0,0 +1,32 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-strict.case +// - src/generators/default/expression-named.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Named generator expression) +esid: prod-GeneratorExpression +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-spread-arr-multiple.js b/test/language/expressions/generators/named-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..616f13cb4b --- /dev/null +++ b/test/language/expressions/generators/named-yield-spread-arr-multiple.js @@ -0,0 +1,40 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-multiple.case +// - src/generators/default/expression-named.template +/*--- +description: Use yield value in a array spread position (Named generator expression) +esid: prod-GeneratorExpression +flags: [generated] +includes: [compareArray.js] +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + yield [...yield yield]; +}; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); +item = iter.next(item.value); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-spread-arr-single.js b/test/language/expressions/generators/named-yield-spread-arr-single.js new file mode 100644 index 0000000000..eb2b8534d2 --- /dev/null +++ b/test/language/expressions/generators/named-yield-spread-arr-single.js @@ -0,0 +1,38 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-single.case +// - src/generators/default/expression-named.template +/*--- +description: Use yield value in a array spread position (Named generator expression) +esid: prod-GeneratorExpression +flags: [generated] +includes: [compareArray.js] +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + yield [...yield]; +}; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-spread-obj.js b/test/language/expressions/generators/named-yield-spread-obj.js new file mode 100644 index 0000000000..8688561476 --- /dev/null +++ b/test/language/expressions/generators/named-yield-spread-obj.js @@ -0,0 +1,47 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-obj.case +// - src/generators/default/expression-named.template +/*--- +description: Use yield value in a object spread position (Named generator expression) +esid: prod-GeneratorExpression +features: [object-spread] +flags: [generated] +includes: [compareArray.js] +info: | + 14.4 Generator Function Definitions + + GeneratorExpression: + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var gen = function *g() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +assert.sameValue(item.value.x, 42); +assert.sameValue(item.value.y, 39); +assert.sameValue(Object.keys(item.value).length, 2); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/yield-identifier-non-strict.js b/test/language/expressions/generators/yield-identifier-non-strict.js index 80420e6d08..8cbb2e7fc8 100644 --- a/test/language/expressions/generators/yield-identifier-non-strict.js +++ b/test/language/expressions/generators/yield-identifier-non-strict.js @@ -9,7 +9,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/test/language/expressions/generators/yield-identifier-spread-non-strict.js b/test/language/expressions/generators/yield-identifier-spread-non-strict.js index fd9025f6c9..2991544a06 100644 --- a/test/language/expressions/generators/yield-identifier-spread-non-strict.js +++ b/test/language/expressions/generators/yield-identifier-spread-non-strict.js @@ -10,7 +10,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } Spread Properties diff --git a/test/language/expressions/generators/yield-identifier-spread-strict.js b/test/language/expressions/generators/yield-identifier-spread-strict.js index c485c04500..3b1d37d617 100644 --- a/test/language/expressions/generators/yield-identifier-spread-strict.js +++ b/test/language/expressions/generators/yield-identifier-spread-strict.js @@ -2,7 +2,7 @@ // - src/generators/yield-identifier-spread-strict.case // - src/generators/default/expression.template /*--- -description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator expression) +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Unnamed generator expression) esid: prod-GeneratorExpression features: [object-spread] flags: [generated, onlyStrict] @@ -13,7 +13,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } Spread Properties diff --git a/test/language/expressions/generators/yield-identifier-strict.js b/test/language/expressions/generators/yield-identifier-strict.js index f6bdb03ede..b6554db8fd 100644 --- a/test/language/expressions/generators/yield-identifier-strict.js +++ b/test/language/expressions/generators/yield-identifier-strict.js @@ -2,7 +2,7 @@ // - src/generators/yield-identifier-strict.case // - src/generators/default/expression.template /*--- -description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator expression) +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Unnamed generator expression) esid: prod-GeneratorExpression flags: [generated, onlyStrict] negative: @@ -12,7 +12,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/test/language/expressions/generators/yield-spread-arr-multiple.js b/test/language/expressions/generators/yield-spread-arr-multiple.js index 272a6acb66..f8958a970f 100644 --- a/test/language/expressions/generators/yield-spread-arr-multiple.js +++ b/test/language/expressions/generators/yield-spread-arr-multiple.js @@ -2,7 +2,7 @@ // - src/generators/yield-spread-arr-multiple.case // - src/generators/default/expression.template /*--- -description: Use yield value in a array spread position (Generator expression) +description: Use yield value in a array spread position (Unnamed generator expression) esid: prod-GeneratorExpression flags: [generated] includes: [compareArray.js] @@ -10,7 +10,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } Array Initializer diff --git a/test/language/expressions/generators/yield-spread-arr-single.js b/test/language/expressions/generators/yield-spread-arr-single.js index 636ac3e889..f9cba19aa3 100644 --- a/test/language/expressions/generators/yield-spread-arr-single.js +++ b/test/language/expressions/generators/yield-spread-arr-single.js @@ -2,7 +2,7 @@ // - src/generators/yield-spread-arr-single.case // - src/generators/default/expression.template /*--- -description: Use yield value in a array spread position (Generator expression) +description: Use yield value in a array spread position (Unnamed generator expression) esid: prod-GeneratorExpression flags: [generated] includes: [compareArray.js] @@ -10,7 +10,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } Array Initializer diff --git a/test/language/expressions/generators/yield-spread-obj.js b/test/language/expressions/generators/yield-spread-obj.js index f7c6f2e85e..e05908ccac 100644 --- a/test/language/expressions/generators/yield-spread-obj.js +++ b/test/language/expressions/generators/yield-spread-obj.js @@ -2,7 +2,7 @@ // - src/generators/yield-spread-obj.case // - src/generators/default/expression.template /*--- -description: Use yield value in a object spread position (Generator expression) +description: Use yield value in a object spread position (Unnamed generator expression) esid: prod-GeneratorExpression features: [object-spread] flags: [generated] @@ -11,7 +11,7 @@ info: | 14.4 Generator Function Definitions GeneratorExpression: - function * BindingIdentifier[+Yield, ~Await]opt ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + function * BindingIdentifier opt ( FormalParameters ) { GeneratorBody } Spread Properties diff --git a/test/language/expressions/object/method-definition/generator-yield-identifier-non-strict.js b/test/language/expressions/object/method-definition/gen-yield-identifier-non-strict.js similarity index 84% rename from test/language/expressions/object/method-definition/generator-yield-identifier-non-strict.js rename to test/language/expressions/object/method-definition/gen-yield-identifier-non-strict.js index 3790d7b8aa..bb23db9746 100644 --- a/test/language/expressions/object/method-definition/generator-yield-identifier-non-strict.js +++ b/test/language/expressions/object/method-definition/gen-yield-identifier-non-strict.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-non-strict.case -// - src/generators/non-strict/method-definition.template +// - src/generators/non-strict/obj-method.template /*--- description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Generator method - valid for non-strict only cases) esid: prod-GeneratorMethod @@ -9,7 +9,7 @@ info: | 14.4 Generator Function Definitions GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/test/language/expressions/object/method-definition/generator-yield-identifier-spread-non-strict.js b/test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js similarity index 89% rename from test/language/expressions/object/method-definition/generator-yield-identifier-spread-non-strict.js rename to test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js index 6e527d280b..02c646bf75 100644 --- a/test/language/expressions/object/method-definition/generator-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-spread-non-strict.case -// - src/generators/non-strict/method-definition.template +// - src/generators/non-strict/obj-method.template /*--- description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Generator method - valid for non-strict only cases) esid: prod-GeneratorMethod @@ -10,7 +10,7 @@ info: | 14.4 Generator Function Definitions GeneratorMethod[Yield, Await]: - * PropertyName[?Yield, ?Await] ( UniqueFormalParameters[+Yield, ~Await] ) { GeneratorBody } + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } Spread Properties diff --git a/test/language/expressions/object/method-definition/generator-yield-identifier-spread-strict.js b/test/language/expressions/object/method-definition/gen-yield-identifier-spread-strict.js similarity index 94% rename from test/language/expressions/object/method-definition/generator-yield-identifier-spread-strict.js rename to test/language/expressions/object/method-definition/gen-yield-identifier-spread-strict.js index 3d43dc7804..801084fe31 100644 --- a/test/language/expressions/object/method-definition/generator-yield-identifier-spread-strict.js +++ b/test/language/expressions/object/method-definition/gen-yield-identifier-spread-strict.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-spread-strict.case -// - src/generators/default/method-definition.template +// - src/generators/default/obj-method.template /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator method) esid: prod-GeneratorMethod diff --git a/test/language/expressions/object/method-definition/generator-yield-identifier-strict.js b/test/language/expressions/object/method-definition/gen-yield-identifier-strict.js similarity index 93% rename from test/language/expressions/object/method-definition/generator-yield-identifier-strict.js rename to test/language/expressions/object/method-definition/gen-yield-identifier-strict.js index 0f1ad962cf..617cad48bb 100644 --- a/test/language/expressions/object/method-definition/generator-yield-identifier-strict.js +++ b/test/language/expressions/object/method-definition/gen-yield-identifier-strict.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-strict.case -// - src/generators/default/method-definition.template +// - src/generators/default/obj-method.template /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator method) esid: prod-GeneratorMethod diff --git a/test/language/expressions/object/method-definition/generator-yield-spread-arr-multiple.js b/test/language/expressions/object/method-definition/gen-yield-spread-arr-multiple.js similarity index 94% rename from test/language/expressions/object/method-definition/generator-yield-spread-arr-multiple.js rename to test/language/expressions/object/method-definition/gen-yield-spread-arr-multiple.js index f0c2c30ea2..c8ac0b133b 100644 --- a/test/language/expressions/object/method-definition/generator-yield-spread-arr-multiple.js +++ b/test/language/expressions/object/method-definition/gen-yield-spread-arr-multiple.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-arr-multiple.case -// - src/generators/default/method-definition.template +// - src/generators/default/obj-method.template /*--- description: Use yield value in a array spread position (Generator method) esid: prod-GeneratorMethod diff --git a/test/language/expressions/object/method-definition/generator-yield-spread-arr-single.js b/test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js similarity index 94% rename from test/language/expressions/object/method-definition/generator-yield-spread-arr-single.js rename to test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js index a535807236..47a3f9d5be 100644 --- a/test/language/expressions/object/method-definition/generator-yield-spread-arr-single.js +++ b/test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-arr-single.case -// - src/generators/default/method-definition.template +// - src/generators/default/obj-method.template /*--- description: Use yield value in a array spread position (Generator method) esid: prod-GeneratorMethod diff --git a/test/language/expressions/object/method-definition/generator-yield-spread-obj.js b/test/language/expressions/object/method-definition/gen-yield-spread-obj.js similarity index 95% rename from test/language/expressions/object/method-definition/generator-yield-spread-obj.js rename to test/language/expressions/object/method-definition/gen-yield-spread-obj.js index a135327fa7..c52740bf46 100644 --- a/test/language/expressions/object/method-definition/generator-yield-spread-obj.js +++ b/test/language/expressions/object/method-definition/gen-yield-spread-obj.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-obj.case -// - src/generators/default/method-definition.template +// - src/generators/default/obj-method.template /*--- description: Use yield value in a object spread position (Generator method) esid: prod-GeneratorMethod diff --git a/test/language/statements/class/gen-method-static-yield-identifier-spread-strict.js b/test/language/statements/class/gen-method-static-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..1ccd803039 --- /dev/null +++ b/test/language/statements/class/gen-method-static-yield-identifier-spread-strict.js @@ -0,0 +1,50 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-spread-strict.case +// - src/generators/default/class-decl-static-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Static generator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +class C {static *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-static-yield-identifier-strict.js b/test/language/statements/class/gen-method-static-yield-identifier-strict.js new file mode 100644 index 0000000000..82ffa649c9 --- /dev/null +++ b/test/language/statements/class/gen-method-static-yield-identifier-strict.js @@ -0,0 +1,40 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-strict.case +// - src/generators/default/class-decl-static-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Static generator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +class C {static *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-static-yield-spread-arr-multiple.js b/test/language/statements/class/gen-method-static-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..9a100d2455 --- /dev/null +++ b/test/language/statements/class/gen-method-static-yield-spread-arr-multiple.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-multiple.case +// - src/generators/default/class-decl-static-method.template +/*--- +description: Use yield value in a array spread position (Static generator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + +var callCount = 0; + +class C {static *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); +item = iter.next(item.value); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-static-yield-spread-arr-single.js b/test/language/statements/class/gen-method-static-yield-spread-arr-single.js new file mode 100644 index 0000000000..900dc84d46 --- /dev/null +++ b/test/language/statements/class/gen-method-static-yield-spread-arr-single.js @@ -0,0 +1,46 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-single.case +// - src/generators/default/class-decl-static-method.template +/*--- +description: Use yield value in a array spread position (Static generator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + +var callCount = 0; + +class C {static *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-static-yield-spread-obj.js b/test/language/statements/class/gen-method-static-yield-spread-obj.js new file mode 100644 index 0000000000..04a4f30e67 --- /dev/null +++ b/test/language/statements/class/gen-method-static-yield-spread-obj.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-obj.case +// - src/generators/default/class-decl-static-method.template +/*--- +description: Use yield value in a object spread position (Static generator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +features: [object-spread] +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +class C {static *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +assert.sameValue(item.value.x, 42); +assert.sameValue(item.value.y, 39); +assert.sameValue(Object.keys(item.value).length, 2); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-yield-identifier-spread-strict.js b/test/language/statements/class/gen-method-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..43a076fcfa --- /dev/null +++ b/test/language/statements/class/gen-method-yield-identifier-spread-strict.js @@ -0,0 +1,50 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-spread-strict.case +// - src/generators/default/class-decl-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Geenerator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +class C { *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.prototype.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-yield-identifier-strict.js b/test/language/statements/class/gen-method-yield-identifier-strict.js new file mode 100644 index 0000000000..ae27517773 --- /dev/null +++ b/test/language/statements/class/gen-method-yield-identifier-strict.js @@ -0,0 +1,40 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-identifier-strict.case +// - src/generators/default/class-decl-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Geenerator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } +---*/ + +var callCount = 0; + +class C { *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.prototype.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-yield-spread-arr-multiple.js b/test/language/statements/class/gen-method-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..daf4bbd4a2 --- /dev/null +++ b/test/language/statements/class/gen-method-yield-spread-arr-multiple.js @@ -0,0 +1,48 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-multiple.case +// - src/generators/default/class-decl-method.template +/*--- +description: Use yield value in a array spread position (Geenerator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + +var callCount = 0; + +class C { *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); +item = iter.next(item.value); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-yield-spread-arr-single.js b/test/language/statements/class/gen-method-yield-spread-arr-single.js new file mode 100644 index 0000000000..6ae9e72200 --- /dev/null +++ b/test/language/statements/class/gen-method-yield-spread-arr-single.js @@ -0,0 +1,46 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-arr-single.case +// - src/generators/default/class-decl-method.template +/*--- +description: Use yield value in a array spread position (Geenerator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + +var callCount = 0; + +class C { *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +assert(compareArray(item.value, arr)); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-yield-spread-obj.js b/test/language/statements/class/gen-method-yield-spread-obj.js new file mode 100644 index 0000000000..693003505c --- /dev/null +++ b/test/language/statements/class/gen-method-yield-spread-obj.js @@ -0,0 +1,55 @@ +// This file was procedurally generated from the following sources: +// - src/generators/yield-spread-obj.case +// - src/generators/default/class-decl-method.template +/*--- +description: Use yield value in a object spread position (Geenerator method as a ClassDeclaration element) +esid: prod-GeneratorMethod +features: [object-spread] +flags: [generated] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + GeneratorMethod + + 14.4 Generator Function Definitions + + GeneratorMethod : + * PropertyName ( UniqueFormalParameters ) { GeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +class C { *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +assert.sameValue(item.value.x, 42); +assert.sameValue(item.value.y, 39); +assert.sameValue(Object.keys(item.value).length, 2); +assert.sameValue(item.done, false); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/generators/yield-identifier-non-strict.js b/test/language/statements/generators/yield-identifier-non-strict.js index d69c887c7d..afc45810b9 100644 --- a/test/language/statements/generators/yield-identifier-non-strict.js +++ b/test/language/statements/generators/yield-identifier-non-strict.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-non-strict.case -// - src/generators/non-strict/statement.template +// - src/generators/non-strict/declaration.template /*--- description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Generator function declaration - valid for non-strict only cases) esid: prod-GeneratorDeclaration diff --git a/test/language/statements/generators/yield-identifier-spread-non-strict.js b/test/language/statements/generators/yield-identifier-spread-non-strict.js index 98d33db21a..3fa89b1dfa 100644 --- a/test/language/statements/generators/yield-identifier-spread-non-strict.js +++ b/test/language/statements/generators/yield-identifier-spread-non-strict.js @@ -1,6 +1,6 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-spread-non-strict.case -// - src/generators/non-strict/statement.template +// - src/generators/non-strict/declaration.template /*--- description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Generator function declaration - valid for non-strict only cases) esid: prod-GeneratorDeclaration diff --git a/test/language/statements/generators/yield-identifier-spread-strict.js b/test/language/statements/generators/yield-identifier-spread-strict.js index 6faf35d9b6..f682d958be 100644 --- a/test/language/statements/generators/yield-identifier-spread-strict.js +++ b/test/language/statements/generators/yield-identifier-spread-strict.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-spread-strict.case -// - src/generators/default/statement.template +// - src/generators/default/declaration.template /*--- -description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator function declaration) +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Generator Function declaration) esid: prod-GeneratorDeclaration features: [object-spread] flags: [generated, onlyStrict] @@ -12,8 +12,8 @@ negative: info: | 14.4 Generator Function Definitions - GeneratorDeclaration[Yield, Await, Default]: - function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorDeclaration : + function * BindingIdentifier ( FormalParameters ) { GeneratorBody } Spread Properties diff --git a/test/language/statements/generators/yield-identifier-strict.js b/test/language/statements/generators/yield-identifier-strict.js index 90339c3715..7c9c5debea 100644 --- a/test/language/statements/generators/yield-identifier-strict.js +++ b/test/language/statements/generators/yield-identifier-strict.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-identifier-strict.case -// - src/generators/default/statement.template +// - src/generators/default/declaration.template /*--- -description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator function declaration) +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Generator Function declaration) esid: prod-GeneratorDeclaration flags: [generated, onlyStrict] negative: @@ -11,8 +11,8 @@ negative: info: | 14.4 Generator Function Definitions - GeneratorDeclaration[Yield, Await, Default]: - function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorDeclaration : + function * BindingIdentifier ( FormalParameters ) { GeneratorBody } ---*/ var callCount = 0; diff --git a/test/language/statements/generators/yield-spread-arr-multiple.js b/test/language/statements/generators/yield-spread-arr-multiple.js index 515ac675b3..1fdf352d0b 100644 --- a/test/language/statements/generators/yield-spread-arr-multiple.js +++ b/test/language/statements/generators/yield-spread-arr-multiple.js @@ -1,16 +1,16 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-arr-multiple.case -// - src/generators/default/statement.template +// - src/generators/default/declaration.template /*--- -description: Use yield value in a array spread position (Generator function declaration) +description: Use yield value in a array spread position (Generator Function declaration) esid: prod-GeneratorDeclaration flags: [generated] includes: [compareArray.js] info: | 14.4 Generator Function Definitions - GeneratorDeclaration[Yield, Await, Default]: - function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorDeclaration : + function * BindingIdentifier ( FormalParameters ) { GeneratorBody } Array Initializer diff --git a/test/language/statements/generators/yield-spread-arr-single.js b/test/language/statements/generators/yield-spread-arr-single.js index ab30e3785e..00aaba1eca 100644 --- a/test/language/statements/generators/yield-spread-arr-single.js +++ b/test/language/statements/generators/yield-spread-arr-single.js @@ -1,16 +1,16 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-arr-single.case -// - src/generators/default/statement.template +// - src/generators/default/declaration.template /*--- -description: Use yield value in a array spread position (Generator function declaration) +description: Use yield value in a array spread position (Generator Function declaration) esid: prod-GeneratorDeclaration flags: [generated] includes: [compareArray.js] info: | 14.4 Generator Function Definitions - GeneratorDeclaration[Yield, Await, Default]: - function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorDeclaration : + function * BindingIdentifier ( FormalParameters ) { GeneratorBody } Array Initializer diff --git a/test/language/statements/generators/yield-spread-obj.js b/test/language/statements/generators/yield-spread-obj.js index da34100946..d5f2206179 100644 --- a/test/language/statements/generators/yield-spread-obj.js +++ b/test/language/statements/generators/yield-spread-obj.js @@ -1,8 +1,8 @@ // This file was procedurally generated from the following sources: // - src/generators/yield-spread-obj.case -// - src/generators/default/statement.template +// - src/generators/default/declaration.template /*--- -description: Use yield value in a object spread position (Generator function declaration) +description: Use yield value in a object spread position (Generator Function declaration) esid: prod-GeneratorDeclaration features: [object-spread] flags: [generated] @@ -10,8 +10,8 @@ includes: [compareArray.js] info: | 14.4 Generator Function Definitions - GeneratorDeclaration[Yield, Await, Default]: - function * BindingIdentifier[?Yield, ?Await] ( FormalParameters[+Yield, ~Await] ) { GeneratorBody } + GeneratorDeclaration : + function * BindingIdentifier ( FormalParameters ) { GeneratorBody } Spread Properties From 3a4e3bd8b13b887bd61a6b07c24c1eb1f9e74dc9 Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Thu, 16 Mar 2017 13:45:43 -0400 Subject: [PATCH 4/9] Add generators templates for async gen --- .../default/async-class-decl-method.template | 34 ++++++++++++++ .../async-class-decl-static-method.template | 34 ++++++++++++++ .../default/async-class-expr-method.template | 34 ++++++++++++++ .../async-class-expr-static-method.template | 34 ++++++++++++++ .../default/async-declaration.template | 27 +++++++++++ .../default/async-expression-named.template | 27 +++++++++++ .../default/async-expression.template | 27 +++++++++++ .../default/async-obj-method.template | 27 +++++++++++ .../non-strict/async-declaration.template | 27 +++++++++++ .../async-expression-named.template | 27 +++++++++++ .../non-strict/async-expression.template | 27 +++++++++++ .../non-strict/async-obj-method.template | 28 ++++++++++++ .../yield-identifier-non-strict.case | 30 +++++++++++++ .../yield-identifier-spread-non-strict.case | 45 +++++++++++++++++++ .../yield-identifier-spread-strict.case | 28 ++++++++++++ .../yield-identifier-strict.case | 19 ++++++++ .../yield-spread-arr-multiple.case | 33 ++++++++++++++ .../yield-spread-arr-single.case | 28 ++++++++++++ src/async-generators/yield-spread-obj.case | 36 +++++++++++++++ 19 files changed, 572 insertions(+) create mode 100644 src/async-generators/default/async-class-decl-method.template create mode 100644 src/async-generators/default/async-class-decl-static-method.template create mode 100644 src/async-generators/default/async-class-expr-method.template create mode 100644 src/async-generators/default/async-class-expr-static-method.template create mode 100644 src/async-generators/default/async-declaration.template create mode 100644 src/async-generators/default/async-expression-named.template create mode 100644 src/async-generators/default/async-expression.template create mode 100644 src/async-generators/default/async-obj-method.template create mode 100644 src/async-generators/non-strict/async-declaration.template create mode 100644 src/async-generators/non-strict/async-expression-named.template create mode 100644 src/async-generators/non-strict/async-expression.template create mode 100644 src/async-generators/non-strict/async-obj-method.template create mode 100644 src/async-generators/yield-identifier-non-strict.case create mode 100644 src/async-generators/yield-identifier-spread-non-strict.case create mode 100644 src/async-generators/yield-identifier-spread-strict.case create mode 100644 src/async-generators/yield-identifier-strict.case create mode 100644 src/async-generators/yield-spread-arr-multiple.case create mode 100644 src/async-generators/yield-spread-arr-single.case create mode 100644 src/async-generators/yield-spread-obj.case diff --git a/src/async-generators/default/async-class-decl-method.template b/src/async-generators/default/async-class-decl-method.template new file mode 100644 index 0000000000..4bdf97b1bc --- /dev/null +++ b/src/async-generators/default/async-class-decl-method.template @@ -0,0 +1,34 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/statements/class/async-gen-method- +name: Async Generator method as a ClassDeclaration element +esid: prod-AsyncGeneratorMethod +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +class C { async *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-class-decl-static-method.template b/src/async-generators/default/async-class-decl-static-method.template new file mode 100644 index 0000000000..d352943b5f --- /dev/null +++ b/src/async-generators/default/async-class-decl-static-method.template @@ -0,0 +1,34 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/statements/class/async-gen-method-static- +name: Static async generator method as a ClassDeclaration element +esid: prod-AsyncGeneratorMethod +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +class C { static async *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-class-expr-method.template b/src/async-generators/default/async-class-expr-method.template new file mode 100644 index 0000000000..141f3ab391 --- /dev/null +++ b/src/async-generators/default/async-class-expr-method.template @@ -0,0 +1,34 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/class/async-gen-method- +name: Async generator method as a ClassExpression element +esid: prod-AsyncGeneratorMethod +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var C = class { async *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-class-expr-static-method.template b/src/async-generators/default/async-class-expr-static-method.template new file mode 100644 index 0000000000..85a18a69c4 --- /dev/null +++ b/src/async-generators/default/async-class-expr-static-method.template @@ -0,0 +1,34 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/class/async-gen-method-static- +name: Static async generator method as a ClassExpression element +esid: prod-AsyncGeneratorMethod +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var C = class { static async *gen() { + callCount += 1; + /*{ body }*/ +}} + +var gen = C.gen; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-declaration.template b/src/async-generators/default/async-declaration.template new file mode 100644 index 0000000000..e1af489b82 --- /dev/null +++ b/src/async-generators/default/async-declaration.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/statements/async-generator/ +name: Async generator Function declaration +esid: prod-AsyncGeneratorDeclaration +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + +var callCount = 0; + +async function *gen() { + callCount += 1; + /*{ body }*/ +} + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-expression-named.template b/src/async-generators/default/async-expression-named.template new file mode 100644 index 0000000000..ef348b6317 --- /dev/null +++ b/src/async-generators/default/async-expression-named.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/async-generator/named- +name: Named async generator expression +esid: prod-AsyncGeneratorExpression +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + /*{ body }*/ +}; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-expression.template b/src/async-generators/default/async-expression.template new file mode 100644 index 0000000000..dbbabb63a6 --- /dev/null +++ b/src/async-generators/default/async-expression.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/async-generator/ +name: Unnamed async generator expression +esid: prod-AsyncGeneratorExpression +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + /*{ body }*/ +}; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/default/async-obj-method.template b/src/async-generators/default/async-obj-method.template new file mode 100644 index 0000000000..6527dd071c --- /dev/null +++ b/src/async-generators/default/async-obj-method.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +path: language/expressions/object/method-definition/async-gen- +name: Async generator method +esid: prod-AsyncGeneratorMethod +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + /*{ body }*/ + } +}.method; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/non-strict/async-declaration.template b/src/async-generators/non-strict/async-declaration.template new file mode 100644 index 0000000000..c7b9c09874 --- /dev/null +++ b/src/async-generators/non-strict/async-declaration.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/statements/async-generator/ +name: Async generator function declaration - valid for non-strict only cases +esid: prod-AsyncGeneratorDeclaration +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + +var callCount = 0; + +async function *gen() { + callCount += 1; + /*{ body }*/ +} + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/non-strict/async-expression-named.template b/src/async-generators/non-strict/async-expression-named.template new file mode 100644 index 0000000000..c6d7c07b83 --- /dev/null +++ b/src/async-generators/non-strict/async-expression-named.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/async-generator/named- +name: Async generator named expression - valid for non-strict only cases +esid: prod-AsyncGeneratorExpression +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + /*{ body }*/ +}; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/non-strict/async-expression.template b/src/async-generators/non-strict/async-expression.template new file mode 100644 index 0000000000..3a6dc2c2b9 --- /dev/null +++ b/src/async-generators/non-strict/async-expression.template @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/async-generator/ +name: Async generator expression - valid for non-strict only cases +esid: prod-AsyncGeneratorExpression +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + /*{ body }*/ +}; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/non-strict/async-obj-method.template b/src/async-generators/non-strict/async-obj-method.template new file mode 100644 index 0000000000..0216a24495 --- /dev/null +++ b/src/async-generators/non-strict/async-obj-method.template @@ -0,0 +1,28 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +path: language/expressions/object/method-definition/async-gen- +name: Generator method - valid for non-strict only cases +esid: prod-AsyncGeneratorMethod +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + /*{ body }*/ + } +}.method; + +var iter = gen(); + +/*{ assertions }*/ + +assert.sameValue(callCount, 1); diff --git a/src/async-generators/yield-identifier-non-strict.case b/src/async-generators/yield-identifier-non-strict.case new file mode 100644 index 0000000000..ebbcb1add8 --- /dev/null +++ b/src/async-generators/yield-identifier-non-strict.case @@ -0,0 +1,30 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: > + Use of yield as a valid identifier in a function body inside a generator body + in non strict mode +template: non-strict +flags: [noStrict, async] +---*/ + +//- body + return (function(arg) { + var yield = arg + 1; + return yield; + }(yield)) +//- assertions +var item = iter.next(); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value, undefined); +}); + +item = iter.next(42); + +item.then(({ done, value }) => { + assert.sameValue(done, true); + assert.sameValue(value, 43); +}).then($DONE, $DONE); diff --git a/src/async-generators/yield-identifier-spread-non-strict.case b/src/async-generators/yield-identifier-spread-non-strict.case new file mode 100644 index 0000000000..99356ce29f --- /dev/null +++ b/src/async-generators/yield-identifier-spread-non-strict.case @@ -0,0 +1,45 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: > + Mixed use of object spread and yield as a valid identifier in a function body + inside a generator body in non strict mode +template: non-strict +info: | + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] +features: [object-spread] +flags: [noStrict, async] +---*/ + +//- body + yield { + ...yield yield, + ...(function(arg) { + var yield = arg; + return {...yield}; + }(yield)), + ...yield, + } +//- assertions +var iter = gen(); + +iter.next(); +iter.next(); +iter.next({ x: 10, a: 0, b: 0 }); +iter.next({ y: 20, a: 1, b: 1 }); +var item = iter.next({ z: 30, b: 2 }); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value.x, 10); + assert.sameValue(value.y, 20); + assert.sameValue(value.z, 30); + assert.sameValue(value.a, 1); + assert.sameValue(value.b, 2); + assert.sameValue(Object.keys(value).length, 5); +}).then($DONE, $DONE); diff --git a/src/async-generators/yield-identifier-spread-strict.case b/src/async-generators/yield-identifier-spread-strict.case new file mode 100644 index 0000000000..7c84ac4dae --- /dev/null +++ b/src/async-generators/yield-identifier-spread-strict.case @@ -0,0 +1,28 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: > + It's an early error if the AssignmentExpression is a function body with yield + as an identifier in strict mode. +template: default +info: | + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] +features: [object-spread] +flags: [onlyStrict] +negative: + phase: early + type: SyntaxError +---*/ + +//- body + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } diff --git a/src/async-generators/yield-identifier-strict.case b/src/async-generators/yield-identifier-strict.case new file mode 100644 index 0000000000..6c9e49f828 --- /dev/null +++ b/src/async-generators/yield-identifier-strict.case @@ -0,0 +1,19 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: > + It's an early error if the generator body has another function body with + yield as an identifier in strict mode. +template: default +flags: [onlyStrict] +negative: + phase: early + type: SyntaxError +---*/ + +//- body + (function() { + var yield; + throw new Test262Error(); + }()) diff --git a/src/async-generators/yield-spread-arr-multiple.case b/src/async-generators/yield-spread-arr-multiple.case new file mode 100644 index 0000000000..33f431766b --- /dev/null +++ b/src/async-generators/yield-spread-arr-multiple.case @@ -0,0 +1,33 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: Use yield value in a array spread position +template: default +info: | + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] +includes: + - compareArray.js +flags: [async] +---*/ + +//- setup +var arr = ['a', 'b', 'c']; +var item; +//- body + yield [...yield yield]; +//- assertions +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); diff --git a/src/async-generators/yield-spread-arr-single.case b/src/async-generators/yield-spread-arr-single.case new file mode 100644 index 0000000000..87116db83b --- /dev/null +++ b/src/async-generators/yield-spread-arr-single.case @@ -0,0 +1,28 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: Use yield value in a array spread position +template: default +info: | + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] +includes: + - compareArray.js +flags: [async] +---*/ + +//- setup +var arr = ['a', 'b', 'c']; +//- body + yield [...yield]; +//- assertions +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); diff --git a/src/async-generators/yield-spread-obj.case b/src/async-generators/yield-spread-obj.case new file mode 100644 index 0000000000..f7d14c022a --- /dev/null +++ b/src/async-generators/yield-spread-obj.case @@ -0,0 +1,36 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +desc: Use yield value in a object spread position +template: default +info: | + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] +features: [object-spread] +includes: + - compareArray.js +flags: [async] +---*/ + +//- body + yield { + ...yield, + y: 1, + ...yield yield, + }; +//- assertions +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); From 66f42efc99031c71c4a3da568b97a445fc75b07c Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Thu, 16 Mar 2017 16:24:49 -0400 Subject: [PATCH 5/9] Generate tests --- .../named-yield-identifier-non-strict.js | 43 +++++++++++++ ...amed-yield-identifier-spread-non-strict.js | 59 ++++++++++++++++++ .../named-yield-identifier-spread-strict.js | 44 ++++++++++++++ .../named-yield-identifier-strict.js | 34 +++++++++++ .../named-yield-spread-arr-multiple.js | 47 +++++++++++++++ .../named-yield-spread-arr-single.js | 42 +++++++++++++ .../async-generator/named-yield-spread-obj.js | 51 ++++++++++++++++ .../yield-identifier-non-strict.js | 43 +++++++++++++ .../yield-identifier-spread-non-strict.js | 59 ++++++++++++++++++ .../yield-identifier-spread-strict.js | 44 ++++++++++++++ .../yield-identifier-strict.js | 34 +++++++++++ .../yield-spread-arr-multiple.js | 47 +++++++++++++++ .../yield-spread-arr-single.js | 42 +++++++++++++ .../async-generator/yield-spread-obj.js | 51 ++++++++++++++++ ...d-static-yield-identifier-spread-strict.js | 51 ++++++++++++++++ ...n-method-static-yield-identifier-strict.js | 41 +++++++++++++ ...method-static-yield-spread-arr-multiple.js | 54 +++++++++++++++++ ...n-method-static-yield-spread-arr-single.js | 49 +++++++++++++++ ...sync-gen-method-static-yield-spread-obj.js | 58 ++++++++++++++++++ ...n-method-yield-identifier-spread-strict.js | 51 ++++++++++++++++ ...sync-gen-method-yield-identifier-strict.js | 41 +++++++++++++ ...nc-gen-method-yield-spread-arr-multiple.js | 54 +++++++++++++++++ ...sync-gen-method-yield-spread-arr-single.js | 49 +++++++++++++++ .../async-gen-method-yield-spread-obj.js | 58 ++++++++++++++++++ .../async-gen-yield-identifier-non-strict.js | 44 ++++++++++++++ ...-gen-yield-identifier-spread-non-strict.js | 60 +++++++++++++++++++ ...sync-gen-yield-identifier-spread-strict.js | 44 ++++++++++++++ .../async-gen-yield-identifier-strict.js | 34 +++++++++++ .../async-gen-yield-spread-arr-multiple.js | 47 +++++++++++++++ .../async-gen-yield-spread-arr-single.js | 42 +++++++++++++ .../async-gen-yield-spread-obj.js | 51 ++++++++++++++++ .../yield-identifier-non-strict.js | 43 +++++++++++++ .../yield-identifier-spread-non-strict.js | 59 ++++++++++++++++++ .../yield-identifier-spread-strict.js | 44 ++++++++++++++ .../yield-identifier-strict.js | 34 +++++++++++ .../yield-spread-arr-multiple.js | 47 +++++++++++++++ .../yield-spread-arr-single.js | 42 +++++++++++++ .../async-generator/yield-spread-obj.js | 51 ++++++++++++++++ ...d-static-yield-identifier-spread-strict.js | 51 ++++++++++++++++ ...n-method-static-yield-identifier-strict.js | 41 +++++++++++++ ...method-static-yield-spread-arr-multiple.js | 54 +++++++++++++++++ ...n-method-static-yield-spread-arr-single.js | 49 +++++++++++++++ ...sync-gen-method-static-yield-spread-obj.js | 58 ++++++++++++++++++ ...n-method-yield-identifier-spread-strict.js | 51 ++++++++++++++++ ...sync-gen-method-yield-identifier-strict.js | 41 +++++++++++++ ...nc-gen-method-yield-spread-arr-multiple.js | 54 +++++++++++++++++ ...sync-gen-method-yield-spread-arr-single.js | 49 +++++++++++++++ .../async-gen-method-yield-spread-obj.js | 58 ++++++++++++++++++ 48 files changed, 2294 insertions(+) create mode 100644 test/language/expressions/async-generator/named-yield-identifier-non-strict.js create mode 100644 test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js create mode 100644 test/language/expressions/async-generator/named-yield-identifier-spread-strict.js create mode 100644 test/language/expressions/async-generator/named-yield-identifier-strict.js create mode 100644 test/language/expressions/async-generator/named-yield-spread-arr-multiple.js create mode 100644 test/language/expressions/async-generator/named-yield-spread-arr-single.js create mode 100644 test/language/expressions/async-generator/named-yield-spread-obj.js create mode 100644 test/language/expressions/async-generator/yield-identifier-non-strict.js create mode 100644 test/language/expressions/async-generator/yield-identifier-spread-non-strict.js create mode 100644 test/language/expressions/async-generator/yield-identifier-spread-strict.js create mode 100644 test/language/expressions/async-generator/yield-identifier-strict.js create mode 100644 test/language/expressions/async-generator/yield-spread-arr-multiple.js create mode 100644 test/language/expressions/async-generator/yield-spread-arr-single.js create mode 100644 test/language/expressions/async-generator/yield-spread-obj.js create mode 100644 test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js create mode 100644 test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js create mode 100644 test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js create mode 100644 test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js create mode 100644 test/language/expressions/class/async-gen-method-static-yield-spread-obj.js create mode 100644 test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js create mode 100644 test/language/expressions/class/async-gen-method-yield-identifier-strict.js create mode 100644 test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js create mode 100644 test/language/expressions/class/async-gen-method-yield-spread-arr-single.js create mode 100644 test/language/expressions/class/async-gen-method-yield-spread-obj.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js create mode 100644 test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js create mode 100644 test/language/statements/async-generator/yield-identifier-non-strict.js create mode 100644 test/language/statements/async-generator/yield-identifier-spread-non-strict.js create mode 100644 test/language/statements/async-generator/yield-identifier-spread-strict.js create mode 100644 test/language/statements/async-generator/yield-identifier-strict.js create mode 100644 test/language/statements/async-generator/yield-spread-arr-multiple.js create mode 100644 test/language/statements/async-generator/yield-spread-arr-single.js create mode 100644 test/language/statements/async-generator/yield-spread-obj.js create mode 100644 test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js create mode 100644 test/language/statements/class/async-gen-method-static-yield-identifier-strict.js create mode 100644 test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js create mode 100644 test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js create mode 100644 test/language/statements/class/async-gen-method-static-yield-spread-obj.js create mode 100644 test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js create mode 100644 test/language/statements/class/async-gen-method-yield-identifier-strict.js create mode 100644 test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js create mode 100644 test/language/statements/class/async-gen-method-yield-spread-arr-single.js create mode 100644 test/language/statements/class/async-gen-method-yield-spread-obj.js diff --git a/test/language/expressions/async-generator/named-yield-identifier-non-strict.js b/test/language/expressions/async-generator/named-yield-identifier-non-strict.js new file mode 100644 index 0000000000..5f78d6de9f --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-identifier-non-strict.js @@ -0,0 +1,43 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-non-strict.case +// - src/async-generators/non-strict/async-expression-named.template +/*--- +description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator named expression - valid for non-strict only cases) +esid: prod-AsyncGeneratorExpression +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + return (function(arg) { + var yield = arg + 1; + return yield; + }(yield)) +}; + +var iter = gen(); + +var item = iter.next(); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value, undefined); +}); + +item = iter.next(42); + +item.then(({ done, value }) => { + assert.sameValue(done, true); + assert.sameValue(value, 43); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js b/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js new file mode 100644 index 0000000000..ec4367a706 --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js @@ -0,0 +1,59 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-non-strict.case +// - src/async-generators/non-strict/async-expression-named.template +/*--- +description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator named expression - valid for non-strict only cases) +esid: prod-AsyncGeneratorExpression +features: [object-spread] +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + yield { + ...yield yield, + ...(function(arg) { + var yield = arg; + return {...yield}; + }(yield)), + ...yield, + } +}; + +var iter = gen(); + +var iter = gen(); + +iter.next(); +iter.next(); +iter.next({ x: 10, a: 0, b: 0 }); +iter.next({ y: 20, a: 1, b: 1 }); +var item = iter.next({ z: 30, b: 2 }); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value.x, 10); + assert.sameValue(value.y, 20); + assert.sameValue(value.z, 30); + assert.sameValue(value.a, 1); + assert.sameValue(value.b, 2); + assert.sameValue(Object.keys(value).length, 5); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js b/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..f022c50e3f --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js @@ -0,0 +1,44 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-expression-named.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Named async generator expression) +esid: prod-AsyncGeneratorExpression +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-identifier-strict.js b/test/language/expressions/async-generator/named-yield-identifier-strict.js new file mode 100644 index 0000000000..a49291637b --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-identifier-strict.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-expression-named.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Named async generator expression) +esid: prod-AsyncGeneratorExpression +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js b/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..89900d9c06 --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js @@ -0,0 +1,47 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-expression-named.template +/*--- +description: Use yield value in a array spread position (Named async generator expression) +esid: prod-AsyncGeneratorExpression +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + yield [...yield yield]; +}; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-spread-arr-single.js b/test/language/expressions/async-generator/named-yield-spread-arr-single.js new file mode 100644 index 0000000000..a6b0438d03 --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-spread-arr-single.js @@ -0,0 +1,42 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-expression-named.template +/*--- +description: Use yield value in a array spread position (Named async generator expression) +esid: prod-AsyncGeneratorExpression +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + yield [...yield]; +}; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-spread-obj.js b/test/language/expressions/async-generator/named-yield-spread-obj.js new file mode 100644 index 0000000000..a4baf2566c --- /dev/null +++ b/test/language/expressions/async-generator/named-yield-spread-obj.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-expression-named.template +/*--- +description: Use yield value in a object spread position (Named async generator expression) +esid: prod-AsyncGeneratorExpression +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = async function *g() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-identifier-non-strict.js b/test/language/expressions/async-generator/yield-identifier-non-strict.js new file mode 100644 index 0000000000..8708e371d9 --- /dev/null +++ b/test/language/expressions/async-generator/yield-identifier-non-strict.js @@ -0,0 +1,43 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-non-strict.case +// - src/async-generators/non-strict/async-expression.template +/*--- +description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator expression - valid for non-strict only cases) +esid: prod-AsyncGeneratorExpression +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + return (function(arg) { + var yield = arg + 1; + return yield; + }(yield)) +}; + +var iter = gen(); + +var item = iter.next(); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value, undefined); +}); + +item = iter.next(42); + +item.then(({ done, value }) => { + assert.sameValue(done, true); + assert.sameValue(value, 43); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js b/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js new file mode 100644 index 0000000000..98b6583fab --- /dev/null +++ b/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js @@ -0,0 +1,59 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-non-strict.case +// - src/async-generators/non-strict/async-expression.template +/*--- +description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator expression - valid for non-strict only cases) +esid: prod-AsyncGeneratorExpression +features: [object-spread] +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + yield { + ...yield yield, + ...(function(arg) { + var yield = arg; + return {...yield}; + }(yield)), + ...yield, + } +}; + +var iter = gen(); + +var iter = gen(); + +iter.next(); +iter.next(); +iter.next({ x: 10, a: 0, b: 0 }); +iter.next({ y: 20, a: 1, b: 1 }); +var item = iter.next({ z: 30, b: 2 }); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value.x, 10); + assert.sameValue(value.y, 20); + assert.sameValue(value.z, 30); + assert.sameValue(value.a, 1); + assert.sameValue(value.b, 2); + assert.sameValue(Object.keys(value).length, 5); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-identifier-spread-strict.js b/test/language/expressions/async-generator/yield-identifier-spread-strict.js new file mode 100644 index 0000000000..1e332e136e --- /dev/null +++ b/test/language/expressions/async-generator/yield-identifier-spread-strict.js @@ -0,0 +1,44 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-expression.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Unnamed async generator expression) +esid: prod-AsyncGeneratorExpression +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-identifier-strict.js b/test/language/expressions/async-generator/yield-identifier-strict.js new file mode 100644 index 0000000000..067065bb15 --- /dev/null +++ b/test/language/expressions/async-generator/yield-identifier-strict.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-expression.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Unnamed async generator expression) +esid: prod-AsyncGeneratorExpression +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-spread-arr-multiple.js b/test/language/expressions/async-generator/yield-spread-arr-multiple.js new file mode 100644 index 0000000000..4038349475 --- /dev/null +++ b/test/language/expressions/async-generator/yield-spread-arr-multiple.js @@ -0,0 +1,47 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-expression.template +/*--- +description: Use yield value in a array spread position (Unnamed async generator expression) +esid: prod-AsyncGeneratorExpression +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + yield [...yield yield]; +}; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-spread-arr-single.js b/test/language/expressions/async-generator/yield-spread-arr-single.js new file mode 100644 index 0000000000..45be229091 --- /dev/null +++ b/test/language/expressions/async-generator/yield-spread-arr-single.js @@ -0,0 +1,42 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-expression.template +/*--- +description: Use yield value in a array spread position (Unnamed async generator expression) +esid: prod-AsyncGeneratorExpression +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + yield [...yield]; +}; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-spread-obj.js b/test/language/expressions/async-generator/yield-spread-obj.js new file mode 100644 index 0000000000..8f9b701a54 --- /dev/null +++ b/test/language/expressions/async-generator/yield-spread-obj.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-expression.template +/*--- +description: Use yield value in a object spread position (Unnamed async generator expression) +esid: prod-AsyncGeneratorExpression +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorExpression : + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = async function *() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js b/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..3bd1d2095f --- /dev/null +++ b/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-class-expr-static-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Static async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var C = class { static async *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js b/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js new file mode 100644 index 0000000000..a0610dabe7 --- /dev/null +++ b/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js @@ -0,0 +1,41 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-class-expr-static-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Static async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var C = class { static async *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..edbd643d5a --- /dev/null +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-class-expr-static-method.template +/*--- +description: Use yield value in a array spread position (Static async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +var C = class { static async *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js new file mode 100644 index 0000000000..f9f23472f1 --- /dev/null +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js @@ -0,0 +1,49 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-class-expr-static-method.template +/*--- +description: Use yield value in a array spread position (Static async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +var C = class { static async *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js b/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js new file mode 100644 index 0000000000..a2a8109fef --- /dev/null +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js @@ -0,0 +1,58 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-class-expr-static-method.template +/*--- +description: Use yield value in a object spread position (Static async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var C = class { static async *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js b/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..840350036e --- /dev/null +++ b/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-class-expr-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var C = class { async *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.prototype.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-yield-identifier-strict.js b/test/language/expressions/class/async-gen-method-yield-identifier-strict.js new file mode 100644 index 0000000000..803e9f9669 --- /dev/null +++ b/test/language/expressions/class/async-gen-method-yield-identifier-strict.js @@ -0,0 +1,41 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-class-expr-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var C = class { async *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.prototype.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js b/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..00040546b8 --- /dev/null +++ b/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-class-expr-method.template +/*--- +description: Use yield value in a array spread position (Async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +var C = class { async *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js b/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js new file mode 100644 index 0000000000..3bee88b77b --- /dev/null +++ b/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js @@ -0,0 +1,49 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-class-expr-method.template +/*--- +description: Use yield value in a array spread position (Async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +var C = class { async *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/async-gen-method-yield-spread-obj.js b/test/language/expressions/class/async-gen-method-yield-spread-obj.js new file mode 100644 index 0000000000..54ce456642 --- /dev/null +++ b/test/language/expressions/class/async-gen-method-yield-spread-obj.js @@ -0,0 +1,58 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-class-expr-method.template +/*--- +description: Use yield value in a object spread position (Async generator method as a ClassExpression element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var C = class { async *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js new file mode 100644 index 0000000000..f6a94c40f2 --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js @@ -0,0 +1,44 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-non-strict.case +// - src/async-generators/non-strict/async-obj-method.template +/*--- +description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Generator method - valid for non-strict only cases) +esid: prod-AsyncGeneratorMethod +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + return (function(arg) { + var yield = arg + 1; + return yield; + }(yield)) + } +}.method; + +var iter = gen(); + +var item = iter.next(); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value, undefined); +}); + +item = iter.next(42); + +item.then(({ done, value }) => { + assert.sameValue(done, true); + assert.sameValue(value, 43); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js new file mode 100644 index 0000000000..7bb35899c8 --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js @@ -0,0 +1,60 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-non-strict.case +// - src/async-generators/non-strict/async-obj-method.template +/*--- +description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Generator method - valid for non-strict only cases) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + yield { + ...yield yield, + ...(function(arg) { + var yield = arg; + return {...yield}; + }(yield)), + ...yield, + } + } +}.method; + +var iter = gen(); + +var iter = gen(); + +iter.next(); +iter.next(); +iter.next({ x: 10, a: 0, b: 0 }); +iter.next({ y: 20, a: 1, b: 1 }); +var item = iter.next({ z: 30, b: 2 }); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value.x, 10); + assert.sameValue(value.y, 20); + assert.sameValue(value.z, 30); + assert.sameValue(value.a, 1); + assert.sameValue(value.b, 2); + assert.sameValue(Object.keys(value).length, 5); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..cacb1efb64 --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js @@ -0,0 +1,44 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-obj-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async generator method) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } + } +}.method; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js new file mode 100644 index 0000000000..e1360accb8 --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-obj-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async generator method) +esid: prod-AsyncGeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) + } +}.method; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..bbd66a65c2 --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js @@ -0,0 +1,47 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-obj-method.template +/*--- +description: Use yield value in a array spread position (Async generator method) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + yield [...yield yield]; + } +}.method; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js new file mode 100644 index 0000000000..1650fce4cd --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js @@ -0,0 +1,42 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-obj-method.template +/*--- +description: Use yield value in a array spread position (Async generator method) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + yield [...yield]; + } +}.method; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js new file mode 100644 index 0000000000..76655d4c22 --- /dev/null +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-obj-method.template +/*--- +description: Use yield value in a object spread position (Async generator method) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + +var callCount = 0; + +var gen = { + async *method() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; + } +}.method; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-identifier-non-strict.js b/test/language/statements/async-generator/yield-identifier-non-strict.js new file mode 100644 index 0000000000..292b4f00c3 --- /dev/null +++ b/test/language/statements/async-generator/yield-identifier-non-strict.js @@ -0,0 +1,43 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-non-strict.case +// - src/async-generators/non-strict/async-declaration.template +/*--- +description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator function declaration - valid for non-strict only cases) +esid: prod-AsyncGeneratorDeclaration +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +async function *gen() { + callCount += 1; + return (function(arg) { + var yield = arg + 1; + return yield; + }(yield)) +} + +var iter = gen(); + +var item = iter.next(); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value, undefined); +}); + +item = iter.next(42); + +item.then(({ done, value }) => { + assert.sameValue(done, true); + assert.sameValue(value, 43); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-identifier-spread-non-strict.js b/test/language/statements/async-generator/yield-identifier-spread-non-strict.js new file mode 100644 index 0000000000..35c9b4fa92 --- /dev/null +++ b/test/language/statements/async-generator/yield-identifier-spread-non-strict.js @@ -0,0 +1,59 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-non-strict.case +// - src/async-generators/non-strict/async-declaration.template +/*--- +description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator function declaration - valid for non-strict only cases) +esid: prod-AsyncGeneratorDeclaration +features: [object-spread] +flags: [generated, noStrict, async] +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +async function *gen() { + callCount += 1; + yield { + ...yield yield, + ...(function(arg) { + var yield = arg; + return {...yield}; + }(yield)), + ...yield, + } +} + +var iter = gen(); + +var iter = gen(); + +iter.next(); +iter.next(); +iter.next({ x: 10, a: 0, b: 0 }); +iter.next({ y: 20, a: 1, b: 1 }); +var item = iter.next({ z: 30, b: 2 }); + +item.then(({ done, value }) => { + assert.sameValue(done, false); + assert.sameValue(value.x, 10); + assert.sameValue(value.y, 20); + assert.sameValue(value.z, 30); + assert.sameValue(value.a, 1); + assert.sameValue(value.b, 2); + assert.sameValue(Object.keys(value).length, 5); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-identifier-spread-strict.js b/test/language/statements/async-generator/yield-identifier-spread-strict.js new file mode 100644 index 0000000000..6b1ec3cac8 --- /dev/null +++ b/test/language/statements/async-generator/yield-identifier-spread-strict.js @@ -0,0 +1,44 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-declaration.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async generator Function declaration) +esid: prod-AsyncGeneratorDeclaration +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +async function *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +} + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-identifier-strict.js b/test/language/statements/async-generator/yield-identifier-strict.js new file mode 100644 index 0000000000..1ba4d0729e --- /dev/null +++ b/test/language/statements/async-generator/yield-identifier-strict.js @@ -0,0 +1,34 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-declaration.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async generator Function declaration) +esid: prod-AsyncGeneratorDeclaration +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +async function *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +} + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-spread-arr-multiple.js b/test/language/statements/async-generator/yield-spread-arr-multiple.js new file mode 100644 index 0000000000..34f0e3ef50 --- /dev/null +++ b/test/language/statements/async-generator/yield-spread-arr-multiple.js @@ -0,0 +1,47 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-declaration.template +/*--- +description: Use yield value in a array spread position (Async generator Function declaration) +esid: prod-AsyncGeneratorDeclaration +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +async function *gen() { + callCount += 1; + yield [...yield yield]; +} + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-spread-arr-single.js b/test/language/statements/async-generator/yield-spread-arr-single.js new file mode 100644 index 0000000000..80a9641244 --- /dev/null +++ b/test/language/statements/async-generator/yield-spread-arr-single.js @@ -0,0 +1,42 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-declaration.template +/*--- +description: Use yield value in a array spread position (Async generator Function declaration) +esid: prod-AsyncGeneratorDeclaration +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +async function *gen() { + callCount += 1; + yield [...yield]; +} + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-spread-obj.js b/test/language/statements/async-generator/yield-spread-obj.js new file mode 100644 index 0000000000..4ed722ea9a --- /dev/null +++ b/test/language/statements/async-generator/yield-spread-obj.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-declaration.template +/*--- +description: Use yield value in a object spread position (Async generator Function declaration) +esid: prod-AsyncGeneratorDeclaration +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + Async Generator Function Definitions + + AsyncGeneratorDeclaration: + async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { + AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +async function *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +} + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js b/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..58a66025e1 --- /dev/null +++ b/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-class-decl-static-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Static async generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +class C { static async *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js b/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js new file mode 100644 index 0000000000..9609478ee0 --- /dev/null +++ b/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js @@ -0,0 +1,41 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-class-decl-static-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Static async generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +class C { static async *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js b/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..9f69ae6fd2 --- /dev/null +++ b/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-class-decl-static-method.template +/*--- +description: Use yield value in a array spread position (Static async generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +class C { static async *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js b/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js new file mode 100644 index 0000000000..3df12ef903 --- /dev/null +++ b/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js @@ -0,0 +1,49 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-class-decl-static-method.template +/*--- +description: Use yield value in a array spread position (Static async generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +class C { static async *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-obj.js b/test/language/statements/class/async-gen-method-static-yield-spread-obj.js new file mode 100644 index 0000000000..526bb2b937 --- /dev/null +++ b/test/language/statements/class/async-gen-method-static-yield-spread-obj.js @@ -0,0 +1,58 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-class-decl-static-method.template +/*--- +description: Use yield value in a object spread position (Static async generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + static MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +class C { static async *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js b/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js new file mode 100644 index 0000000000..bfee4d874d --- /dev/null +++ b/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js @@ -0,0 +1,51 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-spread-strict.case +// - src/async-generators/default/async-class-decl-method.template +/*--- +description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async Generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +class C { async *gen() { + callCount += 1; + return { + ...(function() { + var yield; + throw new Test262Error(); + }()), + } +}} + +var gen = C.prototype.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-yield-identifier-strict.js b/test/language/statements/class/async-gen-method-yield-identifier-strict.js new file mode 100644 index 0000000000..8f6d71e7e6 --- /dev/null +++ b/test/language/statements/class/async-gen-method-yield-identifier-strict.js @@ -0,0 +1,41 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-identifier-strict.case +// - src/async-generators/default/async-class-decl-method.template +/*--- +description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async Generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +flags: [generated, onlyStrict] +negative: + phase: early + type: SyntaxError +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +---*/ + + +var callCount = 0; + +class C { async *gen() { + callCount += 1; + (function() { + var yield; + throw new Test262Error(); + }()) +}} + +var gen = C.prototype.gen; + +var iter = gen(); + + + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js b/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js new file mode 100644 index 0000000000..a32b600497 --- /dev/null +++ b/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js @@ -0,0 +1,54 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-multiple.case +// - src/async-generators/default/async-class-decl-method.template +/*--- +description: Use yield value in a array spread position (Async Generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; +var item; + + +var callCount = 0; + +class C { async *gen() { + callCount += 1; + yield [...yield yield]; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(false); +item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + item = iter.next(value); + + item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); + }).then($DONE, $DONE); +}).catch($DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-yield-spread-arr-single.js b/test/language/statements/class/async-gen-method-yield-spread-arr-single.js new file mode 100644 index 0000000000..0a34a9577e --- /dev/null +++ b/test/language/statements/class/async-gen-method-yield-spread-arr-single.js @@ -0,0 +1,49 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-arr-single.case +// - src/async-generators/default/async-class-decl-method.template +/*--- +description: Use yield value in a array spread position (Async Generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Array Initializer + + SpreadElement[Yield, Await]: + ...AssignmentExpression[+In, ?Yield, ?Await] + +---*/ +var arr = ['a', 'b', 'c']; + + +var callCount = 0; + +class C { async *gen() { + callCount += 1; + yield [...yield]; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(false); +var item = iter.next(['a', 'b', 'c']); + +item.then(({ done, value }) => { + assert(compareArray(value, arr)); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/async-gen-method-yield-spread-obj.js b/test/language/statements/class/async-gen-method-yield-spread-obj.js new file mode 100644 index 0000000000..ffbb519675 --- /dev/null +++ b/test/language/statements/class/async-gen-method-yield-spread-obj.js @@ -0,0 +1,58 @@ +// This file was procedurally generated from the following sources: +// - src/async-generators/yield-spread-obj.case +// - src/async-generators/default/async-class-decl-method.template +/*--- +description: Use yield value in a object spread position (Async Generator method as a ClassDeclaration element) +esid: prod-AsyncGeneratorMethod +features: [object-spread] +flags: [generated, async] +includes: [compareArray.js] +info: | + ClassElement : + MethodDefinition + + MethodDefinition : + AsyncGeneratorMethod + + Async Generator Function Definitions + + AsyncGeneratorMethod : + async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + + Spread Properties + + PropertyDefinition[Yield]: + (...) + ...AssignmentExpression[In, ?Yield] + +---*/ + + +var callCount = 0; + +class C { async *gen() { + callCount += 1; + yield { + ...yield, + y: 1, + ...yield yield, + }; +}} + +var gen = C.prototype.gen; + +var iter = gen(); + +iter.next(); +iter.next({ x: 42 }); +iter.next({ x: 'lol' }); +var item = iter.next({ y: 39 }); + +item.then(({ done, value }) => { + assert.sameValue(value.x, 42); + assert.sameValue(value.y, 39); + assert.sameValue(Object.keys(value).length, 2); + assert.sameValue(done, false); +}).then($DONE, $DONE); + +assert.sameValue(callCount, 1); From e34a56774e4efff35873c2626cb2a22cf9116b80 Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Fri, 17 Mar 2017 13:57:00 -0400 Subject: [PATCH 6/9] Improve some yield cases based on feedback --- .../yield-identifier-spread-non-strict.case | 8 +++++-- .../yield-spread-arr-single.case | 11 ++++++---- .../yield-identifier-spread-non-strict.case | 22 ++++++++++++------- src/generators/yield-spread-arr-single.case | 12 ++++++---- src/spread/obj-symbol-property.case | 1 + 5 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/async-generators/yield-identifier-spread-non-strict.case b/src/async-generators/yield-identifier-spread-non-strict.case index 99356ce29f..0db9d527df 100644 --- a/src/async-generators/yield-identifier-spread-non-strict.case +++ b/src/async-generators/yield-identifier-spread-non-strict.case @@ -16,6 +16,8 @@ features: [object-spread] flags: [noStrict, async] ---*/ +//- setup +var s = Symbol('s'); //- body yield { ...yield yield, @@ -30,8 +32,8 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); item.then(({ done, value }) => { @@ -41,5 +43,7 @@ item.then(({ done, value }) => { assert.sameValue(value.z, 30); assert.sameValue(value.a, 1); assert.sameValue(value.b, 2); + assert.sameValue(value[s], 42); assert.sameValue(Object.keys(value).length, 5); + assert(Object.hasOwnProperty.call(value, s)); }).then($DONE, $DONE); diff --git a/src/async-generators/yield-spread-arr-single.case b/src/async-generators/yield-spread-arr-single.case index 87116db83b..cc7cb640b6 100644 --- a/src/async-generators/yield-spread-arr-single.case +++ b/src/async-generators/yield-spread-arr-single.case @@ -9,8 +9,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] -includes: - - compareArray.js flags: [async] ---*/ @@ -20,9 +18,14 @@ var arr = ['a', 'b', 'c']; yield [...yield]; //- assertions iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/src/generators/yield-identifier-spread-non-strict.case b/src/generators/yield-identifier-spread-non-strict.case index 219b749fa4..f4ad4f40b5 100644 --- a/src/generators/yield-identifier-spread-non-strict.case +++ b/src/generators/yield-identifier-spread-non-strict.case @@ -16,6 +16,8 @@ features: [object-spread] flags: [noStrict] ---*/ +//- setup +var s = Symbol('s'); //- body yield { ...yield yield, @@ -30,14 +32,18 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); +var value = item.value; + assert.sameValue(item.done, false); -assert.sameValue(item.value.x, 10); -assert.sameValue(item.value.y, 20); -assert.sameValue(item.value.z, 30); -assert.sameValue(item.value.a, 1); -assert.sameValue(item.value.b, 2); -assert.sameValue(Object.keys(item.value).length, 5); +assert.sameValue(value.x, 10); +assert.sameValue(value.y, 20); +assert.sameValue(value.z, 30); +assert.sameValue(value.a, 1); +assert.sameValue(value.b, 2); +assert.sameValue(value[s], 42); +assert(Object.hasOwnProperty.call(value, s)); +assert.sameValue(Object.keys(value).length, 5); diff --git a/src/generators/yield-spread-arr-single.case b/src/generators/yield-spread-arr-single.case index 5f31c2ddf6..e3f6b8d5f1 100644 --- a/src/generators/yield-spread-arr-single.case +++ b/src/generators/yield-spread-arr-single.case @@ -9,8 +9,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] -includes: - - compareArray.js ---*/ //- setup @@ -19,7 +17,13 @@ var arr = ['a', 'b', 'c']; yield [...yield]; //- assertions iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); diff --git a/src/spread/obj-symbol-property.case b/src/spread/obj-symbol-property.case index 87a9869564..3d3e922aac 100644 --- a/src/spread/obj-symbol-property.case +++ b/src/spread/obj-symbol-property.case @@ -29,6 +29,7 @@ obj //- body assert.sameValue(obj[symbol], 1); +assert(Object.hasOwnProperty.call(obj, symbol)); assert.sameValue(obj.c, 4); assert.sameValue(obj.d, 5); assert.sameValue(Object.keys(obj).length, 2); From 8525cdb16523c68ae7cdaf3bc8a117d5151f4d4c Mon Sep 17 00:00:00 2001 From: Leonardo Balter Date: Fri, 17 Mar 2017 13:57:24 -0400 Subject: [PATCH 7/9] Generate tests --- .../array/spread-obj-symbol-property.js | 1 + ...amed-yield-identifier-spread-non-strict.js | 7 +++++-- .../named-yield-spread-arr-single.js | 10 ++++++--- .../yield-identifier-spread-non-strict.js | 7 +++++-- .../yield-spread-arr-single.js | 10 ++++++--- .../call/spread-obj-symbol-property.js | 1 + ...n-method-static-yield-spread-arr-single.js | 10 ++++++--- ...sync-gen-method-yield-spread-arr-single.js | 10 ++++++--- ...n-method-static-yield-spread-arr-single.js | 12 +++++++---- .../gen-method-yield-spread-arr-single.js | 12 +++++++---- ...amed-yield-identifier-spread-non-strict.js | 21 ++++++++++++------- .../named-yield-spread-arr-single.js | 12 +++++++---- .../yield-identifier-spread-non-strict.js | 21 ++++++++++++------- .../generators/yield-spread-arr-single.js | 12 +++++++---- .../new/spread-obj-symbol-property.js | 1 + ...-gen-yield-identifier-spread-non-strict.js | 7 +++++-- .../async-gen-yield-spread-arr-single.js | 10 ++++++--- .../gen-yield-identifier-spread-non-strict.js | 21 ++++++++++++------- .../gen-yield-spread-arr-single.js | 12 +++++++---- .../super/call-spread-obj-symbol-property.js | 1 + .../yield-identifier-spread-non-strict.js | 7 +++++-- .../yield-spread-arr-single.js | 10 ++++++--- ...n-method-static-yield-spread-arr-single.js | 10 ++++++--- ...sync-gen-method-yield-spread-arr-single.js | 10 ++++++--- ...n-method-static-yield-spread-arr-single.js | 12 +++++++---- .../gen-method-yield-spread-arr-single.js | 12 +++++++---- .../yield-identifier-spread-non-strict.js | 21 ++++++++++++------- .../generators/yield-spread-arr-single.js | 12 +++++++---- 28 files changed, 196 insertions(+), 96 deletions(-) diff --git a/test/language/expressions/array/spread-obj-symbol-property.js b/test/language/expressions/array/spread-obj-symbol-property.js index 8a8cedcebe..7965be9715 100644 --- a/test/language/expressions/array/spread-obj-symbol-property.js +++ b/test/language/expressions/array/spread-obj-symbol-property.js @@ -41,6 +41,7 @@ var callCount = 0; (function(obj) { assert.sameValue(obj[symbol], 1); + assert(Object.hasOwnProperty.call(obj, symbol)); assert.sameValue(obj.c, 4); assert.sameValue(obj.d, 5); assert.sameValue(Object.keys(obj).length, 2); diff --git a/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js b/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js index ec4367a706..d65911bb3c 100644 --- a/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js @@ -20,6 +20,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -42,8 +43,8 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); item.then(({ done, value }) => { @@ -53,7 +54,9 @@ item.then(({ done, value }) => { assert.sameValue(value.z, 30); assert.sameValue(value.a, 1); assert.sameValue(value.b, 2); + assert.sameValue(value[s], 42); assert.sameValue(Object.keys(value).length, 5); + assert(Object.hasOwnProperty.call(value, s)); }).then($DONE, $DONE); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/named-yield-spread-arr-single.js b/test/language/expressions/async-generator/named-yield-spread-arr-single.js index a6b0438d03..95d0853959 100644 --- a/test/language/expressions/async-generator/named-yield-spread-arr-single.js +++ b/test/language/expressions/async-generator/named-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Named async generator expression) esid: prod-AsyncGeneratorExpression flags: [generated, async] -includes: [compareArray.js] info: | Async Generator Function Definitions @@ -32,10 +31,15 @@ var gen = async function *g() { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js b/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js index 98b6583fab..8a60681c23 100644 --- a/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js +++ b/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js @@ -20,6 +20,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -42,8 +43,8 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); item.then(({ done, value }) => { @@ -53,7 +54,9 @@ item.then(({ done, value }) => { assert.sameValue(value.z, 30); assert.sameValue(value.a, 1); assert.sameValue(value.b, 2); + assert.sameValue(value[s], 42); assert.sameValue(Object.keys(value).length, 5); + assert(Object.hasOwnProperty.call(value, s)); }).then($DONE, $DONE); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/async-generator/yield-spread-arr-single.js b/test/language/expressions/async-generator/yield-spread-arr-single.js index 45be229091..421f0004cf 100644 --- a/test/language/expressions/async-generator/yield-spread-arr-single.js +++ b/test/language/expressions/async-generator/yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Unnamed async generator expression) esid: prod-AsyncGeneratorExpression flags: [generated, async] -includes: [compareArray.js] info: | Async Generator Function Definitions @@ -32,10 +31,15 @@ var gen = async function *() { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/expressions/call/spread-obj-symbol-property.js b/test/language/expressions/call/spread-obj-symbol-property.js index 9a26e67f60..456ccb8207 100644 --- a/test/language/expressions/call/spread-obj-symbol-property.js +++ b/test/language/expressions/call/spread-obj-symbol-property.js @@ -39,6 +39,7 @@ var callCount = 0; (function(obj) { assert.sameValue(obj[symbol], 1); + assert(Object.hasOwnProperty.call(obj, symbol)); assert.sameValue(obj.c, 4); assert.sameValue(obj.d, 5); assert.sameValue(Object.keys(obj).length, 2); diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js index f9f23472f1..9c0297d6eb 100644 --- a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Static async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod flags: [generated, async] -includes: [compareArray.js] info: | ClassElement : static MethodDefinition @@ -39,10 +38,15 @@ var gen = C.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js b/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js index 3bee88b77b..aff92093e9 100644 --- a/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js +++ b/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod flags: [generated, async] -includes: [compareArray.js] info: | ClassElement : MethodDefinition @@ -39,10 +38,15 @@ var gen = C.prototype.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js b/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js index 9e98366650..d26fc19a4c 100644 --- a/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js +++ b/test/language/expressions/class/gen-method-static-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Static generator method as a ClassExpression element) esid: prod-GeneratorMethod flags: [generated] -includes: [compareArray.js] info: | ClassElement : static MethodDefinition @@ -22,7 +21,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -38,9 +36,15 @@ var gen = C.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/class/gen-method-yield-spread-arr-single.js b/test/language/expressions/class/gen-method-yield-spread-arr-single.js index a9ecc6af52..b1d9e473ba 100644 --- a/test/language/expressions/class/gen-method-yield-spread-arr-single.js +++ b/test/language/expressions/class/gen-method-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Generator method as a ClassExpression element) esid: prod-GeneratorMethod flags: [generated] -includes: [compareArray.js] info: | ClassElement : MethodDefinition @@ -22,7 +21,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -38,9 +36,15 @@ var gen = C.prototype.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js b/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js index 4931f2f953..2fa759a558 100644 --- a/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/generators/named-yield-identifier-spread-non-strict.js @@ -19,6 +19,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -40,16 +41,20 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); +var value = item.value; + assert.sameValue(item.done, false); -assert.sameValue(item.value.x, 10); -assert.sameValue(item.value.y, 20); -assert.sameValue(item.value.z, 30); -assert.sameValue(item.value.a, 1); -assert.sameValue(item.value.b, 2); -assert.sameValue(Object.keys(item.value).length, 5); +assert.sameValue(value.x, 10); +assert.sameValue(value.y, 20); +assert.sameValue(value.z, 30); +assert.sameValue(value.a, 1); +assert.sameValue(value.b, 2); +assert.sameValue(value[s], 42); +assert(Object.hasOwnProperty.call(value, s)); +assert.sameValue(Object.keys(value).length, 5); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/named-yield-spread-arr-single.js b/test/language/expressions/generators/named-yield-spread-arr-single.js index eb2b8534d2..b0bd3194ef 100644 --- a/test/language/expressions/generators/named-yield-spread-arr-single.js +++ b/test/language/expressions/generators/named-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Named generator expression) esid: prod-GeneratorExpression flags: [generated] -includes: [compareArray.js] info: | 14.4 Generator Function Definitions @@ -16,7 +15,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -30,9 +28,15 @@ var gen = function *g() { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/yield-identifier-spread-non-strict.js b/test/language/expressions/generators/yield-identifier-spread-non-strict.js index 2991544a06..05be96d4e7 100644 --- a/test/language/expressions/generators/yield-identifier-spread-non-strict.js +++ b/test/language/expressions/generators/yield-identifier-spread-non-strict.js @@ -19,6 +19,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -40,16 +41,20 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); +var value = item.value; + assert.sameValue(item.done, false); -assert.sameValue(item.value.x, 10); -assert.sameValue(item.value.y, 20); -assert.sameValue(item.value.z, 30); -assert.sameValue(item.value.a, 1); -assert.sameValue(item.value.b, 2); -assert.sameValue(Object.keys(item.value).length, 5); +assert.sameValue(value.x, 10); +assert.sameValue(value.y, 20); +assert.sameValue(value.z, 30); +assert.sameValue(value.a, 1); +assert.sameValue(value.b, 2); +assert.sameValue(value[s], 42); +assert(Object.hasOwnProperty.call(value, s)); +assert.sameValue(Object.keys(value).length, 5); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/generators/yield-spread-arr-single.js b/test/language/expressions/generators/yield-spread-arr-single.js index f9cba19aa3..52bb571f71 100644 --- a/test/language/expressions/generators/yield-spread-arr-single.js +++ b/test/language/expressions/generators/yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Unnamed generator expression) esid: prod-GeneratorExpression flags: [generated] -includes: [compareArray.js] info: | 14.4 Generator Function Definitions @@ -16,7 +15,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -30,9 +28,15 @@ var gen = function *() { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/new/spread-obj-symbol-property.js b/test/language/expressions/new/spread-obj-symbol-property.js index 33f5868345..ada48fd50f 100644 --- a/test/language/expressions/new/spread-obj-symbol-property.js +++ b/test/language/expressions/new/spread-obj-symbol-property.js @@ -38,6 +38,7 @@ var callCount = 0; new function(obj) { assert.sameValue(obj[symbol], 1); + assert(Object.hasOwnProperty.call(obj, symbol)); assert.sameValue(obj.c, 4); assert.sameValue(obj.d, 5); assert.sameValue(Object.keys(obj).length, 2); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js index 7bb35899c8..aaef9d3cc9 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js @@ -19,6 +19,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -43,8 +44,8 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); item.then(({ done, value }) => { @@ -54,7 +55,9 @@ item.then(({ done, value }) => { assert.sameValue(value.z, 30); assert.sameValue(value.a, 1); assert.sameValue(value.b, 2); + assert.sameValue(value[s], 42); assert.sameValue(Object.keys(value).length, 5); + assert(Object.hasOwnProperty.call(value, s)); }).then($DONE, $DONE); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js index 1650fce4cd..fb93afba31 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Async generator method) esid: prod-AsyncGeneratorMethod flags: [generated, async] -includes: [compareArray.js] info: | Async Generator Function Definitions @@ -32,10 +31,15 @@ var gen = { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js b/test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js index 02c646bf75..53802b9726 100644 --- a/test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/object/method-definition/gen-yield-identifier-spread-non-strict.js @@ -19,6 +19,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -42,16 +43,20 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); +var value = item.value; + assert.sameValue(item.done, false); -assert.sameValue(item.value.x, 10); -assert.sameValue(item.value.y, 20); -assert.sameValue(item.value.z, 30); -assert.sameValue(item.value.a, 1); -assert.sameValue(item.value.b, 2); -assert.sameValue(Object.keys(item.value).length, 5); +assert.sameValue(value.x, 10); +assert.sameValue(value.y, 20); +assert.sameValue(value.z, 30); +assert.sameValue(value.a, 1); +assert.sameValue(value.b, 2); +assert.sameValue(value[s], 42); +assert(Object.hasOwnProperty.call(value, s)); +assert.sameValue(Object.keys(value).length, 5); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js b/test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js index 47a3f9d5be..9fe742e13f 100644 --- a/test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js +++ b/test/language/expressions/object/method-definition/gen-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Generator method) esid: prod-GeneratorMethod flags: [generated] -includes: [compareArray.js] info: | 14.4 Generator Function Definitions @@ -16,7 +15,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -32,9 +30,15 @@ var gen = { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/expressions/super/call-spread-obj-symbol-property.js b/test/language/expressions/super/call-spread-obj-symbol-property.js index dd34984389..94ba4324f0 100644 --- a/test/language/expressions/super/call-spread-obj-symbol-property.js +++ b/test/language/expressions/super/call-spread-obj-symbol-property.js @@ -37,6 +37,7 @@ var callCount = 0; class Test262ParentClass { constructor(obj) { assert.sameValue(obj[symbol], 1); + assert(Object.hasOwnProperty.call(obj, symbol)); assert.sameValue(obj.c, 4); assert.sameValue(obj.d, 5); assert.sameValue(Object.keys(obj).length, 2); diff --git a/test/language/statements/async-generator/yield-identifier-spread-non-strict.js b/test/language/statements/async-generator/yield-identifier-spread-non-strict.js index 35c9b4fa92..dd2759f3f7 100644 --- a/test/language/statements/async-generator/yield-identifier-spread-non-strict.js +++ b/test/language/statements/async-generator/yield-identifier-spread-non-strict.js @@ -20,6 +20,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -42,8 +43,8 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); item.then(({ done, value }) => { @@ -53,7 +54,9 @@ item.then(({ done, value }) => { assert.sameValue(value.z, 30); assert.sameValue(value.a, 1); assert.sameValue(value.b, 2); + assert.sameValue(value[s], 42); assert.sameValue(Object.keys(value).length, 5); + assert(Object.hasOwnProperty.call(value, s)); }).then($DONE, $DONE); assert.sameValue(callCount, 1); diff --git a/test/language/statements/async-generator/yield-spread-arr-single.js b/test/language/statements/async-generator/yield-spread-arr-single.js index 80a9641244..b2a3063395 100644 --- a/test/language/statements/async-generator/yield-spread-arr-single.js +++ b/test/language/statements/async-generator/yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Async generator Function declaration) esid: prod-AsyncGeneratorDeclaration flags: [generated, async] -includes: [compareArray.js] info: | Async Generator Function Definitions @@ -32,10 +31,15 @@ async function *gen() { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js b/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js index 3df12ef903..8ae48c2a72 100644 --- a/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js +++ b/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Static async generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod flags: [generated, async] -includes: [compareArray.js] info: | ClassElement : static MethodDefinition @@ -39,10 +38,15 @@ var gen = C.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/statements/class/async-gen-method-yield-spread-arr-single.js b/test/language/statements/class/async-gen-method-yield-spread-arr-single.js index 0a34a9577e..acb035bacb 100644 --- a/test/language/statements/class/async-gen-method-yield-spread-arr-single.js +++ b/test/language/statements/class/async-gen-method-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Async Generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod flags: [generated, async] -includes: [compareArray.js] info: | ClassElement : MethodDefinition @@ -39,10 +38,15 @@ var gen = C.prototype.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); item.then(({ done, value }) => { - assert(compareArray(value, arr)); + assert.notSameValue(value, arr, 'value is a new array'); + assert(Array.isArray(value), 'value is an Array exotic object'); + assert.sameValue(value.length, 3) + assert.sameValue(value[0], 'a'); + assert.sameValue(value[1], 'b'); + assert.sameValue(value[2], 'c'); assert.sameValue(done, false); }).then($DONE, $DONE); diff --git a/test/language/statements/class/gen-method-static-yield-spread-arr-single.js b/test/language/statements/class/gen-method-static-yield-spread-arr-single.js index 900dc84d46..5a74810166 100644 --- a/test/language/statements/class/gen-method-static-yield-spread-arr-single.js +++ b/test/language/statements/class/gen-method-static-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Static generator method as a ClassDeclaration element) esid: prod-GeneratorMethod flags: [generated] -includes: [compareArray.js] info: | ClassElement : static MethodDefinition @@ -22,7 +21,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -38,9 +36,15 @@ var gen = C.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/statements/class/gen-method-yield-spread-arr-single.js b/test/language/statements/class/gen-method-yield-spread-arr-single.js index 6ae9e72200..86b634eb17 100644 --- a/test/language/statements/class/gen-method-yield-spread-arr-single.js +++ b/test/language/statements/class/gen-method-yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Geenerator method as a ClassDeclaration element) esid: prod-GeneratorMethod flags: [generated] -includes: [compareArray.js] info: | ClassElement : MethodDefinition @@ -22,7 +21,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -38,9 +36,15 @@ var gen = C.prototype.gen; var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); diff --git a/test/language/statements/generators/yield-identifier-spread-non-strict.js b/test/language/statements/generators/yield-identifier-spread-non-strict.js index 3fa89b1dfa..0490ee4ac4 100644 --- a/test/language/statements/generators/yield-identifier-spread-non-strict.js +++ b/test/language/statements/generators/yield-identifier-spread-non-strict.js @@ -19,6 +19,7 @@ info: | ...AssignmentExpression[In, ?Yield] ---*/ +var s = Symbol('s'); var callCount = 0; @@ -40,16 +41,20 @@ var iter = gen(); iter.next(); iter.next(); -iter.next({ x: 10, a: 0, b: 0 }); -iter.next({ y: 20, a: 1, b: 1 }); +iter.next({ x: 10, a: 0, b: 0, [s]: 1 }); +iter.next({ y: 20, a: 1, b: 1, [s]: 42 }); var item = iter.next({ z: 30, b: 2 }); +var value = item.value; + assert.sameValue(item.done, false); -assert.sameValue(item.value.x, 10); -assert.sameValue(item.value.y, 20); -assert.sameValue(item.value.z, 30); -assert.sameValue(item.value.a, 1); -assert.sameValue(item.value.b, 2); -assert.sameValue(Object.keys(item.value).length, 5); +assert.sameValue(value.x, 10); +assert.sameValue(value.y, 20); +assert.sameValue(value.z, 30); +assert.sameValue(value.a, 1); +assert.sameValue(value.b, 2); +assert.sameValue(value[s], 42); +assert(Object.hasOwnProperty.call(value, s)); +assert.sameValue(Object.keys(value).length, 5); assert.sameValue(callCount, 1); diff --git a/test/language/statements/generators/yield-spread-arr-single.js b/test/language/statements/generators/yield-spread-arr-single.js index 00aaba1eca..1ef357eec9 100644 --- a/test/language/statements/generators/yield-spread-arr-single.js +++ b/test/language/statements/generators/yield-spread-arr-single.js @@ -5,7 +5,6 @@ description: Use yield value in a array spread position (Generator Function declaration) esid: prod-GeneratorDeclaration flags: [generated] -includes: [compareArray.js] info: | 14.4 Generator Function Definitions @@ -16,7 +15,6 @@ info: | SpreadElement[Yield, Await]: ...AssignmentExpression[+In, ?Yield, ?Await] - ---*/ var arr = ['a', 'b', 'c']; @@ -30,9 +28,15 @@ function *gen() { var iter = gen(); iter.next(false); -var item = iter.next(['a', 'b', 'c']); +var item = iter.next(arr); +var value = item.value; -assert(compareArray(item.value, arr)); +assert.notSameValue(value, arr, 'value is a new array'); +assert(Array.isArray(value), 'value is an Array exotic object'); +assert.sameValue(value.length, 3) +assert.sameValue(value[0], 'a'); +assert.sameValue(value[1], 'b'); +assert.sameValue(value[2], 'c'); assert.sameValue(item.done, false); assert.sameValue(callCount, 1); From 6ad75adb0e929209e7c3e2b0c93f4f86154258e3 Mon Sep 17 00:00:00 2001 From: Leo Balter Date: Mon, 27 Mar 2017 11:52:09 -0400 Subject: [PATCH 8/9] Add async-iteration features flag --- src/async-generators/default/async-class-decl-method.template | 1 + .../default/async-class-decl-static-method.template | 1 + src/async-generators/default/async-class-expr-method.template | 1 + .../default/async-class-expr-static-method.template | 1 + src/async-generators/default/async-declaration.template | 1 + src/async-generators/default/async-expression-named.template | 1 + src/async-generators/default/async-expression.template | 1 + src/async-generators/default/async-obj-method.template | 1 + src/async-generators/non-strict/async-declaration.template | 1 + src/async-generators/non-strict/async-expression-named.template | 1 + src/async-generators/non-strict/async-expression.template | 1 + src/async-generators/non-strict/async-obj-method.template | 1 + 12 files changed, 12 insertions(+) diff --git a/src/async-generators/default/async-class-decl-method.template b/src/async-generators/default/async-class-decl-method.template index 4bdf97b1bc..87cd550d46 100644 --- a/src/async-generators/default/async-class-decl-method.template +++ b/src/async-generators/default/async-class-decl-method.template @@ -16,6 +16,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-class-decl-static-method.template b/src/async-generators/default/async-class-decl-static-method.template index d352943b5f..00b105ad43 100644 --- a/src/async-generators/default/async-class-decl-static-method.template +++ b/src/async-generators/default/async-class-decl-static-method.template @@ -16,6 +16,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-class-expr-method.template b/src/async-generators/default/async-class-expr-method.template index 141f3ab391..745a8e9279 100644 --- a/src/async-generators/default/async-class-expr-method.template +++ b/src/async-generators/default/async-class-expr-method.template @@ -16,6 +16,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-class-expr-static-method.template b/src/async-generators/default/async-class-expr-static-method.template index 85a18a69c4..ac7328fff2 100644 --- a/src/async-generators/default/async-class-expr-static-method.template +++ b/src/async-generators/default/async-class-expr-static-method.template @@ -16,6 +16,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-declaration.template b/src/async-generators/default/async-declaration.template index e1af489b82..c32db4e674 100644 --- a/src/async-generators/default/async-declaration.template +++ b/src/async-generators/default/async-declaration.template @@ -11,6 +11,7 @@ info: | AsyncGeneratorDeclaration: async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-expression-named.template b/src/async-generators/default/async-expression-named.template index ef348b6317..e02b6938bb 100644 --- a/src/async-generators/default/async-expression-named.template +++ b/src/async-generators/default/async-expression-named.template @@ -11,6 +11,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-expression.template b/src/async-generators/default/async-expression.template index dbbabb63a6..11e0b0a962 100644 --- a/src/async-generators/default/async-expression.template +++ b/src/async-generators/default/async-expression.template @@ -11,6 +11,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/default/async-obj-method.template b/src/async-generators/default/async-obj-method.template index 6527dd071c..c9e64d90c6 100644 --- a/src/async-generators/default/async-obj-method.template +++ b/src/async-generators/default/async-obj-method.template @@ -9,6 +9,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/non-strict/async-declaration.template b/src/async-generators/non-strict/async-declaration.template index c7b9c09874..7baa44f5ad 100644 --- a/src/async-generators/non-strict/async-declaration.template +++ b/src/async-generators/non-strict/async-declaration.template @@ -11,6 +11,7 @@ info: | AsyncGeneratorDeclaration: async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/non-strict/async-expression-named.template b/src/async-generators/non-strict/async-expression-named.template index c6d7c07b83..0659f18886 100644 --- a/src/async-generators/non-strict/async-expression-named.template +++ b/src/async-generators/non-strict/async-expression-named.template @@ -11,6 +11,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/non-strict/async-expression.template b/src/async-generators/non-strict/async-expression.template index 3a6dc2c2b9..20d3bc841f 100644 --- a/src/async-generators/non-strict/async-expression.template +++ b/src/async-generators/non-strict/async-expression.template @@ -11,6 +11,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; diff --git a/src/async-generators/non-strict/async-obj-method.template b/src/async-generators/non-strict/async-obj-method.template index 0216a24495..b15e9da3cd 100644 --- a/src/async-generators/non-strict/async-obj-method.template +++ b/src/async-generators/non-strict/async-obj-method.template @@ -10,6 +10,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } +features: [async-iteration] ---*/ var callCount = 0; From 3d7ae072954e518e897e5feae4f2cdba97f713f0 Mon Sep 17 00:00:00 2001 From: Leo Balter Date: Mon, 27 Mar 2017 11:55:01 -0400 Subject: [PATCH 9/9] Generate tests --- .../async-generator/named-yield-identifier-non-strict.js | 2 ++ .../named-yield-identifier-spread-non-strict.js | 3 ++- .../async-generator/named-yield-identifier-spread-strict.js | 3 ++- .../async-generator/named-yield-identifier-strict.js | 2 ++ .../async-generator/named-yield-spread-arr-multiple.js | 2 ++ .../async-generator/named-yield-spread-arr-single.js | 2 ++ .../expressions/async-generator/named-yield-spread-obj.js | 3 ++- .../expressions/async-generator/yield-identifier-non-strict.js | 2 ++ .../async-generator/yield-identifier-spread-non-strict.js | 3 ++- .../async-generator/yield-identifier-spread-strict.js | 3 ++- .../expressions/async-generator/yield-identifier-strict.js | 2 ++ .../expressions/async-generator/yield-spread-arr-multiple.js | 2 ++ .../expressions/async-generator/yield-spread-arr-single.js | 2 ++ test/language/expressions/async-generator/yield-spread-obj.js | 3 ++- .../async-gen-method-static-yield-identifier-spread-strict.js | 3 ++- .../class/async-gen-method-static-yield-identifier-strict.js | 2 ++ .../class/async-gen-method-static-yield-spread-arr-multiple.js | 2 ++ .../class/async-gen-method-static-yield-spread-arr-single.js | 2 ++ .../class/async-gen-method-static-yield-spread-obj.js | 3 ++- .../class/async-gen-method-yield-identifier-spread-strict.js | 3 ++- .../class/async-gen-method-yield-identifier-strict.js | 2 ++ .../class/async-gen-method-yield-spread-arr-multiple.js | 2 ++ .../class/async-gen-method-yield-spread-arr-single.js | 2 ++ .../expressions/class/async-gen-method-yield-spread-obj.js | 3 ++- .../method-definition/async-gen-yield-identifier-non-strict.js | 2 ++ .../async-gen-yield-identifier-spread-non-strict.js | 3 ++- .../async-gen-yield-identifier-spread-strict.js | 3 ++- .../method-definition/async-gen-yield-identifier-strict.js | 2 ++ .../method-definition/async-gen-yield-spread-arr-multiple.js | 2 ++ .../method-definition/async-gen-yield-spread-arr-single.js | 2 ++ .../object/method-definition/async-gen-yield-spread-obj.js | 3 ++- .../statements/async-generator/yield-identifier-non-strict.js | 2 ++ .../async-generator/yield-identifier-spread-non-strict.js | 3 ++- .../async-generator/yield-identifier-spread-strict.js | 3 ++- .../statements/async-generator/yield-identifier-strict.js | 2 ++ .../statements/async-generator/yield-spread-arr-multiple.js | 2 ++ .../statements/async-generator/yield-spread-arr-single.js | 2 ++ test/language/statements/async-generator/yield-spread-obj.js | 3 ++- .../async-gen-method-static-yield-identifier-spread-strict.js | 3 ++- .../class/async-gen-method-static-yield-identifier-strict.js | 2 ++ .../class/async-gen-method-static-yield-spread-arr-multiple.js | 2 ++ .../class/async-gen-method-static-yield-spread-arr-single.js | 2 ++ .../class/async-gen-method-static-yield-spread-obj.js | 3 ++- .../class/async-gen-method-yield-identifier-spread-strict.js | 3 ++- .../class/async-gen-method-yield-identifier-strict.js | 2 ++ .../class/async-gen-method-yield-spread-arr-multiple.js | 2 ++ .../class/async-gen-method-yield-spread-arr-single.js | 2 ++ .../statements/class/async-gen-method-yield-spread-obj.js | 3 ++- 48 files changed, 96 insertions(+), 20 deletions(-) diff --git a/test/language/expressions/async-generator/named-yield-identifier-non-strict.js b/test/language/expressions/async-generator/named-yield-identifier-non-strict.js index 5f78d6de9f..f40bbe0e54 100644 --- a/test/language/expressions/async-generator/named-yield-identifier-non-strict.js +++ b/test/language/expressions/async-generator/named-yield-identifier-non-strict.js @@ -4,6 +4,7 @@ /*--- description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator named expression - valid for non-strict only cases) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -11,6 +12,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js b/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js index d65911bb3c..6c7ae2960f 100644 --- a/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/async-generator/named-yield-identifier-spread-non-strict.js @@ -4,7 +4,7 @@ /*--- description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator named expression - valid for non-strict only cases) esid: prod-AsyncGeneratorExpression -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -13,6 +13,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js b/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js index f022c50e3f..a368ba6c3e 100644 --- a/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js +++ b/test/language/expressions/async-generator/named-yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Named async generator expression) esid: prod-AsyncGeneratorExpression -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -16,6 +16,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/async-generator/named-yield-identifier-strict.js b/test/language/expressions/async-generator/named-yield-identifier-strict.js index a49291637b..6c2b9d59e8 100644 --- a/test/language/expressions/async-generator/named-yield-identifier-strict.js +++ b/test/language/expressions/async-generator/named-yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Named async generator expression) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -14,6 +15,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js b/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js index 89900d9c06..56c3a3cdf7 100644 --- a/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js +++ b/test/language/expressions/async-generator/named-yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Named async generator expression) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -13,6 +14,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/async-generator/named-yield-spread-arr-single.js b/test/language/expressions/async-generator/named-yield-spread-arr-single.js index 95d0853959..a7c1e8634a 100644 --- a/test/language/expressions/async-generator/named-yield-spread-arr-single.js +++ b/test/language/expressions/async-generator/named-yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Named async generator expression) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, async] info: | Async Generator Function Definitions @@ -12,6 +13,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/async-generator/named-yield-spread-obj.js b/test/language/expressions/async-generator/named-yield-spread-obj.js index a4baf2566c..a673d06bba 100644 --- a/test/language/expressions/async-generator/named-yield-spread-obj.js +++ b/test/language/expressions/async-generator/named-yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Named async generator expression) esid: prod-AsyncGeneratorExpression -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -14,6 +14,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/async-generator/yield-identifier-non-strict.js b/test/language/expressions/async-generator/yield-identifier-non-strict.js index 8708e371d9..347e5fcd0a 100644 --- a/test/language/expressions/async-generator/yield-identifier-non-strict.js +++ b/test/language/expressions/async-generator/yield-identifier-non-strict.js @@ -4,6 +4,7 @@ /*--- description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator expression - valid for non-strict only cases) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -11,6 +12,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js b/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js index 8a60681c23..90bcbe2ed0 100644 --- a/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js +++ b/test/language/expressions/async-generator/yield-identifier-spread-non-strict.js @@ -4,7 +4,7 @@ /*--- description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator expression - valid for non-strict only cases) esid: prod-AsyncGeneratorExpression -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -13,6 +13,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/async-generator/yield-identifier-spread-strict.js b/test/language/expressions/async-generator/yield-identifier-spread-strict.js index 1e332e136e..8c8214d885 100644 --- a/test/language/expressions/async-generator/yield-identifier-spread-strict.js +++ b/test/language/expressions/async-generator/yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Unnamed async generator expression) esid: prod-AsyncGeneratorExpression -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -16,6 +16,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/async-generator/yield-identifier-strict.js b/test/language/expressions/async-generator/yield-identifier-strict.js index 067065bb15..1a32a96d3c 100644 --- a/test/language/expressions/async-generator/yield-identifier-strict.js +++ b/test/language/expressions/async-generator/yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Unnamed async generator expression) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -14,6 +15,7 @@ info: | AsyncGeneratorExpression : async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/async-generator/yield-spread-arr-multiple.js b/test/language/expressions/async-generator/yield-spread-arr-multiple.js index 4038349475..fff1129daf 100644 --- a/test/language/expressions/async-generator/yield-spread-arr-multiple.js +++ b/test/language/expressions/async-generator/yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Unnamed async generator expression) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -13,6 +14,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/async-generator/yield-spread-arr-single.js b/test/language/expressions/async-generator/yield-spread-arr-single.js index 421f0004cf..1cce6d8d20 100644 --- a/test/language/expressions/async-generator/yield-spread-arr-single.js +++ b/test/language/expressions/async-generator/yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Unnamed async generator expression) esid: prod-AsyncGeneratorExpression +features: [async-iteration] flags: [generated, async] info: | Async Generator Function Definitions @@ -12,6 +13,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/async-generator/yield-spread-obj.js b/test/language/expressions/async-generator/yield-spread-obj.js index 8f9b701a54..717158f88d 100644 --- a/test/language/expressions/async-generator/yield-spread-obj.js +++ b/test/language/expressions/async-generator/yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Unnamed async generator expression) esid: prod-AsyncGeneratorExpression -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -14,6 +14,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js b/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js index 3bd1d2095f..9e8226d81f 100644 --- a/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js +++ b/test/language/expressions/class/async-gen-method-static-yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Static async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -21,6 +21,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js b/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js index a0610dabe7..2adf5b764e 100644 --- a/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js +++ b/test/language/expressions/class/async-gen-method-static-yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Static async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -19,6 +20,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js index edbd643d5a..fc3d81a4ea 100644 --- a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Static async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -18,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js index 9c0297d6eb..18f8dd1252 100644 --- a/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Static async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] info: | ClassElement : @@ -17,6 +18,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js b/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js index a2a8109fef..9fb44181c0 100644 --- a/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js +++ b/test/language/expressions/class/async-gen-method-static-yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Static async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -19,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js b/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js index 840350036e..4a163c7215 100644 --- a/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js +++ b/test/language/expressions/class/async-gen-method-yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -21,6 +21,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/class/async-gen-method-yield-identifier-strict.js b/test/language/expressions/class/async-gen-method-yield-identifier-strict.js index 803e9f9669..45fecde820 100644 --- a/test/language/expressions/class/async-gen-method-yield-identifier-strict.js +++ b/test/language/expressions/class/async-gen-method-yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -19,6 +20,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js b/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js index 00040546b8..a05af12200 100644 --- a/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js +++ b/test/language/expressions/class/async-gen-method-yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -18,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js b/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js index aff92093e9..0e9a722b51 100644 --- a/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js +++ b/test/language/expressions/class/async-gen-method-yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] info: | ClassElement : @@ -17,6 +18,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/class/async-gen-method-yield-spread-obj.js b/test/language/expressions/class/async-gen-method-yield-spread-obj.js index 54ce456642..08d3385f8b 100644 --- a/test/language/expressions/class/async-gen-method-yield-spread-obj.js +++ b/test/language/expressions/class/async-gen-method-yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Async generator method as a ClassExpression element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -19,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js index f6a94c40f2..f02a132462 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-non-strict.js @@ -4,12 +4,14 @@ /*--- description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Generator method - valid for non-strict only cases) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js index aaef9d3cc9..eeeecd3ef9 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-non-strict.js @@ -4,7 +4,7 @@ /*--- description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Generator method - valid for non-strict only cases) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -12,6 +12,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js index cacb1efb64..4ac20d73e7 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async generator method) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -15,6 +15,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js b/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js index e1360accb8..186de46ca5 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async generator method) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -13,6 +14,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + ---*/ var callCount = 0; diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js index bbd66a65c2..984ce0c113 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async generator method) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -12,6 +13,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js index fb93afba31..937834b862 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async generator method) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] info: | Async Generator Function Definitions @@ -11,6 +12,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js b/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js index 76655d4c22..a8de4d6474 100644 --- a/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js +++ b/test/language/expressions/object/method-definition/async-gen-yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Async generator method) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -13,6 +13,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/async-generator/yield-identifier-non-strict.js b/test/language/statements/async-generator/yield-identifier-non-strict.js index 292b4f00c3..2a145e811c 100644 --- a/test/language/statements/async-generator/yield-identifier-non-strict.js +++ b/test/language/statements/async-generator/yield-identifier-non-strict.js @@ -4,6 +4,7 @@ /*--- description: Use of yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator function declaration - valid for non-strict only cases) esid: prod-AsyncGeneratorDeclaration +features: [async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -11,6 +12,7 @@ info: | AsyncGeneratorDeclaration: async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/statements/async-generator/yield-identifier-spread-non-strict.js b/test/language/statements/async-generator/yield-identifier-spread-non-strict.js index dd2759f3f7..8745b43fbd 100644 --- a/test/language/statements/async-generator/yield-identifier-spread-non-strict.js +++ b/test/language/statements/async-generator/yield-identifier-spread-non-strict.js @@ -4,7 +4,7 @@ /*--- description: Mixed use of object spread and yield as a valid identifier in a function body inside a generator body in non strict mode (Async generator function declaration - valid for non-strict only cases) esid: prod-AsyncGeneratorDeclaration -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, noStrict, async] info: | Async Generator Function Definitions @@ -13,6 +13,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/async-generator/yield-identifier-spread-strict.js b/test/language/statements/async-generator/yield-identifier-spread-strict.js index 6b1ec3cac8..70818aae41 100644 --- a/test/language/statements/async-generator/yield-identifier-spread-strict.js +++ b/test/language/statements/async-generator/yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async generator Function declaration) esid: prod-AsyncGeneratorDeclaration -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -16,6 +16,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/async-generator/yield-identifier-strict.js b/test/language/statements/async-generator/yield-identifier-strict.js index 1ba4d0729e..1d037a488b 100644 --- a/test/language/statements/async-generator/yield-identifier-strict.js +++ b/test/language/statements/async-generator/yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async generator Function declaration) esid: prod-AsyncGeneratorDeclaration +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -14,6 +15,7 @@ info: | AsyncGeneratorDeclaration: async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/statements/async-generator/yield-spread-arr-multiple.js b/test/language/statements/async-generator/yield-spread-arr-multiple.js index 34f0e3ef50..f8a500feb8 100644 --- a/test/language/statements/async-generator/yield-spread-arr-multiple.js +++ b/test/language/statements/async-generator/yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async generator Function declaration) esid: prod-AsyncGeneratorDeclaration +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -13,6 +14,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/statements/async-generator/yield-spread-arr-single.js b/test/language/statements/async-generator/yield-spread-arr-single.js index b2a3063395..5c08772921 100644 --- a/test/language/statements/async-generator/yield-spread-arr-single.js +++ b/test/language/statements/async-generator/yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async generator Function declaration) esid: prod-AsyncGeneratorDeclaration +features: [async-iteration] flags: [generated, async] info: | Async Generator Function Definitions @@ -12,6 +13,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/statements/async-generator/yield-spread-obj.js b/test/language/statements/async-generator/yield-spread-obj.js index 4ed722ea9a..956b69d8d9 100644 --- a/test/language/statements/async-generator/yield-spread-obj.js +++ b/test/language/statements/async-generator/yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Async generator Function declaration) esid: prod-AsyncGeneratorDeclaration -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -14,6 +14,7 @@ info: | async [no LineTerminator here] function * BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js b/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js index 58a66025e1..056d16e594 100644 --- a/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js +++ b/test/language/statements/class/async-gen-method-static-yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Static async generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -21,6 +21,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js b/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js index 9609478ee0..dc4d2876d0 100644 --- a/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js +++ b/test/language/statements/class/async-gen-method-static-yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Static async generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -19,6 +20,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js b/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js index 9f69ae6fd2..4226899aff 100644 --- a/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js +++ b/test/language/statements/class/async-gen-method-static-yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Static async generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -18,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js b/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js index 8ae48c2a72..4bc3dff5a1 100644 --- a/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js +++ b/test/language/statements/class/async-gen-method-static-yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Static async generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] info: | ClassElement : @@ -17,6 +18,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/statements/class/async-gen-method-static-yield-spread-obj.js b/test/language/statements/class/async-gen-method-static-yield-spread-obj.js index 526bb2b937..90598785de 100644 --- a/test/language/statements/class/async-gen-method-static-yield-spread-obj.js +++ b/test/language/statements/class/async-gen-method-static-yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Static async generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -19,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js b/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js index bfee4d874d..d7e36d36fe 100644 --- a/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js +++ b/test/language/statements/class/async-gen-method-yield-identifier-spread-strict.js @@ -4,7 +4,7 @@ /*--- description: It's an early error if the AssignmentExpression is a function body with yield as an identifier in strict mode. (Async Generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -21,6 +21,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: diff --git a/test/language/statements/class/async-gen-method-yield-identifier-strict.js b/test/language/statements/class/async-gen-method-yield-identifier-strict.js index 8f6d71e7e6..8d5038ac9b 100644 --- a/test/language/statements/class/async-gen-method-yield-identifier-strict.js +++ b/test/language/statements/class/async-gen-method-yield-identifier-strict.js @@ -4,6 +4,7 @@ /*--- description: It's an early error if the generator body has another function body with yield as an identifier in strict mode. (Async Generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, onlyStrict] negative: phase: early @@ -19,6 +20,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + ---*/ diff --git a/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js b/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js index a32b600497..2ae6c7bba6 100644 --- a/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js +++ b/test/language/statements/class/async-gen-method-yield-spread-arr-multiple.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async Generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -18,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/statements/class/async-gen-method-yield-spread-arr-single.js b/test/language/statements/class/async-gen-method-yield-spread-arr-single.js index acb035bacb..8a7329e8bc 100644 --- a/test/language/statements/class/async-gen-method-yield-spread-arr-single.js +++ b/test/language/statements/class/async-gen-method-yield-spread-arr-single.js @@ -4,6 +4,7 @@ /*--- description: Use yield value in a array spread position (Async Generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod +features: [async-iteration] flags: [generated, async] info: | ClassElement : @@ -17,6 +18,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Array Initializer SpreadElement[Yield, Await]: diff --git a/test/language/statements/class/async-gen-method-yield-spread-obj.js b/test/language/statements/class/async-gen-method-yield-spread-obj.js index ffbb519675..01c03f7737 100644 --- a/test/language/statements/class/async-gen-method-yield-spread-obj.js +++ b/test/language/statements/class/async-gen-method-yield-spread-obj.js @@ -4,7 +4,7 @@ /*--- description: Use yield value in a object spread position (Async Generator method as a ClassDeclaration element) esid: prod-AsyncGeneratorMethod -features: [object-spread] +features: [object-spread, async-iteration] flags: [generated, async] includes: [compareArray.js] info: | @@ -19,6 +19,7 @@ info: | AsyncGeneratorMethod : async [no LineTerminator here] * PropertyName ( UniqueFormalParameters ) { AsyncGeneratorBody } + Spread Properties PropertyDefinition[Yield]: