blob: d742cc093be44f48ff1da516957727961897dd4c [file] [log] [blame] [edit]
var log = [];
var logExpected = ["source", "iterator", "target", "target-key", "iterator-step", "iterator-done", "target-key-tostring", "set"];
function source() {
log.push("source");
var iterator = {
next: function() {
log.push("iterator-step");
return {
get done() {
log.push("iterator-done");
return true;
},
get value() {
// Note: This getter shouldn't be called.
log.push("iterator-value");
},
};
},
};
var source = {};
source[Symbol.iterator] = function() {
log.push("iterator");
return iterator;
};
return source;
}
function target() {
log.push("target");
return {
set q(v) {
log.push("set");
},
};
}
function targetKey() {
log.push("target-key");
return {
toString: function() {
log.push("target-key-tostring");
return "q";
},
};
}
for (var i = 0; i < testLoopCount; i++) {
log = [];
([...target()[targetKey()]] = source());
if (log.toString() !== logExpected.toString())
throw new Error(`Bad value: ${log}!`);
}