summaryrefslogtreecommitdiff
path: root/chromium/v8/src/builtins/aggregate-error.tq
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/builtins/aggregate-error.tq
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/builtins/aggregate-error.tq')
-rw-r--r--chromium/v8/src/builtins/aggregate-error.tq49
1 files changed, 49 insertions, 0 deletions
diff --git a/chromium/v8/src/builtins/aggregate-error.tq b/chromium/v8/src/builtins/aggregate-error.tq
new file mode 100644
index 00000000000..0f4a47b3e73
--- /dev/null
+++ b/chromium/v8/src/builtins/aggregate-error.tq
@@ -0,0 +1,49 @@
+// 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.
+
+#include 'src/objects/js-objects.h'
+
+namespace error {
+
+transitioning javascript builtin AggregateErrorConstructor(
+ js-implicit context: NativeContext, target: JSFunction,
+ newTarget: JSAny)(...arguments): JSAny {
+ // This function is implementing the spec as suggested by
+ // https://github.com/tc39/proposal-promise-any/pull/59 . FIXME(marja):
+ // change this if the PR is declined, otherwise remove the comment.
+
+ // 1. If NewTarget is undefined, let newTarget be the active function
+ // object, else let newTarget be NewTarget.
+ // 2. Let O be ? OrdinaryCreateFromConstructor(newTarget,
+ // "%AggregateError.prototype%", « [[ErrorData]], [[AggregateErrors]] »).
+ // 3. If _message_ is not _undefined_, then
+ // a. Let msg be ? ToString(_message_).
+ // b. Let msgDesc be the PropertyDescriptor { [[Value]]: _msg_,
+ // [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true*
+ // c. Perform ! DefinePropertyOrThrow(_O_, *"message"*, _msgDesc_).
+ const message: JSAny = arguments[1];
+ const obj: JSObject =
+ ConstructAggregateErrorHelper(context, target, newTarget, message);
+
+ // 4. Let errorsList be ? IterableToList(errors).
+ const errors: JSAny = arguments[0];
+ const errorsList = iterator::IterableToListWithSymbolLookup(errors);
+
+ // 5. Perform ! DefinePropertyOrThrow(_O_, `"errors"`, Property Descriptor {
+ // [[Configurable]]: *true*, [[Enumerable]]: *false*, [[Writable]]: *true*,
+ // [[Value]]: ! CreateArrayFromList(_errorsList_) }).
+ SetOwnPropertyIgnoreAttributes(
+ obj, ErrorsStringConstant(), errorsList,
+ SmiConstant(PropertyAttributes::DONT_ENUM));
+
+ // 6. Return O.
+ return obj;
+}
+
+extern transitioning runtime ConstructAggregateErrorHelper(
+ Context, JSFunction, JSAny, Object): JSObject;
+
+extern transitioning runtime ConstructInternalAggregateErrorHelper(
+ Context, Object): JSObject;
+}