summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/NativeErrors
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/built-ins/NativeErrors')
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/cause-property.js41
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js185
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js71
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop-cast.js71
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop.js35
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt-symbol.js41
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt.js61
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-undefined-no-prop.js35
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/name.js35
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-is-undefined.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-custom.js49
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-fallback.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto.js37
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/order-of-args-evaluation.js43
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prop-desc.js28
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/constructor.js27
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/errors-absent-on-prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/message.js27
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/prop-desc.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/proto.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/AggregateError/shell.js101
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/constructor.js12
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/instance-proto.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/is-error-object.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prop-desc.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/proto.js14
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/constructor.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/message.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/not-error-object.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/proto.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/EvalError/shell.js24
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/constructor.js12
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/instance-proto.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/is-error-object.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prop-desc.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/proto.js14
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/constructor.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/message.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/not-error-object.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/proto.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/RangeError/shell.js24
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/constructor.js12
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/instance-proto.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-error-object.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prop-desc.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto.js14
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/constructor.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/message.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/not-error-object.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/proto.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/ReferenceError/shell.js24
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/constructor.js12
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/instance-proto.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-error-object.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prop-desc.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto.js14
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/constructor.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/message.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/not-error-object.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/proto.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/SyntaxError/shell.js24
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/constructor.js12
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/instance-proto.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/is-error-object.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prop-desc.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/proto.js14
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/constructor.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/message.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/not-error-object.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/proto.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/TypeError/shell.js24
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/constructor.js12
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/instance-proto.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/is-a-constructor.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/is-error-object.js16
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/length.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prop-desc.js18
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/proto-from-ctor-realm.js60
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/proto.js14
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype.js21
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/constructor.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/message.js25
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/name.js26
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/not-error-object.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/proto.js15
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/shell.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/URIError/shell.js24
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/browser.js0
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/cause_property_native_error.js47
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/message_property_native_error.js34
-rw-r--r--js/src/tests/test262/built-ins/NativeErrors/shell.js0
147 files changed, 3516 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/cause-property.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/cause-property.js
new file mode 100644
index 0000000000..f06df10541
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/cause-property.js
@@ -0,0 +1,41 @@
+// Copyright (C) 2021 Chengzhong Wu. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ AggregateError constructor creates own cause property
+info: |
+ AggregateError ( errors, message[ , options ] )
+
+ ...
+ 4. Perform ? InstallErrorCause(O, options).
+ ...
+
+ InstallErrorCause ( O, options )
+
+ 1. If Type(options) is Object and ? HasProperty(options, "cause") is true, then
+ a. Let cause be ? Get(options, "cause").
+ b. Perform ! CreateNonEnumerableDataPropertyOrThrow(O, "cause", cause).
+ ...
+
+features: [AggregateError, error-cause]
+includes: [propertyHelper.js]
+---*/
+
+var errors = [];
+var message = "my-message";
+var cause = { message: "my-cause" };
+var error = new AggregateError(errors, message, { cause });
+
+verifyProperty(error, "cause", {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: cause,
+});
+
+verifyProperty(new AggregateError(errors, message), "cause", undefined);
+verifyProperty(new AggregateError(errors, message, { cause: undefined }), "cause", { value: undefined });
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js
new file mode 100644
index 0000000000..c1ae1b37c7
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js
@@ -0,0 +1,185 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Return abrupt completion from IterableToList(errors)
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 3. Let errorsList be ? IterableToList(errors).
+ 4. Set O.[[AggregateErrors]] to errorsList.
+ ...
+ 6. Return O.
+
+ Runtime Semantics: IterableToList ( items [ , method ] )
+
+ 1. If method is present, then
+ ...
+ 2. Else,
+ b. Let iteratorRecord be ? GetIterator(items, sync).
+ 3. Let values be a new empty List.
+ 4. Let next be true.
+ 5. Repeat, while next is not false
+ a. Set next to ? IteratorStep(iteratorRecord).
+ b. If next is not false, then
+ i. Let nextValue be ? IteratorValue(next).
+ ii. Append nextValue to the end of the List values.
+ 6. Return values.
+
+ GetIterator ( obj [ , hint [ , method ] ] )
+
+ ...
+ 3. If method is not present, then
+ a. If hint is async, then
+ ...
+ b. Otherwise, set method to ? GetMethod(obj, @@iterator).
+ 4. Let iterator be ? Call(method, obj).
+ 5. If Type(iterator) is not Object, throw a TypeError exception.
+ 6. Let nextMethod be ? GetV(iterator, "next").
+ ...
+ 8. Return iteratorRecord.
+features: [AggregateError, Symbol.iterator]
+---*/
+
+var case1 = {
+ get [Symbol.iterator]() {
+ throw new Test262Error();
+ }
+};
+
+assert.throws(Test262Error, () => {
+ var obj = new AggregateError(case1);
+}, 'get Symbol.iterator');
+
+var case2 = {
+ get [Symbol.iterator]() {
+ return {};
+ }
+};
+
+assert.throws(TypeError, () => {
+ var obj = new AggregateError(case2);
+}, 'GetMethod(obj, @@iterator) abrupts from non callable');
+
+var case3 = {
+ [Symbol.iterator]() {
+ throw new Test262Error();
+ }
+};
+
+assert.throws(Test262Error, () => {
+ var obj = new AggregateError(case3);
+}, 'Abrupt from @@iterator call');
+
+var case4 = {
+ [Symbol.iterator]() {
+ return 'a string';
+ }
+};
+
+assert.throws(TypeError, () => {
+ var obj = new AggregateError(case4);
+}, '@@iterator call returns a string');
+
+var case5 = {
+ [Symbol.iterator]() {
+ return undefined;
+ }
+};
+
+assert.throws(TypeError, () => {
+ var obj = new AggregateError(case5);
+}, '@@iterator call returns undefined');
+
+var case6 = {
+ [Symbol.iterator]() {
+ return {
+ get next() {
+ throw new Test262Error();
+ }
+ }
+ }
+};
+
+assert.throws(Test262Error, () => {
+ var obj = new AggregateError(case6);
+}, 'GetV(iterator, next) returns abrupt');
+
+var case7 = {
+ [Symbol.iterator]() {
+ return {
+ get next() {
+ return {};
+ }
+ }
+ }
+};
+
+assert.throws(TypeError, () => {
+ var obj = new AggregateError(case7);
+}, 'GetV(iterator, next) returns a non callable');
+
+var case8 = {
+ [Symbol.iterator]() {
+ return {
+ next() {
+ throw new Test262Error();
+ }
+ }
+ }
+};
+
+assert.throws(Test262Error, () => {
+ var obj = new AggregateError(case8);
+}, 'abrupt from iterator.next()');
+
+var case9 = {
+ [Symbol.iterator]() {
+ return {
+ next() {
+ return undefined;
+ }
+ }
+ }
+};
+
+assert.throws(TypeError, () => {
+ var obj = new AggregateError(case9);
+}, 'iterator.next() returns undefined');
+
+var case10 = {
+ [Symbol.iterator]() {
+ return {
+ next() {
+ return 'a string';
+ }
+ }
+ }
+};
+
+assert.throws(TypeError, () => {
+ var obj = new AggregateError(case10);
+}, 'iterator.next() returns a string');
+
+var case11 = {
+ [Symbol.iterator]() {
+ return {
+ next() {
+ return {
+ get done() {
+ throw new Test262Error();
+ }
+ };
+ }
+ }
+ }
+};
+
+assert.throws(Test262Error, () => {
+ var obj = new AggregateError(case11);
+}, 'IteratorCompete abrupts getting the done property');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js
new file mode 100644
index 0000000000..73f8c49fe8
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js
@@ -0,0 +1,71 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Iteration of errors
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 3. Let errorsList be ? IterableToList(errors).
+ 4. Set O.[[AggregateErrors]] to errorsList.
+ ...
+ 6. Return O.
+
+ Runtime Semantics: IterableToList ( items [ , method ] )
+
+ 1. If method is present, then
+ ...
+ 2. Else,
+ b. Let iteratorRecord be ? GetIterator(items, sync).
+ 3. Let values be a new empty List.
+ 4. Let next be true.
+ 5. Repeat, while next is not false
+ a. Set next to ? IteratorStep(iteratorRecord).
+ b. If next is not false, then
+ i. Let nextValue be ? IteratorValue(next).
+ ii. Append nextValue to the end of the List values.
+ 6. Return values.
+
+ GetIterator ( obj [ , hint [ , method ] ] )
+
+ ...
+ 3. If method is not present, then
+ a. If hint is async, then
+ ...
+ b. Otherwise, set method to ? GetMethod(obj, @@iterator).
+ 4. Let iterator be ? Call(method, obj).
+ 5. If Type(iterator) is not Object, throw a TypeError exception.
+ 6. Let nextMethod be ? GetV(iterator, "next").
+ ...
+ 8. Return iteratorRecord.
+features: [AggregateError, Symbol.iterator]
+includes: [compareArray.js]
+---*/
+
+var count = 0;
+var values = [];
+var case1 = {
+ [Symbol.iterator]() {
+ return {
+ next() {
+ count += 1;
+ return {
+ done: count === 3,
+ get value() {
+ values.push(count)
+ }
+ };
+ }
+ };
+ }
+};
+
+new AggregateError(case1);
+
+assert.sameValue(count, 3);
+assert.compareArray(values, [1, 2]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/is-a-constructor.js
new file mode 100644
index 0000000000..43274be95d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The AggregateError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct, AggregateError]
+---*/
+
+assert.sameValue(isConstructor(AggregateError), true, 'isConstructor(AggregateError) must return true');
+new AggregateError([]);
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/length.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/length.js
new file mode 100644
index 0000000000..4de6eedb6b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: AggregateError.length property descriptor
+info: |
+ AggregateError ( errors, message )
+
+ 17 ECMAScript Standard Built-in Objects
+
+ Every built-in function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description. Optional parameters
+ (which are indicated with brackets: [ ]) or rest parameters (which
+ are shown using the form «...name») are not included in the default
+ argument count.
+
+ Unless otherwise specified, the length property of a built-in
+ function object has the attributes { [[Writable]]: false,
+ [[Enumerable]]: false, [[Configurable]]: true }.
+includes: [propertyHelper.js]
+features: [AggregateError]
+---*/
+
+verifyProperty(AggregateError, 'length', {
+ value: 2,
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop-cast.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop-cast.js
new file mode 100644
index 0000000000..f6b0d78f47
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop-cast.js
@@ -0,0 +1,71 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Cast ToString values of message in the created method property
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 5. If message is not undefined, then
+ a. Let msg be ? ToString(message).
+ b. Perform ! CreateMethodProperty(O, "message", msg).
+ 6. Return O.
+
+ CreateMethodProperty ( O, P, V )
+
+ ...
+ 3. Let newDesc be the PropertyDescriptor { [[Value]]: V, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }.
+ 4. Return ? O.[[DefineOwnProperty]](P, newDesc).
+features: [AggregateError]
+includes: [propertyHelper.js]
+---*/
+
+var case1 = new AggregateError([], 42);
+
+verifyProperty(case1, 'message', {
+ value: '42',
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+var case2 = new AggregateError([], false);
+
+verifyProperty(case2, 'message', {
+ value: 'false',
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+var case3 = new AggregateError([], true);
+
+verifyProperty(case3, 'message', {
+ value: 'true',
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+var case4 = new AggregateError([], { toString() { return 'string'; }});
+
+verifyProperty(case4, 'message', {
+ value: 'string',
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+var case5 = new AggregateError([], null);
+
+verifyProperty(case5, 'message', {
+ value: 'null',
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop.js
new file mode 100644
index 0000000000..ca137c78d4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-method-prop.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Creates a method property for message
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 5. If message is not undefined, then
+ a. Let msg be ? ToString(message).
+ b. Perform ! CreateMethodProperty(O, "message", msg).
+ 6. Return O.
+
+ CreateMethodProperty ( O, P, V )
+
+ ...
+ 3. Let newDesc be the PropertyDescriptor { [[Value]]: V, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }.
+ 4. Return ? O.[[DefineOwnProperty]](P, newDesc).
+features: [AggregateError]
+includes: [propertyHelper.js]
+---*/
+
+var obj = new AggregateError([], '42');
+
+verifyProperty(obj, 'message', {
+ value: '42',
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt-symbol.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt-symbol.js
new file mode 100644
index 0000000000..fff1b0051c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt-symbol.js
@@ -0,0 +1,41 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Abrupt completions of ToString(Symbol message)
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 5. If message is not undefined, then
+ a. Let msg be ? ToString(message).
+ b. Perform ! CreateMethodProperty(O, "message", msg).
+ 6. Return O.
+features: [AggregateError, Symbol, Symbol.toPrimitive]
+---*/
+
+var case1 = Symbol();
+
+assert.throws(TypeError, () => {
+ new AggregateError([], case1);
+}, 'toPrimitive');
+
+var case2 = {
+ [Symbol.toPrimitive]() {
+ return Symbol();
+ },
+ toString() {
+ throw new Test262Error();
+ },
+ valueOf() {
+ throw new Test262Error();
+ }
+};
+
+assert.throws(TypeError, () => {
+ new AggregateError([], case2);
+}, 'from ToPrimitive');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt.js
new file mode 100644
index 0000000000..1c356d719a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-tostring-abrupt.js
@@ -0,0 +1,61 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Abrupt completions of ToString(message)
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 5. If message is not undefined, then
+ a. Let msg be ? ToString(message).
+ b. Perform ! CreateMethodProperty(O, "message", msg).
+ 6. Return O.
+features: [AggregateError, Symbol.toPrimitive]
+---*/
+
+var case1 = {
+ [Symbol.toPrimitive]() {
+ throw new Test262Error();
+ },
+ toString() {
+ throw 'toString called';
+ },
+ valueOf() {
+ throw 'valueOf called';
+ }
+};
+
+assert.throws(Test262Error, () => {
+ new AggregateError([], case1);
+}, 'toPrimitive');
+
+var case2 = {
+ [Symbol.toPrimitive]: undefined,
+ toString() {
+ throw new Test262Error();
+ },
+ valueOf() {
+ throw 'valueOf called';
+ }
+};
+
+assert.throws(Test262Error, () => {
+ new AggregateError([], case2);
+}, 'toString');
+
+var case3 = {
+ [Symbol.toPrimitive]: undefined,
+ toString: undefined,
+ valueOf() {
+ throw new Test262Error();
+ }
+};
+
+assert.throws(Test262Error, () => {
+ new AggregateError([], case3);
+}, 'valueOf');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-undefined-no-prop.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-undefined-no-prop.js
new file mode 100644
index 0000000000..80885b45ce
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/message-undefined-no-prop.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ If message is undefined, no property will be set to the new instance
+info: |
+ AggregateError ( errors, message )
+
+ ...
+ 5. If message is not undefined, then
+ a. Let msg be ? ToString(message).
+ b. Perform ! CreateMethodProperty(O, "message", msg).
+ 6. Return O.
+features: [AggregateError]
+---*/
+
+var case1 = new AggregateError([], undefined);
+
+assert.sameValue(
+ Object.prototype.hasOwnProperty.call(case1, 'message'),
+ false,
+ 'explicit'
+);
+
+var case2 = new AggregateError([]);
+
+assert.sameValue(
+ Object.prototype.hasOwnProperty.call(case2, 'message'),
+ false,
+ 'implicit'
+);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/name.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/name.js
new file mode 100644
index 0000000000..5120c2097d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/name.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: AggregateError.name property descriptor
+info: |
+ Properties of the AggregateError Constructor
+
+ - has a name property whose value is the String value "AggregateError".
+
+ 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, this value is the name that
+ is given to the function in this specification. For functions that
+ are specified as properties of objects, the name value is the
+ property name string used to access the function. [...]
+
+ 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: [AggregateError]
+---*/
+
+verifyProperty(AggregateError, 'name', {
+ value: 'AggregateError',
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-is-undefined.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-is-undefined.js
new file mode 100644
index 0000000000..3f02d5509e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-is-undefined.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ NewTarget is undefined
+info: |
+ AggregateError ( errors, message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object, else let newTarget be NewTarget.
+
+features: [AggregateError]
+---*/
+
+var obj = AggregateError([], '');
+
+assert.sameValue(Object.getPrototypeOf(obj), AggregateError.prototype);
+assert(obj instanceof AggregateError);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-custom.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-custom.js
new file mode 100644
index 0000000000..0cf7359a59
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-custom.js
@@ -0,0 +1,49 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Use a custom NewTarget prototype
+info: |
+ AggregateError ( errors, message )
+
+ 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]] »).
+ ...
+ 6. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, "prototype").
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ Return proto.
+features: [AggregateError, Reflect.construct]
+---*/
+
+var custom = { x: 42 };
+var newt = new Proxy(function() {}, {
+ get(t, p) {
+ if (p === 'prototype') {
+ return custom;
+ }
+
+ return t[p];
+ }
+});
+
+var obj = Reflect.construct(AggregateError, [[]], newt);
+
+assert.sameValue(Object.getPrototypeOf(obj), custom);
+assert.sameValue(obj.x, 42);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-fallback.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-fallback.js
new file mode 100644
index 0000000000..95083d9a47
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto-fallback.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Fallback to the NewTarget's [[Prototype]] if the prototype property is not an object
+info: |
+ AggregateError ( errors, message )
+
+ 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]] »).
+ ...
+ 6. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, "prototype").
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ Return proto.
+features: [AggregateError, Symbol]
+---*/
+
+const values = [
+ undefined,
+ null,
+ 42,
+ false,
+ true,
+ Symbol(),
+ 'string',
+ AggregateError.prototype,
+];
+
+const NewTarget = new Function();
+
+for (const value of values) {
+ const NewTargetProxy = new Proxy(NewTarget, {
+ get(t, p) {
+ if (p === 'prototype') {
+ return value;
+ }
+ return t[p];
+ }
+ });
+
+ const error = Reflect.construct(AggregateError, [[]], NewTargetProxy);
+ assert.sameValue(Object.getPrototypeOf(error), AggregateError.prototype);
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto.js
new file mode 100644
index 0000000000..37dcaac082
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/newtarget-proto.js
@@ -0,0 +1,37 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Default prototype is the %AggregateError.prototype%"
+info: |
+ AggregateError ( errors, message )
+
+ 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]] »).
+ ...
+ 6. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, "prototype").
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ Return proto.
+features: [AggregateError]
+---*/
+
+var obj = new AggregateError([]);
+
+assert.sameValue(Object.getPrototypeOf(obj), AggregateError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/order-of-args-evaluation.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/order-of-args-evaluation.js
new file mode 100644
index 0000000000..18a8b8a0e0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/order-of-args-evaluation.js
@@ -0,0 +1,43 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Process arguments in superclass-then-subclass order
+info: |
+ AggregateError ( errors, message )
+
+ TODO: get updated prose
+
+features: [AggregateError, Symbol.iterator]
+includes: [promiseHelper.js]
+---*/
+
+let sequence = [];
+const message = {
+ toString() {
+ sequence.push(1);
+ return '';
+ }
+};
+const errors = {
+ [Symbol.iterator]() {
+ sequence.push(2);
+ return {
+ next() {
+ sequence.push(3);
+ return {
+ done: true
+ };
+ }
+ };
+ }
+};
+
+new AggregateError(errors, message);
+
+assert.sameValue(sequence.length, 3);
+checkSequence(sequence);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prop-desc.js
new file mode 100644
index 0000000000..ee7790224f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prop-desc.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: >
+ Property descriptor of AggregateError
+info: |
+ The AggregateError Object
+
+ ECMAScript Standard Built-in Objects:
+
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+features: [AggregateError]
+---*/
+
+assert.sameValue(typeof AggregateError, 'function');
+
+verifyProperty(this, 'AggregateError', {
+ enumerable: false,
+ writable: true,
+ configurable: true
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..5575b8c109
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ AggregateError ( errors, message )
+
+ 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]] »).
+ ...
+ 6. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [AggregateError, cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(AggregateError, [[]], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.AggregateError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(AggregateError, [[]], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.AggregateError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = true;
+err = Reflect.construct(AggregateError, [[]], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.AggregateError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = '';
+err = Reflect.construct(AggregateError, [[]], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.AggregateError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(AggregateError, [[]], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.AggregateError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = -1;
+err = Reflect.construct(AggregateError, [[]], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.AggregateError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto.js
new file mode 100644
index 0000000000..0149c38054
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/proto.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: The prototype of AggregateError constructor is Error
+esid: sec-aggregate-error
+info: |
+ Properties of the AggregateError Constructor
+
+ - has a [[Prototype]] internal slot whose value is the intrinsic object %Error%.
+features: [AggregateError]
+---*/
+
+var proto = Object.getPrototypeOf(AggregateError);
+
+assert.sameValue(proto, Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/constructor.js
new file mode 100644
index 0000000000..de481f082e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/constructor.js
@@ -0,0 +1,27 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error.prototype.constructor
+description: >
+ The `AggregateError.prototype.constructor` property descriptor.
+info: |
+ The initial value of AggregateError.prototype.constructor is the intrinsic
+ object %AggregateError%.
+
+ 17 ECMAScript Standard Built-in Objects:
+
+ Every other data property described (...) has the attributes { [[Writable]]: true,
+ [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+features: [AggregateError]
+---*/
+
+verifyProperty(AggregateError.prototype, 'constructor', {
+ value: AggregateError,
+ enumerable: false,
+ writable: true,
+ configurable: true
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/errors-absent-on-prototype.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/errors-absent-on-prototype.js
new file mode 100644
index 0000000000..b956a12d5f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/errors-absent-on-prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2020 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-properties-of-the-aggregate-error-prototype-objects
+description: >
+ The AggregateError prototype object isn't an AggregateError instance.
+info: |
+ Properties of the AggregateError Prototype Object
+
+ The AggregateError prototype object:
+ ...
+ - is not an Error instance or an AggregateError instance and does not have an
+ [[ErrorData]] internal slot.
+ ...
+features: [AggregateError]
+---*/
+
+assert.sameValue(AggregateError.prototype.hasOwnProperty("errors"), false);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/message.js
new file mode 100644
index 0000000000..c3ed7d98b1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/message.js
@@ -0,0 +1,27 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error.prototype.message
+description: >
+ The `AggregateError.prototype.message` property descriptor.
+info: |
+ The initial value of the message property of the prototype for a given AggregateError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+
+ Every other data property described (...) has the attributes { [[Writable]]: true,
+ [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+features: [AggregateError]
+---*/
+
+verifyProperty(AggregateError.prototype, 'message', {
+ value: '',
+ enumerable: false,
+ writable: true,
+ configurable: true
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/name.js
new file mode 100644
index 0000000000..7552a8af35
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error.prototype.name
+description: >
+ The `AggregateError.prototype.name` property descriptor.
+info: |
+ The initial value of AggregateError.prototype.name is "AggregateError".
+
+ 17 ECMAScript Standard Built-in Objects:
+
+ Every other data property described (...) has the attributes { [[Writable]]: true,
+ [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+features: [AggregateError]
+---*/
+
+verifyProperty(AggregateError.prototype, 'name', {
+ value: 'AggregateError',
+ enumerable: false,
+ writable: true,
+ configurable: true
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/prop-desc.js
new file mode 100644
index 0000000000..12b998f32c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/prop-desc.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-aggregate-error.prototype
+description: >
+ Property descriptor of AggregateError.prototype
+info: |
+ AggregateError.prototype
+
+ The initial value of AggregateError.prototype is the intrinsic object %AggregateErrorPrototype%.
+
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+features: [AggregateError]
+---*/
+
+assert.sameValue(typeof AggregateError.prototype, 'object');
+
+verifyProperty(AggregateError, 'prototype', {
+ enumerable: false,
+ writable: false,
+ configurable: false
+});
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/proto.js
new file mode 100644
index 0000000000..a42bab316a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/proto.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Leo Balter. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-properties-of-the-aggregate-error-prototype-objects
+description: The prototype of AggregateError.prototype constructor is Error.prototype
+info: |
+ Properties of the AggregateError Prototype Object
+
+ - has a [[Prototype]] internal slot whose value is the intrinsic object %Error.prototype%.
+features: [AggregateError]
+---*/
+
+var proto = Object.getPrototypeOf(AggregateError.prototype);
+
+assert.sameValue(proto, Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/shell.js
new file mode 100644
index 0000000000..6fbf1a63a4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/shell.js
@@ -0,0 +1,101 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
+
+// file: promiseHelper.js
+// Copyright (C) 2017 Ecma International. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+description: |
+ Check that an array contains a numeric sequence starting at 1
+ and incrementing by 1 for each entry in the array. Used by
+ Promise tests to assert the order of execution in deep Promise
+ resolution pipelines.
+defines: [checkSequence, checkSettledPromises]
+---*/
+
+function checkSequence(arr, message) {
+ arr.forEach(function(e, i) {
+ if (e !== (i+1)) {
+ throw new Test262Error((message ? message : "Steps in unexpected sequence:") +
+ " '" + arr.join(',') + "'");
+ }
+ });
+
+ return true;
+}
+
+function checkSettledPromises(settleds, expected, message) {
+ const prefix = message ? `${message}: ` : '';
+
+ assert.sameValue(Array.isArray(settleds), true, `${prefix}Settled values is an array`);
+
+ assert.sameValue(
+ settleds.length,
+ expected.length,
+ `${prefix}The settled values has a different length than expected`
+ );
+
+ settleds.forEach((settled, i) => {
+ assert.sameValue(
+ Object.prototype.hasOwnProperty.call(settled, 'status'),
+ true,
+ `${prefix}The settled value has a property status`
+ );
+
+ assert.sameValue(settled.status, expected[i].status, `${prefix}status for item ${i}`);
+
+ if (settled.status === 'fulfilled') {
+ assert.sameValue(
+ Object.prototype.hasOwnProperty.call(settled, 'value'),
+ true,
+ `${prefix}The fulfilled promise has a property named value`
+ );
+
+ assert.sameValue(
+ Object.prototype.hasOwnProperty.call(settled, 'reason'),
+ false,
+ `${prefix}The fulfilled promise has no property named reason`
+ );
+
+ assert.sameValue(settled.value, expected[i].value, `${prefix}value for item ${i}`);
+ } else {
+ assert.sameValue(settled.status, 'rejected', `${prefix}Valid statuses are only fulfilled or rejected`);
+
+ assert.sameValue(
+ Object.prototype.hasOwnProperty.call(settled, 'value'),
+ false,
+ `${prefix}The fulfilled promise has no property named value`
+ );
+
+ assert.sameValue(
+ Object.prototype.hasOwnProperty.call(settled, 'reason'),
+ true,
+ `${prefix}The fulfilled promise has a property named reason`
+ );
+
+ assert.sameValue(settled.reason, expected[i].reason, `${prefix}Reason value for item ${i}`);
+ }
+ });
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/constructor.js
new file mode 100644
index 0000000000..63982fbbdc
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/constructor.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ EvalError is a constructor function.
+---*/
+
+assert.sameValue(typeof EvalError, 'function', 'typeof EvalError is "function"');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/instance-proto.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/instance-proto.js
new file mode 100644
index 0000000000..a80dd0969d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/instance-proto.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ The prototype of EvalError instances is EvalError.prototype.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.getPrototypeOf(new EvalError), EvalError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/is-a-constructor.js
new file mode 100644
index 0000000000..220b4c402a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The EvalError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct]
+---*/
+
+assert.sameValue(isConstructor(EvalError), true, 'isConstructor(EvalError) must return true');
+new EvalError();
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/is-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/is-error-object.js
new file mode 100644
index 0000000000..7ef2e95a20
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/is-error-object.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ EvalError instances have an [[ErrorData]] internal slot.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.prototype.toString.call(new EvalError), "[object Error]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/length.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/length.js
new file mode 100644
index 0000000000..4e6a6863d0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ EvalError.length is 1.
+info: |
+ NativeError ( message )
+
+ 19.5.6.2 Properties of the NativeError Constructors
+ Besides the length property (whose value is 1) [...].
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every built-in Function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description, including optional
+ parameters. However, rest parameters shown using the form “...name”
+ are not included in the default argument count.
+
+ Unless otherwise specified, the length property of a built-in Function
+ object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+ [[Configurable]]: true }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(EvalError.length, 1);
+
+verifyNotEnumerable(EvalError, "length");
+verifyNotWritable(EvalError, "length");
+verifyConfigurable(EvalError, "length");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/name.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/name.js
new file mode 100644
index 0000000000..d36e58bf73
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ EvalError.name is "EvalError".
+info: |
+ 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]
+---*/
+
+assert.sameValue(EvalError.name, "EvalError");
+
+verifyNotEnumerable(EvalError, "name");
+verifyNotWritable(EvalError, "name");
+verifyConfigurable(EvalError, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prop-desc.js
new file mode 100644
index 0000000000..a99e12e85f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prop-desc.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Bocoup. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-constructor-properties-of-the-global-object-evalerror
+description: Property descriptor for EvalError
+info: |
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(this, "EvalError");
+verifyWritable(this, "EvalError");
+verifyConfigurable(this, "EvalError");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..32c2e07662
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-nativeerror
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ NativeError ( message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object; else let newTarget be NewTarget.
+ 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%NativeErrorPrototype%", « [[ErrorData]] »).
+ ...
+ 4. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(EvalError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.EvalError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(EvalError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.EvalError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = false;
+err = Reflect.construct(EvalError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.EvalError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = 'str';
+err = Reflect.construct(EvalError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.EvalError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(EvalError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.EvalError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = 0;
+err = Reflect.construct(EvalError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.EvalError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/proto.js
new file mode 100644
index 0000000000..b69b49a427
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/proto.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ The prototype of EvalError is Error.
+info: |
+ The value of the [[Prototype]] internal slot of a NativeError constructor is the intrinsic object %Error% (19.5.1).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(EvalError), Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype.js
new file mode 100644
index 0000000000..6e43253450
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2.1
+description: >
+ The initial value of EvalError.prototype is the EvalError prototype object.
+info: |
+ The initial value of NativeError.prototype is a NativeError prototype object (19.5.6.3).
+ Each NativeError constructor has a distinct prototype object.
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(EvalError.prototype, Object.getPrototypeOf(new EvalError));
+
+verifyNotEnumerable(EvalError, "prototype");
+verifyNotWritable(EvalError, "prototype");
+verifyNotConfigurable(EvalError, "prototype");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/constructor.js
new file mode 100644
index 0000000000..e823b636ec
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/constructor.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.1
+description: >
+ The initial value of EvalError.prototype.constructor is the EvalError object.
+info: |
+ The initial value of the constructor property of the prototype for a given NativeError
+ constructor is the corresponding intrinsic object %NativeError% (19.5.6.1).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(EvalError.prototype.constructor, EvalError);
+
+verifyNotEnumerable(EvalError.prototype, "constructor");
+verifyWritable(EvalError.prototype, "constructor");
+verifyConfigurable(EvalError.prototype, "constructor");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/message.js
new file mode 100644
index 0000000000..bb327493bf
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/message.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.2
+description: >
+ The initial value of EvalError.prototype.message is the empty string.
+info: |
+ The initial value of the message property of the prototype for a given NativeError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(EvalError.prototype.message, "");
+
+verifyNotEnumerable(EvalError.prototype, "message");
+verifyWritable(EvalError.prototype, "message");
+verifyConfigurable(EvalError.prototype, "message");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/name.js
new file mode 100644
index 0000000000..7075febda1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.3
+description: >
+ The initial value of EvalError.prototype.name is "EvalError".
+info: |
+ The initial value of the name property of the prototype for a given NativeError
+ constructor is a string consisting of the name of the constructor (the name used
+ instead of NativeError).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(EvalError.prototype.name, "EvalError");
+
+verifyNotEnumerable(EvalError.prototype, "name");
+verifyWritable(EvalError.prototype, "name");
+verifyConfigurable(EvalError.prototype, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/not-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/not-error-object.js
new file mode 100644
index 0000000000..58e24d010b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/not-error-object.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ EvalError.prototype is not an error object instance.
+info: |
+ Each NativeError prototype object is an ordinary object. It is not an
+ Error instance and does not have an [[ErrorData]] internal slot.
+---*/
+
+assert.sameValue(Object.prototype.toString.call(EvalError.prototype), "[object Object]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/proto.js
new file mode 100644
index 0000000000..a0d8f20d31
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/proto.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ The prototype of EvalError.prototype is Error.prototype.
+info: |
+ The value of the [[Prototype]] internal slot of each NativeError prototype
+ object is the intrinsic object %ErrorPrototype% (19.5.3).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(EvalError.prototype), Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/EvalError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/EvalError/shell.js
new file mode 100644
index 0000000000..eda1477282
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/EvalError/shell.js
@@ -0,0 +1,24 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/constructor.js
new file mode 100644
index 0000000000..65264f8206
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/constructor.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ RangeError is a constructor function.
+---*/
+
+assert.sameValue(typeof RangeError, 'function', 'typeof RangeError is "function"');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/instance-proto.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/instance-proto.js
new file mode 100644
index 0000000000..dd3649c36d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/instance-proto.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ The prototype of RangeError instances is RangeError.prototype.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.getPrototypeOf(new RangeError), RangeError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/is-a-constructor.js
new file mode 100644
index 0000000000..2c35812000
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The RangeError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct]
+---*/
+
+assert.sameValue(isConstructor(RangeError), true, 'isConstructor(RangeError) must return true');
+new RangeError();
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/is-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/is-error-object.js
new file mode 100644
index 0000000000..1d84ea9ab5
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/is-error-object.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ RangeError instances have an [[ErrorData]] internal slot.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.prototype.toString.call(new RangeError), "[object Error]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/length.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/length.js
new file mode 100644
index 0000000000..ce9f6d7f13
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ RangeError.length is 1.
+info: |
+ NativeError ( message )
+
+ 19.5.6.2 Properties of the NativeError Constructors
+ Besides the length property (whose value is 1) [...].
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every built-in Function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description, including optional
+ parameters. However, rest parameters shown using the form “...name”
+ are not included in the default argument count.
+
+ Unless otherwise specified, the length property of a built-in Function
+ object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+ [[Configurable]]: true }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(RangeError.length, 1);
+
+verifyNotEnumerable(RangeError, "length");
+verifyNotWritable(RangeError, "length");
+verifyConfigurable(RangeError, "length");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/name.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/name.js
new file mode 100644
index 0000000000..621b07684c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ RangeError.name is "RangeError".
+info: |
+ 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]
+---*/
+
+assert.sameValue(RangeError.name, "RangeError");
+
+verifyNotEnumerable(RangeError, "name");
+verifyNotWritable(RangeError, "name");
+verifyConfigurable(RangeError, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prop-desc.js
new file mode 100644
index 0000000000..d33c7e1926
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prop-desc.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Bocoup. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-constructor-properties-of-the-global-object-rangeerror
+description: Property descriptor for RangeError
+info: |
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(this, "RangeError");
+verifyWritable(this, "RangeError");
+verifyConfigurable(this, "RangeError");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..39067464e8
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-nativeerror
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ NativeError ( message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object; else let newTarget be NewTarget.
+ 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%NativeErrorPrototype%", « [[ErrorData]] »).
+ ...
+ 4. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(RangeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.RangeError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(RangeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.RangeError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = true;
+err = Reflect.construct(RangeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.RangeError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = '';
+err = Reflect.construct(RangeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.RangeError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(RangeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.RangeError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = -0;
+err = Reflect.construct(RangeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.RangeError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/proto.js
new file mode 100644
index 0000000000..5f73711405
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/proto.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ The prototype of RangeError is Error.
+info: |
+ The value of the [[Prototype]] internal slot of a NativeError constructor is the intrinsic object %Error% (19.5.1).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(RangeError), Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype.js
new file mode 100644
index 0000000000..f7c6586270
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2.1
+description: >
+ The initial value of RangeError.prototype is the RangeError prototype object.
+info: |
+ The initial value of NativeError.prototype is a NativeError prototype object (19.5.6.3).
+ Each NativeError constructor has a distinct prototype object.
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(RangeError.prototype, Object.getPrototypeOf(new RangeError));
+
+verifyNotEnumerable(RangeError, "prototype");
+verifyNotWritable(RangeError, "prototype");
+verifyNotConfigurable(RangeError, "prototype");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/constructor.js
new file mode 100644
index 0000000000..9a8a5c26e4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/constructor.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.1
+description: >
+ The initial value of RangeError.prototype.constructor is the RangeError object.
+info: |
+ The initial value of the constructor property of the prototype for a given NativeError
+ constructor is the corresponding intrinsic object %NativeError% (19.5.6.1).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(RangeError.prototype.constructor, RangeError);
+
+verifyNotEnumerable(RangeError.prototype, "constructor");
+verifyWritable(RangeError.prototype, "constructor");
+verifyConfigurable(RangeError.prototype, "constructor");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/message.js
new file mode 100644
index 0000000000..3de63869c1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/message.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.2
+description: >
+ The initial value of RangeError.prototype.message is the empty string.
+info: |
+ The initial value of the message property of the prototype for a given NativeError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(RangeError.prototype.message, "");
+
+verifyNotEnumerable(RangeError.prototype, "message");
+verifyWritable(RangeError.prototype, "message");
+verifyConfigurable(RangeError.prototype, "message");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/name.js
new file mode 100644
index 0000000000..24d76f4949
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.3
+description: >
+ The initial value of RangeError.prototype.name is "RangeError".
+info: |
+ The initial value of the name property of the prototype for a given NativeError
+ constructor is a string consisting of the name of the constructor (the name used
+ instead of NativeError).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(RangeError.prototype.name, "RangeError");
+
+verifyNotEnumerable(RangeError.prototype, "name");
+verifyWritable(RangeError.prototype, "name");
+verifyConfigurable(RangeError.prototype, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/not-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/not-error-object.js
new file mode 100644
index 0000000000..e3ce995446
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/not-error-object.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ RangeError.prototype is not an error object instance.
+info: |
+ Each NativeError prototype object is an ordinary object. It is not an
+ Error instance and does not have an [[ErrorData]] internal slot.
+---*/
+
+assert.sameValue(Object.prototype.toString.call(RangeError.prototype), "[object Object]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/proto.js
new file mode 100644
index 0000000000..104dfaf777
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/proto.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ The prototype of RangeError.prototype is Error.prototype.
+info: |
+ The value of the [[Prototype]] internal slot of each NativeError prototype
+ object is the intrinsic object %ErrorPrototype% (19.5.3).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(RangeError.prototype), Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/RangeError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/RangeError/shell.js
new file mode 100644
index 0000000000..eda1477282
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/RangeError/shell.js
@@ -0,0 +1,24 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/constructor.js
new file mode 100644
index 0000000000..ba287131bf
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/constructor.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ ReferenceError is a constructor function.
+---*/
+
+assert.sameValue(typeof ReferenceError, 'function', 'typeof ReferenceError is "function"');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/instance-proto.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/instance-proto.js
new file mode 100644
index 0000000000..97944c7113
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/instance-proto.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ The prototype of ReferenceError instances is ReferenceError.prototype.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.getPrototypeOf(new ReferenceError), ReferenceError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-a-constructor.js
new file mode 100644
index 0000000000..93c39185e5
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The ReferenceError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct]
+---*/
+
+assert.sameValue(isConstructor(ReferenceError), true, 'isConstructor(ReferenceError) must return true');
+new ReferenceError();
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-error-object.js
new file mode 100644
index 0000000000..870bb53320
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/is-error-object.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ ReferenceError instances have an [[ErrorData]] internal slot.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.prototype.toString.call(new ReferenceError), "[object Error]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/length.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/length.js
new file mode 100644
index 0000000000..5a3f07d497
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ ReferenceError.length is 1.
+info: |
+ NativeError ( message )
+
+ 19.5.6.2 Properties of the NativeError Constructors
+ Besides the length property (whose value is 1) [...].
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every built-in Function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description, including optional
+ parameters. However, rest parameters shown using the form “...name”
+ are not included in the default argument count.
+
+ Unless otherwise specified, the length property of a built-in Function
+ object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+ [[Configurable]]: true }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(ReferenceError.length, 1);
+
+verifyNotEnumerable(ReferenceError, "length");
+verifyNotWritable(ReferenceError, "length");
+verifyConfigurable(ReferenceError, "length");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/name.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/name.js
new file mode 100644
index 0000000000..66b0a39351
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ ReferenceError.name is "ReferenceError".
+info: |
+ 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]
+---*/
+
+assert.sameValue(ReferenceError.name, "ReferenceError");
+
+verifyNotEnumerable(ReferenceError, "name");
+verifyNotWritable(ReferenceError, "name");
+verifyConfigurable(ReferenceError, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prop-desc.js
new file mode 100644
index 0000000000..49cb1ece2d
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prop-desc.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Bocoup. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-constructor-properties-of-the-global-object-referenceerror
+description: Property descriptor for ReferenceError
+info: |
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(this, "ReferenceError");
+verifyWritable(this, "ReferenceError");
+verifyConfigurable(this, "ReferenceError");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..b86ad24a54
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-nativeerror
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ NativeError ( message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object; else let newTarget be NewTarget.
+ 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%NativeErrorPrototype%", « [[ErrorData]] »).
+ ...
+ 4. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(ReferenceError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.ReferenceError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(ReferenceError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.ReferenceError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = false;
+err = Reflect.construct(ReferenceError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.ReferenceError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = 'str';
+err = Reflect.construct(ReferenceError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.ReferenceError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(ReferenceError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.ReferenceError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = NaN;
+err = Reflect.construct(ReferenceError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.ReferenceError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto.js
new file mode 100644
index 0000000000..73e8f12c71
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/proto.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ The prototype of ReferenceError is Error.
+info: |
+ The value of the [[Prototype]] internal slot of a NativeError constructor is the intrinsic object %Error% (19.5.1).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(ReferenceError), Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype.js
new file mode 100644
index 0000000000..3031815ead
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2.1
+description: >
+ The initial value of ReferenceError.prototype is the ReferenceError prototype object.
+info: |
+ The initial value of NativeError.prototype is a NativeError prototype object (19.5.6.3).
+ Each NativeError constructor has a distinct prototype object.
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(ReferenceError.prototype, Object.getPrototypeOf(new ReferenceError));
+
+verifyNotEnumerable(ReferenceError, "prototype");
+verifyNotWritable(ReferenceError, "prototype");
+verifyNotConfigurable(ReferenceError, "prototype");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/constructor.js
new file mode 100644
index 0000000000..891c36eb67
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/constructor.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.1
+description: >
+ The initial value of ReferenceError.prototype.constructor is the ReferenceError object.
+info: |
+ The initial value of the constructor property of the prototype for a given NativeError
+ constructor is the corresponding intrinsic object %NativeError% (19.5.6.1).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(ReferenceError.prototype.constructor, ReferenceError);
+
+verifyNotEnumerable(ReferenceError.prototype, "constructor");
+verifyWritable(ReferenceError.prototype, "constructor");
+verifyConfigurable(ReferenceError.prototype, "constructor");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/message.js
new file mode 100644
index 0000000000..e498b5c85f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/message.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.2
+description: >
+ The initial value of ReferenceError.prototype.message is the empty string.
+info: |
+ The initial value of the message property of the prototype for a given NativeError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(ReferenceError.prototype.message, "");
+
+verifyNotEnumerable(ReferenceError.prototype, "message");
+verifyWritable(ReferenceError.prototype, "message");
+verifyConfigurable(ReferenceError.prototype, "message");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/name.js
new file mode 100644
index 0000000000..563ec73485
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.3
+description: >
+ The initial value of ReferenceError.prototype.name is "ReferenceError".
+info: |
+ The initial value of the name property of the prototype for a given NativeError
+ constructor is a string consisting of the name of the constructor (the name used
+ instead of NativeError).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(ReferenceError.prototype.name, "ReferenceError");
+
+verifyNotEnumerable(ReferenceError.prototype, "name");
+verifyWritable(ReferenceError.prototype, "name");
+verifyConfigurable(ReferenceError.prototype, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/not-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/not-error-object.js
new file mode 100644
index 0000000000..aaf9ab6748
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/not-error-object.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ ReferenceError.prototype is not an error object instance.
+info: |
+ Each NativeError prototype object is an ordinary object. It is not an
+ Error instance and does not have an [[ErrorData]] internal slot.
+---*/
+
+assert.sameValue(Object.prototype.toString.call(ReferenceError.prototype), "[object Object]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/proto.js
new file mode 100644
index 0000000000..c702ff1fa2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/proto.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ The prototype of ReferenceError.prototype is Error.prototype.
+info: |
+ The value of the [[Prototype]] internal slot of each NativeError prototype
+ object is the intrinsic object %ErrorPrototype% (19.5.3).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(ReferenceError.prototype), Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/shell.js
new file mode 100644
index 0000000000..eda1477282
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/ReferenceError/shell.js
@@ -0,0 +1,24 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/constructor.js
new file mode 100644
index 0000000000..79b5fb8708
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/constructor.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ SyntaxError is a constructor function.
+---*/
+
+assert.sameValue(typeof SyntaxError, 'function', 'typeof SyntaxError is "function"');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/instance-proto.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/instance-proto.js
new file mode 100644
index 0000000000..792fb96005
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/instance-proto.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ The prototype of SyntaxError instances is SyntaxError.prototype.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.getPrototypeOf(new SyntaxError), SyntaxError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-a-constructor.js
new file mode 100644
index 0000000000..ad74f340ca
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The SyntaxError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct]
+---*/
+
+assert.sameValue(isConstructor(SyntaxError), true, 'isConstructor(SyntaxError) must return true');
+new SyntaxError();
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-error-object.js
new file mode 100644
index 0000000000..8ea07870fa
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/is-error-object.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ SyntaxError instances have an [[ErrorData]] internal slot.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.prototype.toString.call(new SyntaxError), "[object Error]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/length.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/length.js
new file mode 100644
index 0000000000..555a5c1529
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ SyntaxError.length is 1.
+info: |
+ NativeError ( message )
+
+ 19.5.6.2 Properties of the NativeError Constructors
+ Besides the length property (whose value is 1) [...].
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every built-in Function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description, including optional
+ parameters. However, rest parameters shown using the form “...name”
+ are not included in the default argument count.
+
+ Unless otherwise specified, the length property of a built-in Function
+ object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+ [[Configurable]]: true }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(SyntaxError.length, 1);
+
+verifyNotEnumerable(SyntaxError, "length");
+verifyNotWritable(SyntaxError, "length");
+verifyConfigurable(SyntaxError, "length");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/name.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/name.js
new file mode 100644
index 0000000000..f70899d0fc
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ SyntaxError.name is "SyntaxError".
+info: |
+ 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]
+---*/
+
+assert.sameValue(SyntaxError.name, "SyntaxError");
+
+verifyNotEnumerable(SyntaxError, "name");
+verifyNotWritable(SyntaxError, "name");
+verifyConfigurable(SyntaxError, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prop-desc.js
new file mode 100644
index 0000000000..09fad3baa6
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prop-desc.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Bocoup. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-constructor-properties-of-the-global-object-syntaxerror
+description: Property descriptor for SyntaxError
+info: |
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(this, "SyntaxError");
+verifyWritable(this, "SyntaxError");
+verifyConfigurable(this, "SyntaxError");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..7bb0aef336
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-nativeerror
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ NativeError ( message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object; else let newTarget be NewTarget.
+ 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%NativeErrorPrototype%", « [[ErrorData]] »).
+ ...
+ 4. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(SyntaxError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.SyntaxError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(SyntaxError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.SyntaxError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = true;
+err = Reflect.construct(SyntaxError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.SyntaxError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = '';
+err = Reflect.construct(SyntaxError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.SyntaxError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(SyntaxError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.SyntaxError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = Infinity;
+err = Reflect.construct(SyntaxError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.SyntaxError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto.js
new file mode 100644
index 0000000000..119a24e25b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/proto.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ The prototype of SyntaxError is Error.
+info: |
+ The value of the [[Prototype]] internal slot of a NativeError constructor is the intrinsic object %Error% (19.5.1).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(SyntaxError), Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype.js
new file mode 100644
index 0000000000..2afe909c57
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2.1
+description: >
+ The initial value of SyntaxError.prototype is the SyntaxError prototype object.
+info: |
+ The initial value of NativeError.prototype is a NativeError prototype object (19.5.6.3).
+ Each NativeError constructor has a distinct prototype object.
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(SyntaxError.prototype, Object.getPrototypeOf(new SyntaxError));
+
+verifyNotEnumerable(SyntaxError, "prototype");
+verifyNotWritable(SyntaxError, "prototype");
+verifyNotConfigurable(SyntaxError, "prototype");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/constructor.js
new file mode 100644
index 0000000000..a5aaf689d6
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/constructor.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.1
+description: >
+ The initial value of SyntaxError.prototype.constructor is the SyntaxError object.
+info: |
+ The initial value of the constructor property of the prototype for a given NativeError
+ constructor is the corresponding intrinsic object %NativeError% (19.5.6.1).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(SyntaxError.prototype.constructor, SyntaxError);
+
+verifyNotEnumerable(SyntaxError.prototype, "constructor");
+verifyWritable(SyntaxError.prototype, "constructor");
+verifyConfigurable(SyntaxError.prototype, "constructor");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/message.js
new file mode 100644
index 0000000000..43c0f97bad
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/message.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.2
+description: >
+ The initial value of SyntaxError.prototype.message is the empty string.
+info: |
+ The initial value of the message property of the prototype for a given NativeError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(SyntaxError.prototype.message, "");
+
+verifyNotEnumerable(SyntaxError.prototype, "message");
+verifyWritable(SyntaxError.prototype, "message");
+verifyConfigurable(SyntaxError.prototype, "message");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/name.js
new file mode 100644
index 0000000000..8f80d797ba
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.3
+description: >
+ The initial value of SyntaxError.prototype.name is "SyntaxError".
+info: |
+ The initial value of the name property of the prototype for a given NativeError
+ constructor is a string consisting of the name of the constructor (the name used
+ instead of NativeError).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(SyntaxError.prototype.name, "SyntaxError");
+
+verifyNotEnumerable(SyntaxError.prototype, "name");
+verifyWritable(SyntaxError.prototype, "name");
+verifyConfigurable(SyntaxError.prototype, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/not-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/not-error-object.js
new file mode 100644
index 0000000000..4d863890e0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/not-error-object.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ SyntaxError.prototype is not an error object instance.
+info: |
+ Each NativeError prototype object is an ordinary object. It is not an
+ Error instance and does not have an [[ErrorData]] internal slot.
+---*/
+
+assert.sameValue(Object.prototype.toString.call(SyntaxError.prototype), "[object Object]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/proto.js
new file mode 100644
index 0000000000..4130132fc7
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/proto.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ The prototype of SyntaxError.prototype is Error.prototype.
+info: |
+ The value of the [[Prototype]] internal slot of each NativeError prototype
+ object is the intrinsic object %ErrorPrototype% (19.5.3).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(SyntaxError.prototype), Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/shell.js
new file mode 100644
index 0000000000..eda1477282
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/SyntaxError/shell.js
@@ -0,0 +1,24 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/constructor.js
new file mode 100644
index 0000000000..3f4603d970
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/constructor.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ TypeError is a constructor function.
+---*/
+
+assert.sameValue(typeof TypeError, 'function', 'typeof TypeError is "function"');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/instance-proto.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/instance-proto.js
new file mode 100644
index 0000000000..10f699888a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/instance-proto.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ The prototype of TypeError instances is TypeError.prototype.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.getPrototypeOf(new TypeError), TypeError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/is-a-constructor.js
new file mode 100644
index 0000000000..72c2f9f73c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The TypeError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct]
+---*/
+
+assert.sameValue(isConstructor(TypeError), true, 'isConstructor(TypeError) must return true');
+new TypeError();
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/is-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/is-error-object.js
new file mode 100644
index 0000000000..96e2fb1260
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/is-error-object.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ TypeError instances have an [[ErrorData]] internal slot.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.prototype.toString.call(new TypeError), "[object Error]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/length.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/length.js
new file mode 100644
index 0000000000..c84b02708e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ TypeError.length is 1.
+info: |
+ NativeError ( message )
+
+ 19.5.6.2 Properties of the NativeError Constructors
+ Besides the length property (whose value is 1) [...].
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every built-in Function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description, including optional
+ parameters. However, rest parameters shown using the form “...name”
+ are not included in the default argument count.
+
+ Unless otherwise specified, the length property of a built-in Function
+ object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+ [[Configurable]]: true }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(TypeError.length, 1);
+
+verifyNotEnumerable(TypeError, "length");
+verifyNotWritable(TypeError, "length");
+verifyConfigurable(TypeError, "length");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/name.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/name.js
new file mode 100644
index 0000000000..ede2f73af9
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ TypeError.name is "TypeError".
+info: |
+ 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]
+---*/
+
+assert.sameValue(TypeError.name, "TypeError");
+
+verifyNotEnumerable(TypeError, "name");
+verifyNotWritable(TypeError, "name");
+verifyConfigurable(TypeError, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prop-desc.js
new file mode 100644
index 0000000000..955b44c17f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prop-desc.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Bocoup. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-constructor-properties-of-the-global-object-typeerror
+description: Property descriptor for TypeError
+info: |
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(this, "TypeError");
+verifyWritable(this, "TypeError");
+verifyConfigurable(this, "TypeError");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..c6b6c8acf0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-nativeerror
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ NativeError ( message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object; else let newTarget be NewTarget.
+ 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%NativeErrorPrototype%", « [[ErrorData]] »).
+ ...
+ 4. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(TypeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.TypeError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(TypeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.TypeError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = false;
+err = Reflect.construct(TypeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.TypeError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = 'str';
+err = Reflect.construct(TypeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.TypeError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(TypeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.TypeError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = -Infinity;
+err = Reflect.construct(TypeError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.TypeError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/proto.js
new file mode 100644
index 0000000000..192be080e1
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/proto.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ The prototype of TypeError is Error.
+info: |
+ The value of the [[Prototype]] internal slot of a NativeError constructor is the intrinsic object %Error% (19.5.1).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(TypeError), Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype.js
new file mode 100644
index 0000000000..873b1bcf5e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2.1
+description: >
+ The initial value of TypeError.prototype is the TypeError prototype object.
+info: |
+ The initial value of NativeError.prototype is a NativeError prototype object (19.5.6.3).
+ Each NativeError constructor has a distinct prototype object.
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(TypeError.prototype, Object.getPrototypeOf(new TypeError));
+
+verifyNotEnumerable(TypeError, "prototype");
+verifyNotWritable(TypeError, "prototype");
+verifyNotConfigurable(TypeError, "prototype");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/constructor.js
new file mode 100644
index 0000000000..1424da264a
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/constructor.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.1
+description: >
+ The initial value of TypeError.prototype.constructor is the TypeError object.
+info: |
+ The initial value of the constructor property of the prototype for a given NativeError
+ constructor is the corresponding intrinsic object %NativeError% (19.5.6.1).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(TypeError.prototype.constructor, TypeError);
+
+verifyNotEnumerable(TypeError.prototype, "constructor");
+verifyWritable(TypeError.prototype, "constructor");
+verifyConfigurable(TypeError.prototype, "constructor");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/message.js
new file mode 100644
index 0000000000..ddc410f691
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/message.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.2
+description: >
+ The initial value of TypeError.prototype.message is the empty string.
+info: |
+ The initial value of the message property of the prototype for a given NativeError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(TypeError.prototype.message, "");
+
+verifyNotEnumerable(TypeError.prototype, "message");
+verifyWritable(TypeError.prototype, "message");
+verifyConfigurable(TypeError.prototype, "message");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/name.js
new file mode 100644
index 0000000000..c0c0531ff2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.3
+description: >
+ The initial value of TypeError.prototype.name is "TypeError".
+info: |
+ The initial value of the name property of the prototype for a given NativeError
+ constructor is a string consisting of the name of the constructor (the name used
+ instead of NativeError).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(TypeError.prototype.name, "TypeError");
+
+verifyNotEnumerable(TypeError.prototype, "name");
+verifyWritable(TypeError.prototype, "name");
+verifyConfigurable(TypeError.prototype, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/not-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/not-error-object.js
new file mode 100644
index 0000000000..7cca2dc1e8
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/not-error-object.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ TypeError.prototype is not an error object instance.
+info: |
+ Each NativeError prototype object is an ordinary object. It is not an
+ Error instance and does not have an [[ErrorData]] internal slot.
+---*/
+
+assert.sameValue(Object.prototype.toString.call(TypeError.prototype), "[object Object]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/proto.js
new file mode 100644
index 0000000000..144da3600c
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/proto.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ The prototype of TypeError.prototype is Error.prototype.
+info: |
+ The value of the [[Prototype]] internal slot of each NativeError prototype
+ object is the intrinsic object %ErrorPrototype% (19.5.3).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(TypeError.prototype), Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/TypeError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/TypeError/shell.js
new file mode 100644
index 0000000000..eda1477282
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/TypeError/shell.js
@@ -0,0 +1,24 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/browser.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/constructor.js
new file mode 100644
index 0000000000..e931f1c86f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/constructor.js
@@ -0,0 +1,12 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ URIError is a constructor function.
+---*/
+
+assert.sameValue(typeof URIError, 'function', 'typeof URIError is "function"');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/instance-proto.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/instance-proto.js
new file mode 100644
index 0000000000..49d173a062
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/instance-proto.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ The prototype of URIError instances is URIError.prototype.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.getPrototypeOf(new URIError), URIError.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/is-a-constructor.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/is-a-constructor.js
new file mode 100644
index 0000000000..35b4a17cdb
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/is-a-constructor.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-ecmascript-standard-built-in-objects
+description: >
+ The URIError constructor implements [[Construct]]
+info: |
+ IsConstructor ( argument )
+
+ The abstract operation IsConstructor takes argument argument (an ECMAScript language value).
+ It determines if argument is a function object with a [[Construct]] internal method.
+ It performs the following steps when called:
+
+ If Type(argument) is not Object, return false.
+ If argument has a [[Construct]] internal method, return true.
+ Return false.
+includes: [isConstructor.js]
+features: [Reflect.construct]
+---*/
+
+assert.sameValue(isConstructor(URIError), true, 'isConstructor(URIError) must return true');
+new URIError();
+
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/is-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/is-error-object.js
new file mode 100644
index 0000000000..d37a8e88e2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/is-error-object.js
@@ -0,0 +1,16 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.4
+description: >
+ URIError instances have an [[ErrorData]] internal slot.
+info: |
+ NativeError instances are ordinary objects that inherit properties
+ from their NativeError prototype object and have an [[ErrorData]]
+ internal slot whose value is undefined
+---*/
+
+assert.sameValue(Object.prototype.toString.call(new URIError), "[object Error]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/length.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/length.js
new file mode 100644
index 0000000000..5f645e5ecd
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/length.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ URIError.length is 1.
+info: |
+ NativeError ( message )
+
+ 19.5.6.2 Properties of the NativeError Constructors
+ Besides the length property (whose value is 1) [...].
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every built-in Function object, including constructors, has a length
+ property whose value is an integer. Unless otherwise specified, this
+ value is equal to the largest number of named arguments shown in the
+ subclause headings for the function description, including optional
+ parameters. However, rest parameters shown using the form “...name”
+ are not included in the default argument count.
+
+ Unless otherwise specified, the length property of a built-in Function
+ object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+ [[Configurable]]: true }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(URIError.length, 1);
+
+verifyNotEnumerable(URIError, "length");
+verifyNotWritable(URIError, "length");
+verifyConfigurable(URIError, "length");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/name.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/name.js
new file mode 100644
index 0000000000..ef912a466b
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.1
+description: >
+ URIError.name is "URIError".
+info: |
+ 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]
+---*/
+
+assert.sameValue(URIError.name, "URIError");
+
+verifyNotEnumerable(URIError, "name");
+verifyNotWritable(URIError, "name");
+verifyConfigurable(URIError, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prop-desc.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prop-desc.js
new file mode 100644
index 0000000000..bb5ad97bce
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prop-desc.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 Bocoup. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-constructor-properties-of-the-global-object-urierror
+description: Property descriptor for URIError
+info: |
+ Every other data property described in clauses 18 through 26 and in Annex B.2
+ has the attributes { [[Writable]]: true, [[Enumerable]]: false,
+ [[Configurable]]: true } unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(this, "URIError");
+verifyWritable(this, "URIError");
+verifyConfigurable(this, "URIError");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/proto-from-ctor-realm.js
new file mode 100644
index 0000000000..c99c008a1e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/proto-from-ctor-realm.js
@@ -0,0 +1,60 @@
+// Copyright (C) 2019 Alexey Shvayka. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-nativeerror
+description: Default [[Prototype]] value derived from realm of the NewTarget.
+info: |
+ NativeError ( message )
+
+ 1. If NewTarget is undefined, let newTarget be the active function object; else let newTarget be NewTarget.
+ 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%NativeErrorPrototype%", « [[ErrorData]] »).
+ ...
+ 4. Return O.
+
+ OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] )
+
+ ...
+ 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto).
+ 3. Return ObjectCreate(proto, internalSlotsList).
+
+ GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
+
+ ...
+ 3. Let proto be ? Get(constructor, 'prototype').
+ 4. If Type(proto) is not Object, then
+ a. Let realm be ? GetFunctionRealm(constructor).
+ b. Set proto to realm's intrinsic object named intrinsicDefaultProto.
+ 5. Return proto.
+features: [cross-realm, Reflect, Symbol]
+---*/
+
+var other = $262.createRealm().global;
+var newTarget = new other.Function();
+var err;
+
+newTarget.prototype = undefined;
+err = Reflect.construct(URIError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.URIError.prototype, 'newTarget.prototype is undefined');
+
+newTarget.prototype = null;
+err = Reflect.construct(URIError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.URIError.prototype, 'newTarget.prototype is null');
+
+newTarget.prototype = true;
+err = Reflect.construct(URIError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.URIError.prototype, 'newTarget.prototype is a Boolean');
+
+newTarget.prototype = '';
+err = Reflect.construct(URIError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.URIError.prototype, 'newTarget.prototype is a String');
+
+newTarget.prototype = Symbol();
+err = Reflect.construct(URIError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.URIError.prototype, 'newTarget.prototype is a Symbol');
+
+newTarget.prototype = 0;
+err = Reflect.construct(URIError, [], newTarget);
+assert.sameValue(Object.getPrototypeOf(err), other.URIError.prototype, 'newTarget.prototype is a Number');
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/proto.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/proto.js
new file mode 100644
index 0000000000..7fd4f74bf0
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/proto.js
@@ -0,0 +1,14 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2
+description: >
+ The prototype of URIError is Error.
+info: |
+ The value of the [[Prototype]] internal slot of a NativeError constructor is the intrinsic object %Error% (19.5.1).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(URIError), Error);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype.js
new file mode 100644
index 0000000000..a1eb0c7dcb
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype.js
@@ -0,0 +1,21 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.2.1
+description: >
+ The initial value of URIError.prototype is the URIError prototype object.
+info: |
+ The initial value of NativeError.prototype is a NativeError prototype object (19.5.6.3).
+ Each NativeError constructor has a distinct prototype object.
+ This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(URIError.prototype, Object.getPrototypeOf(new URIError));
+
+verifyNotEnumerable(URIError, "prototype");
+verifyNotWritable(URIError, "prototype");
+verifyNotConfigurable(URIError, "prototype");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/browser.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/constructor.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/constructor.js
new file mode 100644
index 0000000000..94d37cc64e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/constructor.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.1
+description: >
+ The initial value of URIError.prototype.constructor is the URIError object.
+info: |
+ The initial value of the constructor property of the prototype for a given NativeError
+ constructor is the corresponding intrinsic object %NativeError% (19.5.6.1).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(URIError.prototype.constructor, URIError);
+
+verifyNotEnumerable(URIError.prototype, "constructor");
+verifyWritable(URIError.prototype, "constructor");
+verifyConfigurable(URIError.prototype, "constructor");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/message.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/message.js
new file mode 100644
index 0000000000..58eb18e66f
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/message.js
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.2
+description: >
+ The initial value of URIError.prototype.message is the empty string.
+info: |
+ The initial value of the message property of the prototype for a given NativeError
+ constructor is the empty String.
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(URIError.prototype.message, "");
+
+verifyNotEnumerable(URIError.prototype, "message");
+verifyWritable(URIError.prototype, "message");
+verifyConfigurable(URIError.prototype, "message");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/name.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/name.js
new file mode 100644
index 0000000000..3a8b5a369e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/name.js
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3.3
+description: >
+ The initial value of URIError.prototype.name is "URIError".
+info: |
+ The initial value of the name property of the prototype for a given NativeError
+ constructor is a string consisting of the name of the constructor (the name used
+ instead of NativeError).
+
+ 17 ECMAScript Standard Built-in Objects:
+ Every other data property described in clauses 18 through 26 and in Annex B.2 has
+ the attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+ unless otherwise specified.
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(URIError.prototype.name, "URIError");
+
+verifyNotEnumerable(URIError.prototype, "name");
+verifyWritable(URIError.prototype, "name");
+verifyConfigurable(URIError.prototype, "name");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/not-error-object.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/not-error-object.js
new file mode 100644
index 0000000000..abcbfa6f01
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/not-error-object.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ URIError.prototype is not an error object instance.
+info: |
+ Each NativeError prototype object is an ordinary object. It is not an
+ Error instance and does not have an [[ErrorData]] internal slot.
+---*/
+
+assert.sameValue(Object.prototype.toString.call(URIError.prototype), "[object Object]");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/proto.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/proto.js
new file mode 100644
index 0000000000..35a68affd4
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/proto.js
@@ -0,0 +1,15 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+es6id: 19.5.6.3
+description: >
+ The prototype of URIError.prototype is Error.prototype.
+info: |
+ The value of the [[Prototype]] internal slot of each NativeError prototype
+ object is the intrinsic object %ErrorPrototype% (19.5.3).
+---*/
+
+assert.sameValue(Object.getPrototypeOf(URIError.prototype), Error.prototype);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/shell.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/prototype/shell.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/URIError/shell.js b/js/src/tests/test262/built-ins/NativeErrors/URIError/shell.js
new file mode 100644
index 0000000000..eda1477282
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/URIError/shell.js
@@ -0,0 +1,24 @@
+// GENERATED, DO NOT EDIT
+// file: isConstructor.js
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: |
+ Test if a given function is a constructor function.
+defines: [isConstructor]
+features: [Reflect.construct]
+---*/
+
+function isConstructor(f) {
+ if (typeof f !== "function") {
+ throw new Test262Error("isConstructor invoked with a non-function value");
+ }
+
+ try {
+ Reflect.construct(function(){}, [], f);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
diff --git a/js/src/tests/test262/built-ins/NativeErrors/browser.js b/js/src/tests/test262/built-ins/NativeErrors/browser.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/browser.js
diff --git a/js/src/tests/test262/built-ins/NativeErrors/cause_property_native_error.js b/js/src/tests/test262/built-ins/NativeErrors/cause_property_native_error.js
new file mode 100644
index 0000000000..bbc5812e4e
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/cause_property_native_error.js
@@ -0,0 +1,47 @@
+// Copyright (C) 2021 Chengzhong Wu. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: NativeError constructor creates own cause property
+info: |
+ NativeError ( message[ , options ] )
+
+ ...
+ 4. Perform ? InstallErrorCause(O, options).
+ ...
+
+ 20.5.8.1 InstallErrorCause ( O, options )
+
+ 1. If Type(options) is Object and ? HasProperty(options, "cause") is true, then
+ a. Let cause be ? Get(options, "cause").
+ b. Perform ! CreateNonEnumerableDataPropertyOrThrow(O, "cause", cause).
+ ...
+
+esid: sec-nativeerror
+features: [error-cause]
+includes: [propertyHelper.js]
+---*/
+
+var nativeErrors = [
+ EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
+];
+
+for (var i = 0; i < nativeErrors.length; ++i) {
+ var nativeError = nativeErrors[i];
+
+ var message = "my-message";
+ var cause = { message: "my-cause" };
+ var error = new nativeError(message, { cause });
+
+ verifyProperty(error, "cause", {
+ configurable: true,
+ enumerable: false,
+ writable: true,
+ value: cause,
+ });
+
+ verifyProperty(new nativeError(message), "cause", undefined);
+ verifyProperty(new nativeError(message, { cause: undefined }), "cause", { value: undefined });
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/message_property_native_error.js b/js/src/tests/test262/built-ins/NativeErrors/message_property_native_error.js
new file mode 100644
index 0000000000..8759245e84
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/message_property_native_error.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: NativeError constructor creates own message property
+info: |
+ 19.5.6.1.1 NativeError ( message )
+
+ ...
+ 4.
+ ...
+ c. Let msgDesc be the PropertyDescriptor{[[Value]]: msg, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}.
+ d. Let status be DefinePropertyOrThrow(O, "message", msgDesc).
+es6id: 19.5.6.1.1
+includes: [propertyHelper.js]
+---*/
+
+var nativeErrors = [
+ EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError
+];
+
+for (var i = 0; i < nativeErrors.length; ++i) {
+ var nativeError = nativeErrors[i];
+
+ var message = "my-message";
+ var error = new nativeError(message);
+
+ verifyEqualTo(error, "message", message);
+ verifyNotEnumerable(error, "message");
+ verifyWritable(error, "message");
+ verifyConfigurable(error, "message");
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/test262/built-ins/NativeErrors/shell.js b/js/src/tests/test262/built-ins/NativeErrors/shell.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/js/src/tests/test262/built-ins/NativeErrors/shell.js