From 74b07de387d4976eb232cbf69338f5a7305486e3 Mon Sep 17 00:00:00 2001 From: Leonardo Balter <leonardo.balter@gmail.com> Date: Thu, 16 Mar 2017 15:54:24 -0400 Subject: [PATCH] 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 -- GitLab