mirror of https://github.com/tc39/test262.git
async-iteration: add tests for AsyncGenerationFunction
This commit is contained in:
parent
a19993e269
commit
510d6b7f44
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-properties-of-asyncgeneratorfunction
|
||||||
|
description: Object extensibility
|
||||||
|
info: |
|
||||||
|
The value of the [[Extensible]] internal slot of the AsyncGeneratorFunction
|
||||||
|
constructor is true.
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
assert(Object.isExtensible(AsyncGeneratorFunction));
|
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-properties-of-asyncgeneratorfunction
|
||||||
|
description: >
|
||||||
|
AsyncGenerator function instances are correctly reported as instances of the
|
||||||
|
AsyncGeneratorFunction intrinsic.
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
async function* agDecl() {}
|
||||||
|
var agExpr = async function* () {};
|
||||||
|
|
||||||
|
assert(
|
||||||
|
agDecl instanceof AsyncGeneratorFunction,
|
||||||
|
'AsyncGenerators created via AsyncGeneratorDeclaration syntax are proper instances of AsyncGeneratorFunction'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
agExpr instanceof AsyncGeneratorFunction,
|
||||||
|
'AsyncGenerators created via AsyncGeneratorExpression syntax are proper instances of AsyncGeneratorFunction'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
new AsyncGeneratorFunction() instanceof AsyncGeneratorFunction,
|
||||||
|
'AsyncGenerators created via constructor invocation of AsyncGeneratorFunction are proper instances of AsyncGeneratorFunction'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert(
|
||||||
|
AsyncGeneratorFunction() instanceof AsyncGeneratorFunction,
|
||||||
|
'AsyncGenerators created via function invocation of AsyncGeneratorFunction are proper instances of AsyncGeneratorFunction'
|
||||||
|
);
|
|
@ -0,0 +1,42 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: Definition of instance `length` property
|
||||||
|
info: |
|
||||||
|
AsyncGeneratorFunction ( p1, p2, … , pn, body )
|
||||||
|
...
|
||||||
|
3. Return CreateDynamicFunction(C, NewTarget, "async generator", args).
|
||||||
|
|
||||||
|
Runtime Semantics: CreateDynamicFunction
|
||||||
|
...
|
||||||
|
29. If kind is "async" or "async generator", then
|
||||||
|
a. If parameters Contains AwaitExpression is true, throw a SyntaxError
|
||||||
|
exception.
|
||||||
|
features: [async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
// AwaitExpression is permitted in function body.
|
||||||
|
AsyncGeneratorFunction('x = await 42');
|
||||||
|
|
||||||
|
assert.throws(SyntaxError, function() {
|
||||||
|
AsyncGeneratorFunction('x = await 42', '');
|
||||||
|
}, 'AwaitExpression not permitted in parameters');
|
||||||
|
|
||||||
|
var withinAsyncGenerator = async function*() {
|
||||||
|
AsyncGeneratorFunction('x = await 42', '');
|
||||||
|
};
|
||||||
|
|
||||||
|
withinAsyncGenerator().next().then(
|
||||||
|
function () {
|
||||||
|
throw new Test262Error("AwaitExpression not permitted when calling context is a async generator");
|
||||||
|
},
|
||||||
|
function (e) {
|
||||||
|
if (!(e instanceof SyntaxError)) {
|
||||||
|
throw new Test262Error("Expected SyntaxError but got " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
).then($DONE, $DONE);
|
|
@ -0,0 +1,31 @@
|
||||||
|
// Copyright 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: The instance created by AsyncGeneratorFunction is not a constructor
|
||||||
|
info: |
|
||||||
|
AsyncGeneratorFunction ( p1, p2, … , pn, body )
|
||||||
|
...
|
||||||
|
3. Return ? CreateDynamicFunction(C, NewTarget, "async generator", args).
|
||||||
|
|
||||||
|
Runtime Semantics: CreateDynamicFunction( constructor, newTarget, kind, args )
|
||||||
|
...
|
||||||
|
32. Let F be FunctionAllocate(proto, strict, kind).
|
||||||
|
...
|
||||||
|
|
||||||
|
FunctionAllocate ( functionPrototype, strict, functionKind )
|
||||||
|
// [[Construct]] and [[ConstructKind]] are not set for functionKind="async generators"
|
||||||
|
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var instance = AsyncGeneratorFunction();
|
||||||
|
|
||||||
|
assert.throws(TypeError, function() {
|
||||||
|
new instance();
|
||||||
|
})
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: Definition of instance `length` property
|
||||||
|
info: |
|
||||||
|
AsyncGeneratorFunction ( p1, p2, … , pn, body )
|
||||||
|
...
|
||||||
|
3. Return CreateDynamicFunction(C, NewTarget, "async generator", args).
|
||||||
|
|
||||||
|
Runtime Semantics: CreateDynamicFunction
|
||||||
|
...
|
||||||
|
// the parameter "args" is sliced into "parameters" and "body"
|
||||||
|
26. Perform FunctionInitialize(F, Normal, parameters, body, scope).
|
||||||
|
...
|
||||||
|
|
||||||
|
FunctionInitialize
|
||||||
|
...
|
||||||
|
2. Let len be the ExpectedArgumentCount of ParameterList.
|
||||||
|
3. Perform ! DefinePropertyOrThrow(F, "length",
|
||||||
|
PropertyDescriptor{[[Value]]: len, [[Writable]]: false, [[Enumerable]]:
|
||||||
|
false, [[Configurable]]: true}).
|
||||||
|
...
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var instance = AsyncGeneratorFunction()
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunction(), "length", {
|
||||||
|
value: 0,
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.sameValue(AsyncGeneratorFunction('').length, 0, "test 1");
|
||||||
|
assert.sameValue(AsyncGeneratorFunction('x').length, 0, "test 2");
|
||||||
|
assert.sameValue(AsyncGeneratorFunction('x', '').length, 1, "test 3");
|
||||||
|
assert.sameValue(AsyncGeneratorFunction('x', 'y', '').length, 2, "test 4");
|
||||||
|
assert.sameValue(AsyncGeneratorFunction('x, y', '').length, 2, "test 5");
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: Assignment of function `name` attribute
|
||||||
|
info: |
|
||||||
|
AsyncGeneratorFunction ( p1, p2, … , pn, body )
|
||||||
|
...
|
||||||
|
3. Return CreateDynamicFunction(C, NewTarget, "async generator", args).
|
||||||
|
|
||||||
|
RuntimeSemantics: CreateDynamicFunction(constructor, newTarget, kind, args)
|
||||||
|
...
|
||||||
|
29. Perform SetFunctionName(F, "anonymous").
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var instance = AsyncGeneratorFunction()
|
||||||
|
|
||||||
|
verifyProperty(instance, "name", {
|
||||||
|
value: "anonymous",
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
|
@ -0,0 +1,37 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: Definition of instance `prototype` property
|
||||||
|
info: |
|
||||||
|
AsyncGeneratorFunction ( p1, p2, … , pn, body )
|
||||||
|
...
|
||||||
|
3. Return CreateDynamicFunction(C, NewTarget, "async generator", args).
|
||||||
|
|
||||||
|
Runtime Semantics: CreateDynamicFunction
|
||||||
|
...
|
||||||
|
37. Else if kind is "async generator", then
|
||||||
|
a. Let prototype be ObjectCreate(%AsyncGeneratorPrototype%).
|
||||||
|
b. Perform DefinePropertyOrThrow(F, "prototype",
|
||||||
|
PropertyDescriptor{[[Value]]: prototype, [[Writable]]: true,
|
||||||
|
[[Enumerable]]: false, [[Configurable]]: false}).
|
||||||
|
...
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var instance = AsyncGeneratorFunction();
|
||||||
|
|
||||||
|
assert.sameValue(typeof instance.prototype, 'object');
|
||||||
|
assert.sameValue(
|
||||||
|
Object.getPrototypeOf(instance.prototype),
|
||||||
|
Object.getPrototypeOf(instance).prototype
|
||||||
|
);
|
||||||
|
|
||||||
|
verifyProperty(instance, "prototype", {
|
||||||
|
enumerable: false,
|
||||||
|
writable: true,
|
||||||
|
configurable: false,
|
||||||
|
});
|
|
@ -0,0 +1,42 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: Definition of instance `length` property
|
||||||
|
info: |
|
||||||
|
AsyncGeneratorFunction ( p1, p2, … , pn, body )
|
||||||
|
...
|
||||||
|
3. Return CreateDynamicFunction(C, NewTarget, "async generator", args).
|
||||||
|
|
||||||
|
Runtime Semantics: CreateDynamicFunction
|
||||||
|
...
|
||||||
|
28. If kind is "generator" or "async generator", then
|
||||||
|
a. If parameters Contains YieldExpression is true, throw a SyntaxError
|
||||||
|
exception.
|
||||||
|
features: [async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
// YieldExpression is permitted in function body.
|
||||||
|
AsyncGeneratorFunction('x = yield');
|
||||||
|
|
||||||
|
assert.throws(SyntaxError, function() {
|
||||||
|
AsyncGeneratorFunction('x = yield', '');
|
||||||
|
}, 'YieldExpression not permitted generally');
|
||||||
|
|
||||||
|
var withinAsyncGenerator = async function*() {
|
||||||
|
AsyncGeneratorFunction('x = yield', '');
|
||||||
|
};
|
||||||
|
|
||||||
|
withinAsyncGenerator().next().then(
|
||||||
|
function () {
|
||||||
|
throw new Test262Error("YieldExpression not permitted when calling context is a async generator");
|
||||||
|
},
|
||||||
|
function (e) {
|
||||||
|
if (!(e instanceof SyntaxError)) {
|
||||||
|
throw new Test262Error("Expected SyntaxError but got " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
).then($DONE, $DONE);
|
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: >
|
||||||
|
When invoked via the constructor invocation pattern without arguments, the
|
||||||
|
GeneratorFunction intrinsic returns a valid async generator with an empty body.
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var g = new AsyncGeneratorFunction();
|
||||||
|
var iter = g();
|
||||||
|
|
||||||
|
iter.next().then(function(result) {
|
||||||
|
assert.sameValue(result.value, undefined, 'Result `value`');
|
||||||
|
assert.sameValue(result.done, true, 'Result `done` flag');
|
||||||
|
}).then($DONE, $DONE)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: >
|
||||||
|
When invoked via the function invocation pattern with multiple arguments,
|
||||||
|
the AsyncGeneratorFunction intrinsic creates a valid generator whose body is the
|
||||||
|
last argument evaluated as source code and whose formal parameters are
|
||||||
|
defined by the preceeding arguments.
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var g = AsyncGeneratorFunction('x', 'y', 'yield x + y;');
|
||||||
|
var iter = g(2, 3);
|
||||||
|
|
||||||
|
iter.next().then(function(result) {
|
||||||
|
assert.sameValue(result.value, 5, 'First result `value`');
|
||||||
|
assert.sameValue(result.done, false, 'First result `done` flag');
|
||||||
|
}).then(undefined, $DONE)
|
||||||
|
|
||||||
|
iter.next().then(function(result) {
|
||||||
|
assert.sameValue(result.value, undefined, 'Final result `value`');
|
||||||
|
assert.sameValue(result.done, true, 'Final result `done` flag');
|
||||||
|
}).then($DONE, $DONE)
|
|
@ -0,0 +1,19 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: >
|
||||||
|
When invoked via the function invocation pattern without arguments, the
|
||||||
|
AsyncGeneratorFunction intrinsic returns a valid generator with an empty body.
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var g = AsyncGeneratorFunction();
|
||||||
|
var iter = g();
|
||||||
|
|
||||||
|
iter.next().then(function(result) {
|
||||||
|
assert.sameValue(result.value, undefined, 'Result `value`');
|
||||||
|
assert.sameValue(result.done, true, 'Result `done` flag');
|
||||||
|
}).then($DONE, $DONE)
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction
|
||||||
|
description: >
|
||||||
|
When invoked via the function invocation pattern with a single argument,
|
||||||
|
the AsyncGeneratorFunction intrinsic creates a valid async generator whose body is the
|
||||||
|
first argument evaluated as source code.
|
||||||
|
features: [async-iteration]
|
||||||
|
flags: [async]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
var g = AsyncGeneratorFunction('yield 1;');
|
||||||
|
var iter = g();
|
||||||
|
var result;
|
||||||
|
|
||||||
|
|
||||||
|
iter.next().then(function(result) {
|
||||||
|
assert.sameValue(result.value, 1, 'First result `value`');
|
||||||
|
assert.sameValue(result.done, false, 'First result `done` flag');
|
||||||
|
}).then(undefined, $DONE)
|
||||||
|
|
||||||
|
iter.next().then(function(result) {
|
||||||
|
assert.sameValue(result.value, undefined, 'Final result `value`');
|
||||||
|
assert.sameValue(result.done, true, 'Final result `done` flag');
|
||||||
|
}).then($DONE, $DONE)
|
|
@ -0,0 +1,19 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction-length
|
||||||
|
description: >
|
||||||
|
This is a data property with a value of 1. This property has the attributes
|
||||||
|
{ [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }.
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunction, "length", {
|
||||||
|
value: 1,
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
|
@ -0,0 +1,29 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-properties-of-asyncgeneratorfunction
|
||||||
|
description: Function "name" property
|
||||||
|
info: |
|
||||||
|
The value of the name property of the AsyncGeneratorFunction
|
||||||
|
is "AsyncGeneratorFunction".
|
||||||
|
|
||||||
|
17 ECMAScript Standard Built-in Objects:
|
||||||
|
Every built-in Function object, including constructors, that is not
|
||||||
|
identified as an anonymous function has a name property whose value is a
|
||||||
|
String.
|
||||||
|
|
||||||
|
Unless otherwise specified, the name property of a built-in Function object,
|
||||||
|
if it exists, has the attributes { [[Writable]]: false, [[Enumerable]]:
|
||||||
|
false, [[Configurable]]: true }.
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunction, "name", {
|
||||||
|
value: "AsyncGeneratorFunction",
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
|
@ -0,0 +1,25 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction-prototype-tostringtag
|
||||||
|
description: >
|
||||||
|
`Symbol.toStringTag` property descriptor
|
||||||
|
info: |
|
||||||
|
The initial value of the @@toStringTag property is the String
|
||||||
|
value "AsyncGeneratorFunction".
|
||||||
|
|
||||||
|
This property has the attributes { [[Writable]]: false,
|
||||||
|
[[Enumerable]]: false, [[Configurable]]: true }.
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration, Symbol.toStringTag]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunctionPrototype = Object.getPrototypeOf(async function*() {});
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunctionPrototype, Symbol.toStringTag, {
|
||||||
|
value: 'AsyncGeneratorFunction',
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
|
@ -0,0 +1,25 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction-prototype-constructor
|
||||||
|
description: >
|
||||||
|
`constructor` property of the AsyncGeneratorFunction.prototype object
|
||||||
|
info: |
|
||||||
|
The initial value of AsyncGeneratorFunction.prototype.constructor is the intrinsic
|
||||||
|
object %AsyncGeneratorFunction%.
|
||||||
|
|
||||||
|
This property has the attributes { [[Writable]]: false, [[Enumerable]]:
|
||||||
|
false, [[Configurable]]: true }.
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
assert.sameValue(AsyncGeneratorFunction.prototype.constructor, AsyncGeneratorFunction);
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunction.prototype, "constructor", {
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
|
@ -0,0 +1,14 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-properties-of-asyncgenerator-prototype
|
||||||
|
description: Object extensibility
|
||||||
|
info: |
|
||||||
|
The initial value of the [[Extensible]] internal slot of the
|
||||||
|
AsyncGeneratorFunction prototype object is true.
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
assert(Object.isExtensible(AsyncGeneratorFunction.prototype));
|
|
@ -0,0 +1,19 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
description: AsyncGeneratorFunction.prototype property descriptor
|
||||||
|
esid: sec-asyncgeneratorfunction-prototype
|
||||||
|
info: |
|
||||||
|
This property has the attributes { [[Writable]]: false, [[Enumerable]]:
|
||||||
|
false, [[Configurable]]: false }.
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunction = Object.getPrototypeOf(async function* () {}).constructor;
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunction, "prototype", {
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: false,
|
||||||
|
});
|
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (C) 2018 Valerie Young. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-asyncgeneratorfunction-prototype-prototype
|
||||||
|
description: >
|
||||||
|
The value of AsyncGeneratorFunction.prototype.prototype is the
|
||||||
|
%AsyncGeneratorPrototype% intrinsic object.
|
||||||
|
|
||||||
|
This property has the attributes { [[Writable]]: false,
|
||||||
|
[[Enumerable]]: false, [[Configurable]]: true }.
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
features: [async-iteration]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var AsyncGeneratorFunctionPrototype = Object.getPrototypeOf(async function*() {});
|
||||||
|
|
||||||
|
assert.sameValue(
|
||||||
|
AsyncGeneratorFunctionPrototype.prototype,
|
||||||
|
Object.getPrototypeOf(async function*() {}.prototype)
|
||||||
|
);
|
||||||
|
|
||||||
|
verifyProperty(AsyncGeneratorFunctionPrototype, "prototype", {
|
||||||
|
enumerable: false,
|
||||||
|
writable: false,
|
||||||
|
configurable: true,
|
||||||
|
});
|
Loading…
Reference in New Issue