From 04f468541ef80450eeb521a026f449a419945385 Mon Sep 17 00:00:00 2001 From: smikes <smikes@cubane.com> Date: Tue, 17 Feb 2015 18:26:24 -0700 Subject: [PATCH] batch of generator tests fix info, desc remove dubious test correct no-name test, add implicit-name test --- .../generators/generator.declaration.js | 17 ++++++++++++++++ .../generator.declareMethod.argSuperCall.js | 17 ++++++++++++++++ ...enerator.declareMethod.argSuperProperty.js | 17 ++++++++++++++++ .../generator.declareMethod.bodySuperCall.js | 18 +++++++++++++++++ ...nerator.declareMethod.bodySuperProperty.js | 16 +++++++++++++++ .../generators/generator.declareMethod.js | 19 ++++++++++++++++++ ...or.declareMethod.shadow-parameter-const.js | 18 +++++++++++++++++ ...ator.declareMethod.shadow-parameter-let.js | 18 +++++++++++++++++ .../generator.expression.implicit-name.js | 19 ++++++++++++++++++ .../generators/generator.expression.name.js | 19 ++++++++++++++++++ .../generator.expression.no-name.js | 20 +++++++++++++++++++ 11 files changed, 198 insertions(+) create mode 100644 test/language/generators/generator.declaration.js create mode 100644 test/language/generators/generator.declareMethod.argSuperCall.js create mode 100644 test/language/generators/generator.declareMethod.argSuperProperty.js create mode 100644 test/language/generators/generator.declareMethod.bodySuperCall.js create mode 100644 test/language/generators/generator.declareMethod.bodySuperProperty.js create mode 100644 test/language/generators/generator.declareMethod.js create mode 100644 test/language/generators/generator.declareMethod.shadow-parameter-const.js create mode 100644 test/language/generators/generator.declareMethod.shadow-parameter-let.js create mode 100644 test/language/generators/generator.expression.implicit-name.js create mode 100644 test/language/generators/generator.expression.name.js create mode 100644 test/language/generators/generator.expression.no-name.js diff --git a/test/language/generators/generator.declaration.js b/test/language/generators/generator.declaration.js new file mode 100644 index 0000000000..0f8aada0de --- /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 0000000000..199cf9b79d --- /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 0000000000..8f0d3b4fe4 --- /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 0000000000..8d95934936 --- /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 0000000000..adfb42ec8b --- /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 0000000000..e7ded64c78 --- /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 0000000000..1fbd3e6985 --- /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 0000000000..e0b9fabf95 --- /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 0000000000..3ad2377291 --- /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 0000000000..b732a6f5dd --- /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 0000000000..c219aba95f --- /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); -- GitLab