diff --git a/test/language/generators/generator.declaration.js b/test/language/generators/generator.declaration.js new file mode 100644 index 0000000000000000000000000000000000000000..0f8aada0de3f44ed0701083e99c0c2080135450f --- /dev/null +++ b/test/language/generators/generator.declaration.js @@ -0,0 +1,17 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + Generator can be declared with GeneratorDeclaration syntax +es6id: 14.4 +author: Sam Mikes +description: can declare generator functions +---*/ + +function *foo(a) { yield a+1; return; } + +var g = foo(3); + +assert.sameValue(g.next().value, 4); +assert.sameValue(g.next().done, true); diff --git a/test/language/generators/generator.declareMethod.argSuperCall.js b/test/language/generators/generator.declareMethod.argSuperCall.js new file mode 100644 index 0000000000000000000000000000000000000000..199cf9b79dac459d2b5512eaa68c714c379dd689 --- /dev/null +++ b/test/language/generators/generator.declareMethod.argSuperCall.js @@ -0,0 +1,17 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + GeneratorMethod early SyntaxError when super is called + directly inside generator args +es6id: 14.4.1 +author: Sam Mikes +description: GeneratorMethod error if HasDirectSuper in args +negative: SyntaxError +---*/ + +var obj = { + *foo(a = super) { + } +}; diff --git a/test/language/generators/generator.declareMethod.argSuperProperty.js b/test/language/generators/generator.declareMethod.argSuperProperty.js new file mode 100644 index 0000000000000000000000000000000000000000..8f0d3b4fe490a03dfec3191c7ea4323fcd2a3f06 --- /dev/null +++ b/test/language/generators/generator.declareMethod.argSuperProperty.js @@ -0,0 +1,17 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + GeneratorMethod can reference SuperProperty in arg +es6id: 14.4.1 +author: Sam Mikes +description: GeneratorMethod uses SuperProperty (allowed) +feature: default-arg, generator, super +---*/ + +var obj = { + *foo(a = super.x) { + yield; + } +}; diff --git a/test/language/generators/generator.declareMethod.bodySuperCall.js b/test/language/generators/generator.declareMethod.bodySuperCall.js new file mode 100644 index 0000000000000000000000000000000000000000..8d95934936cc6e10f4edd2f7eb38dd4d7df2cb4d --- /dev/null +++ b/test/language/generators/generator.declareMethod.bodySuperCall.js @@ -0,0 +1,18 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + GeneratorMethod early SyntaxError when super is called + directly inside generator body +es6id: 14.4.1 +author: Sam Mikes +description: GeneratorMethod error if HasDirectSuper in body +negative: SyntaxError +---*/ + +var obj = { + *foo(a) { + super; + } +}; diff --git a/test/language/generators/generator.declareMethod.bodySuperProperty.js b/test/language/generators/generator.declareMethod.bodySuperProperty.js new file mode 100644 index 0000000000000000000000000000000000000000..adfb42ec8bb36310b6b9028cd99e71a9e1219a12 --- /dev/null +++ b/test/language/generators/generator.declareMethod.bodySuperProperty.js @@ -0,0 +1,16 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + GeneratorMethod can reference SuperProperty in body +es6id: 14.4.1 +author: Sam Mikes +description: GeneratorMethod body uses SuperProperty (allowed) +---*/ + +var obj = { + *foo(a) { + yield super.x; + } +}; diff --git a/test/language/generators/generator.declareMethod.js b/test/language/generators/generator.declareMethod.js new file mode 100644 index 0000000000000000000000000000000000000000..e7ded64c782235d65894e835e83cacdce8efe3b5 --- /dev/null +++ b/test/language/generators/generator.declareMethod.js @@ -0,0 +1,19 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + Generator can be declared with GeneratorMethod syntax +es6id: 14.4 +author: Sam Mikes +description: can declare generator methods +---*/ + +var obj = { + *foo(a) { yield a+1; return; } +}; + +var g = obj.foo(3); + +assert.sameValue(g.next().value, 4); +assert.sameValue(g.next().done, true); diff --git a/test/language/generators/generator.declareMethod.shadow-parameter-const.js b/test/language/generators/generator.declareMethod.shadow-parameter-const.js new file mode 100644 index 0000000000000000000000000000000000000000..1fbd3e6985847e6118f0241662f0e462c0075010 --- /dev/null +++ b/test/language/generators/generator.declareMethod.shadow-parameter-const.js @@ -0,0 +1,18 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + GeneratorMethod early SyntaxError when lexical declaration + inside generator shadows parameter name +es6id: 14.4.1 +author: Sam Mikes +description: GeneratorMethod error with lexical shadowing +negative: SyntaxError +---*/ + +var obj = { + *foo(a) { + const a = 3; + } +}; diff --git a/test/language/generators/generator.declareMethod.shadow-parameter-let.js b/test/language/generators/generator.declareMethod.shadow-parameter-let.js new file mode 100644 index 0000000000000000000000000000000000000000..e0b9fabf95e52a686420b66b2f15f27a5d8ebf86 --- /dev/null +++ b/test/language/generators/generator.declareMethod.shadow-parameter-let.js @@ -0,0 +1,18 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + GeneratorMethod early SyntaxError when lexical declaration + inside generator shadows parameter name +es6id: 14.4.1 +author: Sam Mikes +description: GeneratorMethod error with lexical shadowing +negative: SyntaxError +---*/ + +var obj = { + *foo(a) { + let a = 3; + } +}; diff --git a/test/language/generators/generator.expression.implicit-name.js b/test/language/generators/generator.expression.implicit-name.js new file mode 100644 index 0000000000000000000000000000000000000000..3ad237729123c4f5c668d0673b6ea22988a82c50 --- /dev/null +++ b/test/language/generators/generator.expression.implicit-name.js @@ -0,0 +1,19 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + Generator can be declared with GeneratorExpression syntax +es6id: 14.4 +author: Sam Mikes +description: can create generator function expressions (no name) +---*/ + +var f = function *(a) { yield a+1; return; }; + +assert.sameValue(f.name, 'f'); + +var g = f(3); + +assert.sameValue(g.next().value, 4); +assert.sameValue(g.next().done, true); diff --git a/test/language/generators/generator.expression.name.js b/test/language/generators/generator.expression.name.js new file mode 100644 index 0000000000000000000000000000000000000000..b732a6f5dd5d214b5b440dc867e94dcba00b1580 --- /dev/null +++ b/test/language/generators/generator.expression.name.js @@ -0,0 +1,19 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + Generator can be declared with GeneratorExpression syntax +es6id: 14.4 +author: Sam Mikes +description: can create generator function expressions (with name) +---*/ + +var f = function *foo(a) { yield a+1; return; }; + +assert.sameValue(f.name, 'foo'); + +var g = f(3); + +assert.sameValue(g.next().value, 4); +assert.sameValue(g.next().done, true); diff --git a/test/language/generators/generator.expression.no-name.js b/test/language/generators/generator.expression.no-name.js new file mode 100644 index 0000000000000000000000000000000000000000..c219aba95f933f2970c1e184e55c357aeafcb05c --- /dev/null +++ b/test/language/generators/generator.expression.no-name.js @@ -0,0 +1,20 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: > + Generator can be declared with GeneratorExpression syntax +es6id: 14.4 +author: Sam Mikes +description: can create generator function expressions (no name) +---*/ + +var a = [function *(a) { yield a+1; return; }]; +var f = a[0]; + +assert.sameValue(f.name, ''); + +var g = f(3); + +assert.sameValue(g.next().value, 4); +assert.sameValue(g.next().done, true);