Implement CreateAsyncFromSyncIterator (#4802)

JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik robert.fancsik@h-lab.eu
This commit is contained in:
Robert Fancsik
2021-10-28 12:45:47 +02:00
committed by GitHub
parent dd77ec914a
commit d2388e907f
24 changed files with 1015 additions and 418 deletions
@@ -0,0 +1,210 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
async function f() {
let arr_idx = 0;
for await (let a of [0, 1, 2, 3]) {
assert(arr_idx++ == a);
}
let char_code = "a".charCodeAt(0);
for await (let a of "abc") {
assert(char_code++ == a.charCodeAt(0));
}
let set_idx = 0;
for await (let a of new Set([0, 1, 2, 3])) {
assert(set_idx++ == a);
}
let map_idx = 0;
for await (let [key, value] of new Map([0, 1, 2, 3].entries())) {
assert(map_idx++ == value);
}
}
async function* asyncg(obj) {
yield* obj;
}
async function f1() {
var caught = false;
var iter = asyncg({
get [Symbol.iterator]() {
throw "Symbol.iteratorError"
},
});
iter.next().catch(e => {
caught = true;
assert(e === "Symbol.iteratorError")
}).then(e => {
assert(caught)
});
}
async function f2() {
var caught = false;
var iter = asyncg({
[Symbol.iterator]() {
return {
next() {
throw "nextError";
},
};
},
});
iter.next().catch(e => {
caught = true;
assert(e === "nextError")
}).then(e => {
assert(caught)
});
}
async function f3() {
var caught = false;
var iter = asyncg({
[Symbol.iterator]() {
return {
next() {
return {
get value() {
throw "valueError"
},
done: false
};
},
};
},
});
iter.next().catch(e => {
caught = true;
assert(e === "valueError")
}).then(e => {
assert(caught)
});
}
async function f4() {
var caught = false;
var iter = asyncg({
[Symbol.iterator]() {
return {
next() {
return {
value: "value",
get done() {
throw "doneError"
},
};
},
};
},
});
iter.next().catch(e => {
caught = true;
assert(e === "doneError")
}).then(e => {
assert(caught)
});
}
async function f5() {
var caught = false;
var iter = asyncg({
[Symbol.iterator]() {
return {
next() {
return {
value: 1,
done: false
};
},
get return () {
throw "returnError"
}
};
}
});
iter.next().then(function (res) {
assert(res.value === 1);
assert(!res.done);
iter.return().catch(e => {
caught = true;
assert(e == "returnError");
}).then(e => {
assert(caught);
});
});
}
async function f6() {
var caught = false;
var iter = asyncg({
[Symbol.iterator]() {
return {
next() {
return {
value: 1,
done: false
};
},
get throw () {
throw "throwError"
}
};
}
});
iter.next().then(function (res) {
assert(res.value === 1);
assert(!res.done);
iter.throw().catch(e => {
caught = true;
assert(e == "throwError");
}).then(e => {
assert(caught);
});
});
}
const tests = [f, f1, f2, f3, f4, f5, f6];
for (let t of tests) {
t();
}
+1 -1
View File
@@ -78,7 +78,7 @@ rejects.catch(result => { assert (result === "baz"); });
var closed = true;
delete Promise.resolve;
Promise.all(createIterable([1,2,3], {'return': function () { closed = false; }}));
assert (closed);
assert (!closed);
var arr = [];
Object.defineProperty(arr, Symbol.species, { get: function () { assert(false) }});
+1 -1
View File
@@ -100,7 +100,7 @@ rejects.then(result => {
var closed = true;
delete Promise.resolve;
Promise.allSettled(createIterable([1,2,3], {'return': function () { closed = false; }}));
assert (closed);
assert (!closed);
var arr = [];
Object.defineProperty(arr, Symbol.species, { get: function () { assert(false) }});
+1 -1
View File
@@ -82,7 +82,7 @@ rejects.catch(result => { assert (result == "AggregateError"); });
var closed = true;
delete Promise.resolve;
Promise.any(createIterable([1,2,3], {'return': function () { closed = false; }}));
assert (closed);
assert (!closed);
var arr = [];
Object.defineProperty(arr, Symbol.species, { get: function () { assert(false) }});
+1 -1
View File
@@ -66,7 +66,7 @@ rejects.catch(result => { assert (result === "baz"); });
var closed = true;
delete Promise.resolve;
Promise.race(createIterable([1,2,3], {'return': function () { closed = false; }}));
assert (closed);
assert (!closed);
var arr = [];
Object.defineProperty(arr, Symbol.species, { get: function () { assert(false) }});
+17 -242
View File
@@ -6476,31 +6476,6 @@
features: [async-iteration]
https://github.com/tc39/proposal-async-iteration
-->
<test id="built-ins/AsyncFromSyncIteratorPrototype/next/absent-value-not-passed.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/next/iterator-result-poisoned-done.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/next/iterator-result-poisoned-value.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/next/iterator-result-prototype.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/next/iterator-result-rejected.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/next/iterator-result-unwrap-promise.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/absent-value-not-passed.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/iterator-result-poisoned-done.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/iterator-result-poisoned-value.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/iterator-result-unwrap-promise.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/iterator-result.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/poisoned-get-return.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/poisoned-return.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/result-object-error.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/return-null.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/return/return-undefined.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/iterator-result-poisoned-done.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/iterator-result-poisoned-value.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/iterator-result-unwrap-promise.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/iterator-result.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/poisoned-get-throw.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/poisoned-throw.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/result-object-error.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/throw-null.js"><reason></reason></test>
<test id="built-ins/AsyncFromSyncIteratorPrototype/throw/throw-undefined.js"><reason></reason></test>
<test id="built-ins/AsyncGeneratorFunction/instance-await-expr-in-param.js"><reason></reason></test>
<test id="built-ins/AsyncGeneratorFunction/instance-yield-expr-in-param.js"><reason></reason></test>
<test id="built-ins/AsyncGeneratorPrototype/next/request-queue-await-order.js"><reason></reason></test>
@@ -6547,57 +6522,21 @@
<test id="language/expressions/async-generator/named-eval-var-scope-syntax-err.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-promise-reject-next.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-sync-next.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-sync-return.js"><reason></reason></test>
<test id="language/expressions/async-generator/named-yield-star-sync-throw.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-promise-reject-next.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-getiter-async-return-method-is-null.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-getiter-async-throw-method-is-null.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-sync-next.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-sync-return.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-star-sync-throw.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-thenable-create-resolving-functions-reject.js"><reason></reason></test>
<test id="language/expressions/async-generator/yield-thenable-create-resolving-functions-resolve.js"><reason></reason></test>
<test id="language/expressions/await/for-await-of-interleaved.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-promise-reject-next.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-sync-next.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-sync-return.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method-static/yield-star-sync-throw.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-promise-reject-next.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-sync-next.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-sync-return.js"><reason></reason></test>
<test id="language/expressions/class/async-gen-method/yield-star-sync-throw.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/expressions/class/dstr/async-private-gen-meth-ary-name-iter-val.js"><reason></reason></test>
@@ -7059,16 +6998,7 @@
<test id="language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-promise-reject-next.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-sync-next.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-sync-return.js"><reason></reason></test>
<test id="language/expressions/object/method-definition/async-gen-yield-star-sync-throw.js"><reason></reason></test>
<test id="language/module-code/top-level-await/syntax/for-await-await-expr-array-literal.js"><reason></reason></test>
<test id="language/module-code/top-level-await/syntax/for-await-await-expr-func-expression.js"><reason></reason></test>
<test id="language/module-code/top-level-await/syntax/for-await-await-expr-identifier.js"><reason></reason></test>
@@ -7085,43 +7015,15 @@
<test id="language/statements/async-generator/return-undefined-implicit-and-explicit.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-promise-reject-next.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-return-then-getter-ticks.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-async-from-sync-iterator-inaccessible.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-return-then-getter-ticks.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-sync-next.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-sync-return.js"><reason></reason></test>
<test id="language/statements/async-generator/yield-star-sync-throw.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-promise-reject-next.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-sync-next.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-sync-return.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method-static/yield-star-sync-throw.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-catch.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-promise-reject-next-yield-star-sync-iterator.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-promise-reject-next.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-getiter-async-null-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-getiter-async-undefined-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-getiter-sync-get-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-getiter-sync-returns-abrupt.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-sync-next.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-sync-return.js"><reason></reason></test>
<test id="language/statements/class/async-gen-method/yield-star-sync-throw.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-ary-init-iter-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js"><reason></reason></test>
<test id="language/statements/class/dstr/async-private-gen-meth-ary-name-iter-val.js"><reason></reason></test>
@@ -7556,152 +7458,8 @@
<test id="language/statements/class/elements/same-line-async-gen-static-private-methods-with-fields.js"><reason></reason></test>
<test id="language/statements/class/elements/same-line-async-gen-static-private-methods.js"><reason></reason></test>
<test id="language/statements/class/elements/syntax/valid/grammar-static-private-async-gen-meth-prototype.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-from-sync-iterator-continuation-abrupt-completion-get-constructor.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elem-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-elision-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-elision-next-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-ary-ptrn-rest-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-list-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-eval-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-const-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elem-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-elision-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-elision-next-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-ary-ptrn-rest-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-list-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-eval-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-let-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elem-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-elision-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-elision-next-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-ary-ptrn-rest-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-list-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-eval-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-func-dstr-var-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-prop-ref-user-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-put-unresolvable-strict.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-elision-iter-nrml-close-null.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-list-nrml-close-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-list-thrw-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-elem-trlg-iter-rest-nrml-close-skip.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-array-rest-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-id-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-init-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-elem-target-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-nested-array-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-decl-dstr-obj-prop-nested-obj-yield-expr.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elem-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-elision-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-elision-next-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-ary-ptrn-rest-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-list-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-eval-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-const-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elem-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-elision-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-elision-next-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-ary-ptrn-rest-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-list-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-eval-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-let-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-init-iter-get-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elem-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-elision-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-elision-next-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-close.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-step-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-ary-ptrn-rest-id-iter-val-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-list-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-eval-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-get-value-err.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-throws.js"><reason></reason></test>
<test id="language/statements/for-await-of/async-gen-dstr-var-obj-ptrn-prop-id-init-unresolvable.js"><reason></reason></test>
<test id="language/statements/for-await-of/let-block-with-newline.js"><reason></reason></test>
<test id="language/statements/for-await-of/let-identifier-with-newline.js"><reason></reason></test>
<test id="language/statements/for-await-of/ticks-with-sync-iter-resolved-promise-and-constructor-lookup.js"><reason></reason></test>
<test id="language/statements/switch/syntax/redeclaration/async-function-name-redeclaration-attempt-with-async-generator.js"><reason></reason></test>
<test id="language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-function.js"><reason></reason></test>
<test id="language/statements/switch/syntax/redeclaration/async-generator-name-redeclaration-attempt-with-async-generator.js"><reason></reason></test>
@@ -7876,6 +7634,18 @@
<test id="language/global-code/script-decl-var-err.js"><reason></reason></test>
<!-- Missing test262 support in JerryScript REPL - missing $262 object -->
<!-- No longer valid tests: since ECMAScript v11 GetIterator operator should be performed
before accessing "resolve" property
-->
<test id="built-ins/Promise/all/invoke-resolve-get-error.js"><reason></reason></test>
<test id="built-ins/Promise/all/resolve-non-callable.js"><reason></reason></test>
<test id="built-ins/Promise/allSettled/invoke-resolve-get-error.js"><reason></reason></test>
<test id="built-ins/Promise/allSettled/resolve-non-callable.js"><reason></reason></test>
<test id="built-ins/Promise/any/invoke-resolve-get-error.js"><reason></reason></test>
<test id="built-ins/Promise/any/resolve-non-callable.js"><reason></reason></test>
<test id="built-ins/Promise/race/invoke-resolve-get-error.js"><reason></reason></test>
<test id="built-ins/Promise/race/resolve-non-callable.js"><reason></reason></test>
<!-- Missing test262 support in JerryScript REPL - missing $262.detachArrayBuffer function
https://github.com/tc39/test262/blob/main/INTERPRETING.md#host-defined-functions
-->
@@ -7886,4 +7656,9 @@
<test id="built-ins/Atomics/waitAsync/bigint/null-bufferdata-throws.js"><reason></reason></test>
<test id="built-ins/Atomics/waitAsync/null-bufferdata-throws.js"><reason></reason></test>
<!-- END - Missing test262 support in JerryScript REPL - missing $262.detachArrayBuffer function -->
<!-- Missing $test262.IsHTMLDDA support
-->
<test id="annexB/language/statements/for-await-of/iterator-close-return-emulates-undefined-throws-when-called.js"><reason></reason></test>
<!-- END - Missing $test262.IsHTMLDDA support -->
</excludeList>