blob: ccd6e697588f19e5400c8df202c5876fb1162947 [file] [log] [blame] [edit]
var log = [];
var logExpected = ["source", "iterator", "target-foo", "iterator-step", "iterator-done", "default-value", "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;
}
var target = {
get foo() {
log.push("target-foo");
return {
get bar() {
// Note: This getter shouldn't be called.
log.push("target-bar");
},
set bar(v) {
log.push("set");
},
};
},
};
function defaultValue() {
log.push("default-value");
}
(function() {
for (var i = 0; i < testLoopCount; i++) {
log = [];
([target.foo.bar = defaultValue()] = source());
if (log.toString() !== logExpected.toString())
throw new Error(`Bad value: ${log}!`);
}
})();