| // Copyright (C) 2016 Michael Ficarra. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| esid: sec-object-initializer-runtime-semantics-propertydefinitionevaluation |
| description: > |
| Evaluation of PropertyDefinitionList occurs in order, and each |
| PropertyDefinition's PropertyName is evaluated before its |
| AssignmentExpression. |
| ---*/ |
| |
| var counter = 0; |
| var o = { |
| [++counter]: ++counter, |
| [++counter]: ++counter, |
| [++counter]: ++counter, |
| } |
| |
| var keys = Object.keys(o); |
| |
| assert.sameValue(keys.length, 3, '3 PropertyDefinitions should result in 3 properties'); |
| assert.sameValue(keys[0], '1'); |
| assert.sameValue(o[keys[0]], 2); |
| assert.sameValue(keys[1], '3'); |
| assert.sameValue(o[keys[1]], 4); |
| assert.sameValue(keys[2], '5'); |
| assert.sameValue(o[keys[2]], 6); |