diff --git a/test/language/expressions/object/method-definition/generator-invoke-ctor.js b/test/language/expressions/object/method-definition/generator-invoke-ctor.js
new file mode 100644
index 0000000000000000000000000000000000000000..6bbe5d855b4f156d28ed8bf5e5792f285b6c8f36
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-invoke-ctor.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods may be used as constructors.
+es6id: 14.4.13
+features: [generators]
+---*/
+
+var method = { *method() {} }.method;
+
+var instance = new method();
+
+assert.sameValue(instance instanceof method, true);
diff --git a/test/language/expressions/object/method-definition/generator-invoke-fn-no-strict.js b/test/language/expressions/object/method-definition/generator-invoke-fn-no-strict.js
new file mode 100644
index 0000000000000000000000000000000000000000..cfe10af7d23e8fe298df357f7b36e88ffecf4093
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-invoke-fn-no-strict.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    In the absence of the "use strict" directive, generator functions declared
+    as methods obey "global" ThisMode semantics.
+es6id: 14.4.13
+flags: [noStrict]
+features: [generators]
+---*/
+
+var global = (function() { return this; }());
+var thisValue = null;
+var method = {
+  *method() {
+    thisValue = this;
+  }
+}.method;
+
+method().next();
+
+assert.sameValue(thisValue, global);
diff --git a/test/language/expressions/object/method-definition/generator-invoke-fn-strict.js b/test/language/expressions/object/method-definition/generator-invoke-fn-strict.js
new file mode 100644
index 0000000000000000000000000000000000000000..2eb1841490155a9bcf0bbea4baf7096c5ad29139
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-invoke-fn-strict.js
@@ -0,0 +1,23 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    In the presence of the "use strict" directive, generator functions declared
+    as methods obey "strict" ThisMode semantics.
+es6id: 14.4.13
+flags: [noStrict]
+features: [generators]
+---*/
+
+var thisValue = null;
+var method = {
+  *method() {
+    'use strict';
+    thisValue = this;
+  }
+}.method;
+
+method().next();
+
+assert.sameValue(thisValue, undefined);
diff --git a/test/language/expressions/object/method-definition/generator-length.js b/test/language/expressions/object/method-definition/generator-length.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ca0321b434b88a65375df5ef004c30f9b5d955d
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-length.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods have a `length` property that
+    describes the number of formal parameters.
+es6id: 14.4.13
+includes: [propertyHelper.js]
+features: [generators]
+---*/
+
+var method = { *method(a, b, c) {} }.method;
+
+assert.sameValue(method.length, 3);
+verifyNotEnumerable(method, 'length');
+verifyNotWritable(method, 'length');
+verifyConfigurable(method, 'length');
diff --git a/test/language/expressions/object/method-definition/generator-name-prop-string.js b/test/language/expressions/object/method-definition/generator-name-prop-string.js
new file mode 100644
index 0000000000000000000000000000000000000000..37d7c25c7277443dfaf4682f6cdb031b815dd1c9
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-name-prop-string.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods are assigned a `name` property
+    according to the string value of their property name.
+es6id: 14.4.13
+includes: [propertyHelper.js]
+features: [generators]
+---*/
+
+var method = { *method() {} }.method;
+
+assert.sameValue(method.name, 'method');
+verifyNotEnumerable(method, 'name');
+verifyNotWritable(method, 'name');
+verifyConfigurable(method, 'name');
diff --git a/test/language/expressions/object/method-definition/generator-name-prop-symbol.js b/test/language/expressions/object/method-definition/generator-name-prop-symbol.js
new file mode 100644
index 0000000000000000000000000000000000000000..df23c9c80c8d3c365eb92740da5cb4a3f7b2e514
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-name-prop-symbol.js
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods are assigned a `name` property
+    according to the string value of their property name.
+es6id: 14.4.13
+includes: [propertyHelper.js]
+features: [Symbol, generators]
+---*/
+
+var name = Symbol('method');
+var method = { *[name]() {} }[name];
+
+assert.sameValue(method.name, '[method]');
+verifyNotEnumerable(method, 'name');
+verifyNotWritable(method, 'name');
+verifyConfigurable(method, 'name');
diff --git a/test/language/expressions/object/method-definition/generator-param-id-yield.js b/test/language/expressions/object/method-definition/generator-param-id-yield.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac5e6786980a1d09d78e0ba56a02e2f4ac69a692
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-param-id-yield.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The BindingIdentifier of a SingleNameBinding witihn the FormalParameters of
+    a GeneratorMethod may not be the `yield` keyword.
+es6id: 14.4
+features: [generators]
+flags: [noStrict]
+negative: SyntaxError
+---*/
+
+({
+  *method(yield) {}
+});
diff --git a/test/language/expressions/object/method-definition/generator-param-init-yield.js b/test/language/expressions/object/method-definition/generator-param-init-yield.js
new file mode 100644
index 0000000000000000000000000000000000000000..d09bc6d88dcb9cd1aab96e1bb72280205f7f3087
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-param-init-yield.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The Initializer of a SingleNameBinding witihn the FormalParameters of a
+    GeneratorMethod may not contain the `yield` keyword.
+es6id: 14.4
+features: [generators]
+flags: [noStrict]
+negative: SyntaxError
+---*/
+
+(function*() {
+  ({
+    *method(x = yield) {}
+  });
+});
diff --git a/test/language/expressions/object/method-definition/generator-shadow-parameter-const.js b/test/language/expressions/object/method-definition/generator-param-redecl-const.js
similarity index 100%
rename from test/language/expressions/object/method-definition/generator-shadow-parameter-const.js
rename to test/language/expressions/object/method-definition/generator-param-redecl-const.js
diff --git a/test/language/expressions/object/method-definition/generator-shadow-parameter-let.js b/test/language/expressions/object/method-definition/generator-param-redecl-let.js
similarity index 100%
rename from test/language/expressions/object/method-definition/generator-shadow-parameter-let.js
rename to test/language/expressions/object/method-definition/generator-param-redecl-let.js
diff --git a/test/language/expressions/object/method-definition/generator-params.js b/test/language/expressions/object/method-definition/generator-params.js
new file mode 100644
index 0000000000000000000000000000000000000000..ca6f69469198cf895d6745a792320b00c0bc30e7
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-params.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods honor their declared formal
+    parameters.
+es6id: 14.4.13
+features: [generators]
+---*/
+
+var value1 = {};
+var value2 = {};
+var value3 = {};
+var arg1, arg2, arg3;
+var obj = {
+  *method(a, b, c) {
+    arg1 = a;
+    arg2 = b;
+    arg3 = c;
+  }
+};
+
+obj.method(value1, value2, value3).next();
+
+assert.sameValue(arg1, value1);
+assert.sameValue(arg2, value2);
+assert.sameValue(arg3, value3);
diff --git a/test/language/expressions/object/method-definition/generator-prop-name-eval-error.js b/test/language/expressions/object/method-definition/generator-prop-name-eval-error.js
new file mode 100644
index 0000000000000000000000000000000000000000..87c139739157fbf0f62d81e4cfcdd41f4b95dfd3
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-prop-name-eval-error.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Errors thrown during method definition are forwarded to the runtime.
+es6id: 14.4.13
+features: [generators]
+---*/
+
+assert.throws(Test262Error, function() {
+  ({
+    *[(function() { throw new Test262Error(); }())]() {}
+  });
+});
diff --git a/test/language/expressions/object/method-definition/generator-prop-name-yield-expr.js b/test/language/expressions/object/method-definition/generator-prop-name-yield-expr.js
new file mode 100644
index 0000000000000000000000000000000000000000..2ccf6b43f134274bd959113e7d78a8c6f8629e94
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-prop-name-yield-expr.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    When the `yield` keyword occurs within the PropertyName of a
+    GeneratorMethod within a generator function, it behaves as a
+    YieldExpression.
+es6id: 14.4
+features: [generators]
+flags: [noStrict]
+---*/
+
+var obj = null;
+var yield = 'propNameViaIdentifier';
+var iter = (function*() {
+  obj = {
+    *[yield]() {}
+  };
+})();
+
+iter.next();
+
+assert.sameValue(obj, null);
+
+iter.next('propNameViaExpression');
+
+assert.sameValue(
+  Object.hasOwnProperty.call(obj, 'propNameViaIdentifier'), false
+);
+assert.sameValue(
+  Object.hasOwnProperty.call(obj, 'propNameViaExpression'), true
+);
diff --git a/test/language/expressions/object/method-definition/generator-prop-name-yield-id.js b/test/language/expressions/object/method-definition/generator-prop-name-yield-id.js
new file mode 100644
index 0000000000000000000000000000000000000000..a844383dae62a839dd8b16e6204614406690830e
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-prop-name-yield-id.js
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    When the `yield` keyword occurs within the PropertyName of a
+    GeneratorMethod outside of a generator function, it behaves as an
+    Identifier.
+es6id: 14.4
+features: [generators]
+flags: [noStrict]
+---*/
+
+var yield = 'propName';
+var obj = {
+  *[yield]() {}
+};
+
+assert.sameValue(Object.hasOwnProperty.call(obj, 'propName'), true);
diff --git a/test/language/expressions/object/method-definition/generator-property-desc.js b/test/language/expressions/object/method-definition/generator-property-desc.js
new file mode 100644
index 0000000000000000000000000000000000000000..ae4b4310f933e277c3f0eb2afbc98e214cbc13dd
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-property-desc.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods are defined as enumerable,
+    writable, configurable properties on the initialized object.
+es6id: 14.4.13
+includes: [propertyHelper.js]
+features: [generators]
+---*/
+
+var obj = { *method() {} };
+
+verifyEnumerable(obj, 'method');
+verifyWritable(obj, 'method');
+verifyConfigurable(obj, 'method');
diff --git a/test/language/expressions/object/method-definition/generator-prototype-prop.js b/test/language/expressions/object/method-definition/generator-prototype-prop.js
new file mode 100644
index 0000000000000000000000000000000000000000..4eb0c0e437becfb57e470d645b9daf71ba9e8426
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-prototype-prop.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Generator functions declared as methods define a `prototype` property.
+es6id: 14.4.13
+includes: [propertyHelper.js]
+features: [generators]
+---*/
+
+var GeneratorPrototype = Object.getPrototypeOf(function* () {}).prototype;
+var method = { *method() {} }.method;
+
+verifyNotEnumerable(method, 'prototype');
+verifyWritable(method, 'prototype');
+verifyNotConfigurable(method, 'prototype');
+
+assert.sameValue(
+  Object.getPrototypeOf(method.prototype),
+  GeneratorPrototype
+);
diff --git a/test/language/expressions/object/method-definition/generator-prototype.js b/test/language/expressions/object/method-definition/generator-prototype.js
new file mode 100644
index 0000000000000000000000000000000000000000..245a0a199bcfea0228b3a8f33083836bf543907d
--- /dev/null
+++ b/test/language/expressions/object/method-definition/generator-prototype.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The prototype of generator functions declared as methods is the
+    Generator Prototype.
+es6id: 14.4.13
+features: [generators]
+---*/
+
+var obj = { *method() {} };
+assert.sameValue(
+  Object.getPrototypeOf(obj.method),
+  Object.getPrototypeOf(function*() {})
+);
diff --git a/test/language/expressions/object/method-definition/generator-bodySuperCall.js b/test/language/expressions/object/method-definition/generator-super-call-body.js
similarity index 100%
rename from test/language/expressions/object/method-definition/generator-bodySuperCall.js
rename to test/language/expressions/object/method-definition/generator-super-call-body.js
diff --git a/test/language/expressions/object/method-definition/generator-argSuperCall.js b/test/language/expressions/object/method-definition/generator-super-call-param.js
similarity index 100%
rename from test/language/expressions/object/method-definition/generator-argSuperCall.js
rename to test/language/expressions/object/method-definition/generator-super-call-param.js
diff --git a/test/language/expressions/object/method-definition/generator-bodySuperProperty.js b/test/language/expressions/object/method-definition/generator-super-prop-body.js
similarity index 67%
rename from test/language/expressions/object/method-definition/generator-bodySuperProperty.js
rename to test/language/expressions/object/method-definition/generator-super-prop-body.js
index 741fae468ceacdb83c54c21d9c99e8f82add7a93..d4c4a310aaaea4a3d3cf969ae1de5f8b4be85f2a 100644
--- a/test/language/expressions/object/method-definition/generator-bodySuperProperty.js
+++ b/test/language/expressions/object/method-definition/generator-super-prop-body.js
@@ -10,8 +10,14 @@ author: Sam Mikes
 description: GeneratorMethod body uses SuperProperty (allowed)
 ---*/
 
