Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/harmony/promise-any-overflow-1.js')
-rw-r--r--deps/v8/test/mjsunit/harmony/promise-any-overflow-1.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/harmony/promise-any-overflow-1.js b/deps/v8/test/mjsunit/harmony/promise-any-overflow-1.js
new file mode 100644
index 00000000000..0a95edd05c3
--- /dev/null
+++ b/deps/v8/test/mjsunit/harmony/promise-any-overflow-1.js
@@ -0,0 +1,21 @@
+// Copyright 2020 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --allow-natives-syntax --harmony-promise-any
+
+load('test/mjsunit/test-async.js');
+
+// Make sure we properly throw a RangeError when overflowing the maximum
+// number of elements for Promise.any, which is capped at 2^21 bits right
+// now, since we store the indices as identity hash on the resolve element
+// closures.
+const a = new Array(2 ** 21 - 1);
+const p = Promise.resolve(1);
+for (let i = 0; i < a.length; ++i) a[i] = p;
+testAsync(assert => {
+ assert.plan(1);
+ Promise.any(a).then(assert.unreachable, reason => {
+ assert.equals(true, reason instanceof RangeError);
+ });
+});