/******************************************************************************
Sloppy description
- No problem in ['node 0.12', 'firefox']
- Fails in ['iojs', 'new chrome']
******************************************************************************/
// PREPARE
var defaultKeys = { '0': '', '1': '', '2': '', '3': '' };
var ROUNDS = 3;
// RUN
for (var idx=0; idx<ROUNDS; idx++) {
// BUG: assignment gets optimized away for ROUNDS > 2
var keys = { '0': '', '1': '', '2': '', '3': '' };
// ASSERT
assertDeepEqual(keys, defaultKeys);
for(var i=0; i<3; i++) {
keys[i] = 'foobar';
}
}
/******************************************************************************
ASSERT deep equal
******************************************************************************/
function assertDeepEqual (keys, defaultKeys, msg) {
if (keys[0] === defaultKeys[0] &&
keys[1] === defaultKeys[1] &&
keys[2] === defaultKeys[2] &&
keys[3] === defaultKeys[3]) {
} else {
keys = JSON.stringify(keys,null,2);
defaultKeys = JSON.stringify(defaultKeys,null,2);
console.debug(keys+' === '+defaultKeys);
}
}