Support caching of next method in for-of and built-in methods. (#3939)
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -119,3 +119,41 @@ var i = 0;
|
||||
for (var a of obj) {
|
||||
assert (a === i++);
|
||||
}
|
||||
|
||||
var status = 0;
|
||||
i = 0;
|
||||
|
||||
function yieldNext() {
|
||||
++status
|
||||
assert(status === 3 || status === 6 || status === 9)
|
||||
return {
|
||||
get value() {
|
||||
++status
|
||||
assert(status === 4 || status === 7)
|
||||
return "Res"
|
||||
},
|
||||
done: ++i >= 3
|
||||
}
|
||||
}
|
||||
|
||||
obj = {
|
||||
[Symbol.iterator]() {
|
||||
assert(++status === 1)
|
||||
return {
|
||||
get next() {
|
||||
assert(++status === 2)
|
||||
return yieldNext
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getX() {
|
||||
++status
|
||||
assert(status === 5 || status === 8)
|
||||
return { x:0 }
|
||||
}
|
||||
|
||||
for (getX().x of obj)
|
||||
;
|
||||
assert(status == 9)
|
||||
|
||||
@@ -360,6 +360,7 @@
|
||||
<test id="language/statements/continue/simple-and-labeled.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/body-dstr-assign-error.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/body-dstr-assign.js"><reason></reason></test>
|
||||
<test id="language/statements/for-of/iterator-next-reference.js"><reason>ES spec change: next method must be cached</reason></test>
|
||||
<test id="language/statements/for/S12.6.3_A9.1.js"><reason></reason></test>
|
||||
<test id="language/statements/for/S12.6.3_A9.js"><reason></reason></test>
|
||||
<test id="language/statements/generators/has-instance.js"><reason></reason></test>
|
||||
|
||||
Reference in New Issue
Block a user