+var obj;
+
 var obj = {
-    *foo(a) {
-        yield super.x;
-    }
+  *foo() {
+    return super.toString;
+  }
 };
+
+obj.toString = null;
+
+assert.sameValue(obj.foo().next().value, Object.prototype.toString);
diff --git a/test/language/expressions/object/method-definition/generator-argSuperProperty.js b/test/language/expressions/object/method-definition/generator-super-prop-param.js
similarity index 70%
rename from test/language/expressions/object/method-definition/generator-argSuperProperty.js
rename to test/language/expressions/object/method-definition/generator-super-prop-param.js
index 5c7a75d45fcc84b232a04ac7d7e75a3aaf26d3cc..19f1c395995142e25cfc12437bad06854cd0dfaf 100644
--- a/test/language/expressions/object/method-definition/generator-argSuperProperty.js
+++ b/test/language/expressions/object/method-definition/generator-super-prop-param.js
@@ -12,7 +12,11 @@ features: [ default-arg, generator, super ]
 ---*/
 
 var obj = {
-    *foo(a = super.x) {
-        yield;
-    }
+  *foo(a = super.toString) {
+    return a;
+  }
 };
+
+obj.toString = null;
+
+assert.sameValue(obj.foo().next().value, Object.prototype.toString);
diff --git a/test/language/expressions/object/method-definition/name-invoke-ctor.js b/test/language/expressions/object/method-definition/name-invoke-ctor.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4b29b086d017d08a7a8d4540b415b6a14e8823a
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-invoke-ctor.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods may not be used as constructors.
+es6id: 14.3.8
+---*/
+
+var obj = { method() {} };
+assert.throws(TypeError, function() {
+  new obj.method();
+});
diff --git a/test/language/expressions/object/method-definition/name-invoke-fn-no-strict.js b/test/language/expressions/object/method-definition/name-invoke-fn-no-strict.js
new file mode 100644
index 0000000000000000000000000000000000000000..a393b0d0519582c5c087ac276f50956e73d01e9a
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-invoke-fn-no-strict.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    In the absence of the "use strict" directive, functions declared as methods
+    obey "global" ThisMode semantics.
+es6id: 14.3.8
+flags: [noStrict]
+---*/
+
+var global = (function() { return this; }());
+var thisValue = null;
+var method = {
+  method() {
+    thisValue = this;
+  }
+}.method;
+
+method();
+
+assert.sameValue(thisValue, global);
diff --git a/test/language/expressions/object/method-definition/name-invoke-fn-strict.js b/test/language/expressions/object/method-definition/name-invoke-fn-strict.js
new file mode 100644
index 0000000000000000000000000000000000000000..94c59b5a956b219c465d2a3c14bca9ce8090ae7e
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-invoke-fn-strict.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    In the presence of the "use strict" directive, functions declared as
+    methods obey "strict" ThisMode semantics.
+es6id: 14.3.8
+flags: [noStrict]
+---*/
+
+var thisValue = null;
+var method = {
+  method() {
+    'use strict';
+    thisValue = this;
+  }
+}.method;
+
+method();
+
+assert.sameValue(thisValue, undefined);
diff --git a/test/language/expressions/object/method-definition/name-length.js b/test/language/expressions/object/method-definition/name-length.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc0178eb6f6a1b27fd1397885c56d60c8c8ed39e
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-length.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods have a `length` property that describes the
+    number of formal parameters.
+es6id: 14.3.8
+includes: [propertyHelper.js]
+---*/
+
+var method = { method(a, b, c) {} }.method;
+
+assert.sameValue(method.length, 3);
+verifyNotEnumerable(method, 'length');
+verifyNotWritable(method, 'length');
+verifyConfigurable(method, 'length');
diff --git a/test/language/expressions/object/method-definition/name-name-prop-string.js b/test/language/expressions/object/method-definition/name-name-prop-string.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a56c27d8c6307dc58bc3595af2c168b5b722835
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-name-prop-string.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods are assigned a `name` property according to
+    the string value of their property name.
+es6id: 14.3.8
+includes: [propertyHelper.js]
+---*/
+
+var method = { method() {} }.method;
+
+assert.sameValue(method.name, 'method');
+verifyNotEnumerable(method, 'name');
+verifyNotWritable(method, 'name');
+verifyConfigurable(method, 'name');
diff --git a/test/language/expressions/object/method-definition/name-name-prop-symbol.js b/test/language/expressions/object/method-definition/name-name-prop-symbol.js
new file mode 100644
index 0000000000000000000000000000000000000000..338bfb21908ddaa5a73ee4c88bfa39269489222e
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-name-prop-symbol.js
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods are assigned a `name` property according to
+    the string value of their property name.
+es6id: 14.3.8
+includes: [propertyHelper.js]
+features: [Symbol]
+---*/
+
+var name = Symbol('method');
+var method = { [name]() {} }[name];
+
+assert.sameValue(method.name, '[method]');
+verifyNotEnumerable(method, 'name');
+verifyNotWritable(method, 'name');
+verifyConfigurable(method, 'name');
diff --git a/test/language/expressions/object/method-definition/name-param-id-yield.js b/test/language/expressions/object/method-definition/name-param-id-yield.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2ed2c273b25bac04b836982ea2b06b3274312be
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-param-id-yield.js
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The BindingIdentifier of a SingleNameBinding witihn the FormalParameters of
+    a non-generator MethodDefinition may be the `yield` keyword.
+es6id: 14.3
+flags: [noStrict]
+---*/
+
+var obj = {
+  method(yield) {
+    return yield;
+  }
+};
+
+
+assert.sameValue(obj.method('arg'), 'arg');
diff --git a/test/language/expressions/object/method-definition/name-param-init-yield.js b/test/language/expressions/object/method-definition/name-param-init-yield.js
new file mode 100644
index 0000000000000000000000000000000000000000..9763575baf6c5e138691adae760e45a1ed5ac509
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-param-init-yield.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    When the `yield` keyword occurs within the Initializer of a
+    SingleNameBinding within the FormalParameters of a non-generator
+    MethodDefinition, it behaves as an Identifier.
+es6id: 14.3
+flags: [noStrict]
+---*/
+
+var yield = 'default';
+var obj = {
+  method(x = yield) {
+    return x;
+  }
+};
+
+
+assert.sameValue(obj.method(), 'default');
diff --git a/test/language/expressions/object/method-definition/name-param-redecl.js b/test/language/expressions/object/method-definition/name-param-redecl.js
new file mode 100644
index 0000000000000000000000000000000000000000..d435a450b59702b5fd37045af1b871730eee7a71
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-param-redecl.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    It is a Syntax Error if any element of the BoundNames of
+    StrictFormalParameters also occurs in the LexicallyDeclaredNames of
+    FunctionBody.
+es6id: 14.3.1
+negative: SyntaxError
+---*/
+
+var obj = {
+  method(param) {
+    let param;
+  }
+};
diff --git a/test/language/expressions/object/method-definition/name-params.js b/test/language/expressions/object/method-definition/name-params.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e6b2a4c13d4029768add0b6e08a0b8f49779f89
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-params.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods honor their declared formal parameters.
+es6id: 14.3.8
+---*/
+
+var value1 = {};
+var value2 = {};
+var value3 = {};
+var arg1, arg2, arg3;
+var obj = {
+  method(a, b, c) {
+    arg1 = a;
+    arg2 = b;
+    arg3 = c;
+  }
+};
+
+obj.method(value1, value2, value3);
+
+assert.sameValue(arg1, value1);
+assert.sameValue(arg2, value2);
+assert.sameValue(arg3, value3);
diff --git a/test/language/expressions/object/method-definition/name-prop-name-eval-error.js b/test/language/expressions/object/method-definition/name-prop-name-eval-error.js
new file mode 100644
index 0000000000000000000000000000000000000000..895e00ddf9ce8a3256815b484f284c5801507002
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-prop-name-eval-error.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Errors thrown during method definition are forwarded to the runtime.
+es6id: 14.3.8
+---*/
+
+assert.throws(Test262Error, function() {
+  ({
+    [(function() { throw new Test262Error(); }())]() {}
+  });
+});
diff --git a/test/language/expressions/object/method-definition/name-prop-name-yield-expr.js b/test/language/expressions/object/method-definition/name-prop-name-yield-expr.js
new file mode 100644
index 0000000000000000000000000000000000000000..85591f3cdc637148f7532b99d1d261c969291014
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-prop-name-yield-expr.js
@@ -0,0 +1,33 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    When the `yield` keyword occurs within the PropertyName of a
+    non-generator MethodDefinition within a generator function, it behaves as a
+    YieldExpression.
+es6id: 14.3
+features: [generators]
+flags: [noStrict]
+---*/
+
+var obj = null;
+var yield = 'propNameViaIdentifier';
+var iter = (function*() {
+  obj = {
+    [yield]() {}
+  };
+})();
+
+iter.next();
+
+assert.sameValue(obj, null);
+
+iter.next('propNameViaExpression');
+
+assert.sameValue(
+  Object.hasOwnProperty.call(obj, 'propNameViaIdentifier'), false
+);
+assert.sameValue(
+  Object.hasOwnProperty.call(obj, 'propNameViaExpression'), true
+);
diff --git a/test/language/expressions/object/method-definition/name-prop-name-yield-id.js b/test/language/expressions/object/method-definition/name-prop-name-yield-id.js
new file mode 100644
index 0000000000000000000000000000000000000000..d511c3b0924f13849c899c316628be947d5fd740
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-prop-name-yield-id.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    When the `yield` keyword occurs within the PropertyName of a
+    non-generator MethodDefinition outside of a generator function, it behaves
+    as an Identifier.
+es6id: 14.3
+flags: [noStrict]
+---*/
+
+var yield = 'propName';
+var obj = {
+  [yield]() {}
+};
+
+assert.sameValue(Object.hasOwnProperty.call(obj, 'propName'), true);
diff --git a/test/language/expressions/object/method-definition/name-property-desc.js b/test/language/expressions/object/method-definition/name-property-desc.js
new file mode 100644
index 0000000000000000000000000000000000000000..d69301b4e26b170f5a4e7a6c889c41a373486ceb
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-property-desc.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods are defined as enumerable, writable,
+    configurable properties on the initialized object.
+es6id: 14.3.8
+includes: [propertyHelper.js]
+---*/
+
+var obj = { method() {} };
+
+verifyEnumerable(obj, 'method');
+verifyWritable(obj, 'method');
+verifyConfigurable(obj, 'method');
diff --git a/test/language/expressions/object/method-definition/name-prototype-prop.js b/test/language/expressions/object/method-definition/name-prototype-prop.js
new file mode 100644
index 0000000000000000000000000000000000000000..fbb862b6b7529c9af32ce5c2f0671bf3e15e953d
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-prototype-prop.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Functions declared as methods do not define a `prototype` property.
+es6id: 14.3.9
+---*/
+
+var method = { method() {} }.method;
+
+assert.sameValue(Object.hasOwnProperty.call(method, 'prototype'), false);
diff --git a/test/language/expressions/object/method-definition/name-prototype.js b/test/language/expressions/object/method-definition/name-prototype.js
new file mode 100644
index 0000000000000000000000000000000000000000..8c55bb146b66dc6b6117d1fc936613796242a8be
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-prototype.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The prototype of functions declared as methods is the Function prototype.
+es6id: 14.3.8
+---*/
+
+var obj = { method() {} };
+assert.sameValue(Object.getPrototypeOf(obj.method), Function.prototype);
diff --git a/test/language/expressions/object/method-definition/name-super-call-body.js b/test/language/expressions/object/method-definition/name-super-call-body.js
new file mode 100644
index 0000000000000000000000000000000000000000..5334201b91487fad0742e062e07319cbc2717a69
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-super-call-body.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+es6id: 12.2.5.1
+negative: SyntaxError
+---*/
+
+({
+  method() {
+    super;
+  }
+});
diff --git a/test/language/expressions/object/method-definition/name-super-call-param.js b/test/language/expressions/object/method-definition/name-super-call-param.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf96e2f4b0de98031855bf6e63704bb82ac9c04c
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-super-call-param.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
+es6id: 12.2.5.1
+negative: SyntaxError
+---*/
+
+({
+  method(param = super) {}
+});
diff --git a/test/language/expressions/object/method-definition/name-super-prop-body.js b/test/language/expressions/object/method-definition/name-super-prop-body.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b15a2aa18196ba2c708a67598baff068639b705
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-super-prop-body.js
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The HomeObject of Functions declared as methods is the Object prototype.
+es6id: 14.3.8
+features: [super]
+---*/
+
+var obj = {
+  method() {
+    return super.toString;
+  }
+};
+
+obj.toString = null;
+
+assert.sameValue(obj.method(), Object.prototype.toString);
diff --git a/test/language/expressions/object/method-definition/name-super-prop-param.js b/test/language/expressions/object/method-definition/name-super-prop-param.js
new file mode 100644
index 0000000000000000000000000000000000000000..8734b8ee2c12bf175941bed43e20b062be48e84d
--- /dev/null
+++ b/test/language/expressions/object/method-definition/name-super-prop-param.js
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    The HomeObject of Functions declared as methods is the Object prototype.
+es6id: 14.3.8
+features: [super]
+---*/
+
+var obj = {
+  method(x = super.toString) {
+    return x;
+  }
+};
+
+obj.toString = null;
+
+assert.sameValue(obj.method(), Object.prototype.toString);