diff options
Diffstat (limited to 'deps/v8/test/mjsunit/es6/generators-runtime.js')
-rw-r--r-- | deps/v8/test/mjsunit/es6/generators-runtime.js | 59 |
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"); |