test262/test/built-ins/Promise/all/does-not-invoke-array-setters.js
Mike Pennisi 23d566209a Make asynchronous test configuration explicit
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---*\//'
2016-02-12 13:03:19 -05:00

37 lines
1022 B
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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);