blob: b6e6b3ec761ddb4335654367f7b5ee2d756e74ab [file] [log] [blame]
// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 26.1.11
description: >
Returns keys in their corresponding order.
info: |
26.1.11 Reflect.ownKeys ( target )
...
2. Let keys be target.[[OwnPropertyKeys]]().
3. ReturnIfAbrupt(keys).
4. Return CreateArrayFromList(keys).
9.1.12 [[OwnPropertyKeys]] ( )
1. Let keys be a new empty List.
2. For each own property key P of O that is an integer index, in ascending
numeric index order
a. Add P as the last element of keys.
3. For each own property key P of O that is a String but is not an integer
index, in property creation order
a. Add P as the last element of keys.
4. For each own property key P of O that is a Symbol, in property creation
order
a. Add P as the last element of keys.
5. Return keys.
features: [Reflect, Symbol]
---*/
var o = {};
o.p1 = 42;
o.p2 = 43;
var s1 = Symbol('1');
var s2 = Symbol('a');
o[s1] = 44;
o[s2] = 45;
o[2] = 46;
o[0] = 47;
o[1] = 48;
var result = Reflect.ownKeys(o);
assert.sameValue(result.length, 7);
assert.sameValue(result[0], '0');
assert.sameValue(result[1], '1');
assert.sameValue(result[2], '2');
assert.sameValue(result[3], 'p1');
assert.sameValue(result[4], 'p2');
assert.sameValue(result[5], s1);
assert.sameValue(result[6], s2);