summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndré Bargull <andre.bargull@gmail.com>2017-09-16 17:00:54 +0200
committerAndré Bargull <andre.bargull@gmail.com>2017-09-16 17:00:54 +0200
commit86da17166310709aa0bd5d23ba2cb2cff13e87a9 (patch)
tree67b61aedaaca276c01b29c90a3ad33606f80bbd5 /src
parent765f273ac41ea2927cf00ae1812795683015117a (diff)
downloadqtdeclarative-testsuites-86da17166310709aa0bd5d23ba2cb2cff13e87a9.tar.gz
Change case-files for destructuring-with-yield to not rely on destructuring target evaluation order
Diffstat (limited to 'src')
-rw-r--r--src/dstr-assignment-for-await/array-elem-iter-rtrn-close-null.case19
-rw-r--r--src/dstr-assignment/array-elem-iter-rtrn-close-null.case20
-rw-r--r--src/dstr-assignment/array-elem-iter-rtrn-close.case19
-rw-r--r--src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-err.case17
-rw-r--r--src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-null.case18
-rw-r--r--src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close.case12
6 files changed, 79 insertions, 26 deletions
diff --git a/src/dstr-assignment-for-await/array-elem-iter-rtrn-close-null.case b/src/dstr-assignment-for-await/array-elem-iter-rtrn-close-null.case
index 93d4c0402..10d18a136 100644
--- a/src/dstr-assignment-for-await/array-elem-iter-rtrn-close-null.case
+++ b/src/dstr-assignment-for-await/array-elem-iter-rtrn-close-null.case
@@ -4,12 +4,6 @@
desc: >
IteratorClose throws a TypeError when `return` returns a non-Object value
info: |
- AssignmentElement : DestructuringAssignmentTarget Initializer
- 1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then
- a. Let lref be the result of evaluating DestructuringAssignmentTarget.
- b. ReturnIfAbrupt(lref).
- [...]
-
ArrayAssignmentPattern : [ AssignmentElementList ]
[...]
@@ -32,8 +26,15 @@ esid: sec-runtime-semantics-destructuringassignmentevaluation
//- setup
let unreachable = 0;
+let nextCount = 0;
+let returnCount = 0;
let iterator = {
+ next() {
+ nextCount += 1;
+ return {done: false, value: undefined};
+ },
return() {
+ returnCount += 1;
return null;
}
};
@@ -43,17 +44,21 @@ let iterable = {
}
};
//- elems
-[ {}[yield] ]
+[ {} = yield ]
//- vals
iterable
//- body
unreachable += 1;
//- teardown
iter.next().then(result => {
+ assert.sameValue(nextCount, 1);
+ assert.sameValue(returnCount, 0);
assert.sameValue(result.value, undefined);
assert.sameValue(result.done, false);
iter.return().then(() => $DONE('Promise incorrectly fulfilled.'), ({ constructor }) => {
+ assert.sameValue(nextCount, 1);
+ assert.sameValue(returnCount, 1);
assert.sameValue(unreachable, 0);
assert.sameValue(constructor, TypeError);
}).then($DONE, $DONE);
diff --git a/src/dstr-assignment/array-elem-iter-rtrn-close-null.case b/src/dstr-assignment/array-elem-iter-rtrn-close-null.case
index 817ca7b6b..c524b3706 100644
--- a/src/dstr-assignment/array-elem-iter-rtrn-close-null.case
+++ b/src/dstr-assignment/array-elem-iter-rtrn-close-null.case
@@ -26,19 +26,26 @@ esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/
//- setup
-var iterable = {};
+var nextCount = 0;
+var returnCount = 0;
+var unreachable = 0;
var iterator = {
+ next: function() {
+ nextCount += 1;
+ return {done: false, value: undefined};
+ },
return: function() {
+ returnCount += 1;
return null;
}
};
-var iter;
+var iterable = {};
iterable[Symbol.iterator] = function() {
return iterator;
};
function* g() {
//- elems
-[ {}[yield] ]
+[ {} = yield ]
//- vals
iterable
//- body
@@ -46,9 +53,14 @@ iterable
//- teardown
}
-iter = g();
+var iter = g();
iter.next();
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 0);
assert.throws(TypeError, function() {
iter.return();
});
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 1);
+assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
diff --git a/src/dstr-assignment/array-elem-iter-rtrn-close.case b/src/dstr-assignment/array-elem-iter-rtrn-close.case
index 7f1c482fe..1726266e2 100644
--- a/src/dstr-assignment/array-elem-iter-rtrn-close.case
+++ b/src/dstr-assignment/array-elem-iter-rtrn-close.case
@@ -25,12 +25,16 @@ esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/
//- setup
+var nextCount = 0;
var returnCount = 0;
var unreachable = 0;
var thisValue = null;
var args = null;
-var iterable = {};
var iterator = {
+ next: function() {
+ nextCount += 1;
+ return {done: false, value: undefined};
+ },
return: function() {
returnCount += 1;
thisValue = this;
@@ -38,24 +42,29 @@ var iterator = {
return {};
}
};
-var iter, result;
+var iterable = {};
iterable[Symbol.iterator] = function() {
return iterator;
};
function* g() {
//- elems
-[ {}[yield] ]
+[ {} = yield ]
//- vals
iterable
//- body
unreachable += 1;
//- teardown
}
-iter = g();
+var iter = g();
iter.next();
-result = iter.return(777);
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 0);
+
+var result = iter.return(777);
+
+assert.sameValue(nextCount, 1);
assert.sameValue(returnCount, 1);
assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
assert.sameValue(result.value, 777);
diff --git a/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-err.case b/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-err.case
index 628e827e4..1c47fafd5 100644
--- a/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-err.case
+++ b/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-err.case
@@ -30,24 +30,28 @@ esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/
//- setup
+var nextCount = 0;
var returnCount = 0;
var unreachable = 0;
-var iterable = {};
var iterator = {
+ next: function() {
+ nextCount += 1;
+ return {done: false, value: undefined};
+ },
return: function() {
returnCount += 1;
throw new Test262Error();
}
};
-var iter;
+var iterable = {};
iterable[Symbol.iterator] = function() {
return iterator;
};
function* g() {
//- elems
-[ {}[yield] , ]
+[ {} = yield , ]
//- vals
iterable
//- body
@@ -55,11 +59,14 @@ unreachable += 1;
//- teardown
}
-iter = g();
+var iter = g();
iter.next();
+
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 0);
assert.throws(Test262Error, function() {
iter.return();
});
-
+assert.sameValue(nextCount, 1);
assert.sameValue(returnCount, 1);
assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
diff --git a/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-null.case b/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-null.case
index 8a807a315..73ac19352 100644
--- a/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-null.case
+++ b/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close-null.case
@@ -32,28 +32,38 @@ esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/
//- setup
-var iterable = {};
+var nextCount = 0;
+var returnCount = 0;
var iterator = {
+ next: function() {
+ nextCount += 1;
+ return {done: false, value: undefined};
+ },
return: function() {
+ returnCount += 1;
return null;
}
};
-var iter;
+var iterable = {};
iterable[Symbol.iterator] = function() {
return iterator;
};
function* g() {
//- elems
- [ {}[yield] , ]
+ [ {} = yield , ]
//- vals
iterable
//- teardown
}
-iter = g();
+var iter = g();
iter.next();
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 0);
assert.throws(TypeError, function() {
iter.return();
});
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 1);
diff --git a/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close.case b/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close.case
index c7c10a93c..5e1ab2f44 100644
--- a/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close.case
+++ b/src/dstr-assignment/array-elem-trlg-iter-list-rtrn-close.case
@@ -31,12 +31,17 @@ esid: sec-runtime-semantics-destructuringassignmentevaluation
---*/
//- setup
+var nextCount = 0;
var returnCount = 0;
var unreachable = 0;
var thisValue = null;
var args = null;
var iterable = {};
var iterator = {
+ next: function() {
+ nextCount += 1;
+ return {done: false, value: undefined};
+ },
return: function() {
returnCount += 1;
thisValue = this;
@@ -52,7 +57,7 @@ iterable[Symbol.iterator] = function() {
function* g() {
//- elems
-[ {}[yield] , ]
+[ {} = yield , ]
//- vals
iterable
//- body
@@ -62,8 +67,13 @@ iterable
iter = g();
iter.next();
+
+assert.sameValue(nextCount, 1);
+assert.sameValue(returnCount, 0);
+
result = iter.return(888);
+assert.sameValue(nextCount, 1);
assert.sameValue(returnCount, 1);
assert.sameValue(unreachable, 0, 'Unreachable statement was not executed');
assert.sameValue(result.value, 888);