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);