aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/es6/generators-runtime.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/es6/generators-runtime.js')
-rw-r--r--deps/v8/test/mjsunit/es6/generators-runtime.js59
1 files changed, 47 insertions, 12 deletions
diff --git a/deps/v8/test/mjsunit/es6/generators-runtime.js b/deps/v8/test/mjsunit/es6/generators-runtime.js
index 8fa70b62e0..115c7a4149 100644
--- a/deps/v8/test/mjsunit/es6/generators-runtime.js
+++ b/deps/v8/test/mjsunit/es6/generators-runtime.js
@@ -30,7 +30,7 @@
// See:
// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorfunction-objects
-function f() { }
+function f() { "use strict"; }
function* g() { yield 1; }
var GeneratorFunctionPrototype = Object.getPrototypeOf(g);
var GeneratorFunction = GeneratorFunctionPrototype.constructor;
@@ -51,18 +51,16 @@ function TestGeneratorFunctionInstance() {
var prop = f_own_property_names[i];
var f_desc = Object.getOwnPropertyDescriptor(f, prop);
var g_desc = Object.getOwnPropertyDescriptor(g, prop);
- assertEquals(f_desc.configurable, g_desc.configurable, prop);
- if (prop === 'arguments' || prop === 'caller') {
- // Unlike sloppy functions, which have read-only data arguments and caller
- // properties, sloppy generators have a poison pill implemented via
- // accessors
- assertFalse('writable' in g_desc, prop);
- assertTrue(g_desc.get instanceof Function, prop);
- assertEquals(g_desc.get, g_desc.set, prop);
+ if (prop === "prototype") {
+ // ES6 draft 03-17-2015 section 25.2.2.2
+ assertFalse(g_desc.writable, prop);
+ assertFalse(g_desc.enumerable, prop);
+ assertFalse(g_desc.configurable, prop);
} else {
+ assertEquals(f_desc.configurable, g_desc.configurable, prop);
assertEquals(f_desc.writable, g_desc.writable, prop);
+ assertEquals(f_desc.enumerable, g_desc.enumerable, prop);
}
- assertEquals(f_desc.enumerable, g_desc.enumerable, prop);
}
}
TestGeneratorFunctionInstance();
@@ -78,6 +76,23 @@ function TestGeneratorFunctionPrototype() {
Object.getPrototypeOf(GeneratorFunctionPrototype));
assertSame(GeneratorFunctionPrototype,
Object.getPrototypeOf(function* () {}));
+ assertSame("object", typeof GeneratorFunctionPrototype);
+
+ var constructor_desc = Object.getOwnPropertyDescriptor(
+ GeneratorFunctionPrototype, "constructor");
+ assertTrue(constructor_desc !== undefined);
+ assertSame(GeneratorFunction, constructor_desc.value);
+ assertFalse(constructor_desc.writable);
+ assertFalse(constructor_desc.enumerable);
+ assertTrue(constructor_desc.configurable);
+
+ var prototype_desc = Object.getOwnPropertyDescriptor(
+ GeneratorFunctionPrototype, "prototype");
+ assertTrue(prototype_desc !== undefined);
+ assertSame(GeneratorObjectPrototype, prototype_desc.value);
+ assertFalse(prototype_desc.writable);
+ assertFalse(prototype_desc.enumerable);
+ assertTrue(prototype_desc.configurable);
}
TestGeneratorFunctionPrototype();
@@ -99,7 +114,28 @@ function TestGeneratorObjectPrototype() {
assertArrayEquals(expected_property_names, found_property_names);
- iterator_desc = Object.getOwnPropertyDescriptor(GeneratorObjectPrototype,
+ var constructor_desc = Object.getOwnPropertyDescriptor(
+ GeneratorObjectPrototype, "constructor");
+ assertTrue(constructor_desc !== undefined);
+ assertFalse(constructor_desc.writable);
+ assertFalse(constructor_desc.enumerable);
+ assertTrue(constructor_desc.configurable);
+
+ var next_desc = Object.getOwnPropertyDescriptor(GeneratorObjectPrototype,
+ "next");
+ assertTrue(next_desc !== undefined);
+ assertTrue(next_desc.writable);
+ assertFalse(next_desc.enumerable);
+ assertTrue(next_desc.configurable);
+
+ var throw_desc = Object.getOwnPropertyDescriptor(GeneratorObjectPrototype,
+ "throw");
+ assertTrue(throw_desc !== undefined);
+ assertTrue(throw_desc.writable);
+ assertFalse(throw_desc.enumerable);
+ assertTrue(throw_desc.configurable);
+
+ var iterator_desc = Object.getOwnPropertyDescriptor(GeneratorObjectPrototype,
Symbol.iterator);
assertTrue(iterator_desc !== undefined);
assertFalse(iterator_desc.writable);
@@ -136,7 +172,6 @@ TestGeneratorFunction();
function TestPerGeneratorPrototype() {
assertTrue((function*(){}).prototype !== (function*(){}).prototype);
assertTrue((function*(){}).prototype !== g.prototype);
- assertTrue(g.prototype instanceof GeneratorFunctionPrototype);
assertSame(GeneratorObjectPrototype, Object.getPrototypeOf(g.prototype));
assertTrue(!(g.prototype instanceof Function));
assertSame(typeof (g.prototype), "object");