mirror of
https://github.com/tc39/test262.git
synced 2025-05-16 04:40:42 +02:00
For asynchronous tests, the contract between test file and test runner is implicit: runners are expected to inspect the source code for references to a global `$DONE` identifier. Promote a more explicit contract between test file and test runner by introducing a new frontmatter "tag", `async`. This brings asynchronous test configuration in-line with other configuration mechanisms and also provides a more natural means of test filtering. The modifications to test files was made programatically using the `grep` and `sed` utilities: $ grep "\$DONE" test/ -r --files-with-match --null | \ xargs -0 sed -i 's/^\(flags:\s*\)\[/\1[async, /g' $ grep "\$DONE" test/ -rl --null | \ xargs -0 grep -E '^flags:' --files-without-match --null | \ xargs -0 sed -i 's/^---\*\//flags: [async]\n---*\//'
37 lines
1022 B
JavaScript
Executable File
37 lines
1022 B
JavaScript
Executable File
// Copyright (C) 2015 André Bargull. All rights reserved.
|
||
// This code is governed by the BSD license found in the LICENSE file.
|
||
|
||
/*---
|
||
es6id: 25.4.4.1.1
|
||
description: >
|
||
Indexed setter properties on Array.prototype are not invoked.
|
||
info: >
|
||
Runtime Semantics: PerformPromiseAll( iteratorRecord, constructor, resultCapability)
|
||
|
||
...
|
||
4. Let remainingElementsCount be a new Record { [[value]]: 1 }.
|
||
...
|
||
6.d ...
|
||
ii. Set remainingElementsCount.[[value]] to remainingElementsCount.[[value]] − 1.
|
||
iii. If remainingElementsCount.[[value]] is 0,
|
||
1. Let valuesArray be CreateArrayFromList(values).
|
||
...
|
||
...
|
||
|
||
7.3.16 CreateArrayFromList (elements)
|
||
...
|
||
4. For each element e of elements
|
||
a. Let status be CreateDataProperty(array, ToString(n), e).
|
||
b. Assert: status is true.
|
||
...
|
||
flags: [async]
|
||
---*/
|
||
|
||
Object.defineProperty(Array.prototype, 0, {
|
||
set: function() {
|
||
$ERROR("Setter on Array.prototype called");
|
||
}
|
||
});
|
||
|
||
Promise.all([42]).then(function(){ $DONE(); }, $DONE);
|