| 15.2.3.4-0-1.js | 
          ---
es5id: 15.2.3.4-0-1
description: Object.getOwnPropertyNames must exist as a function
--- | 
          360 | 
        
        
          | 15.2.3.4-0-2.js | 
          ---
es5id: 15.2.3.4-0-2
description: >
    Object.getOwnPropertyNames must exist as a function taking 1
    parameter
--- | 
          378 | 
        
        
          | 15.2.3.4-1-2.js | 
          ---
es5id: 15.2.3.4-1-2
description: Object.getOwnPropertyNames throws TypeError if 'O' is undefined
--- | 
          352 | 
        
        
          | 15.2.3.4-1-3.js | 
          ---
es5id: 15.2.3.4-1-3
description: Object.getOwnPropertyNames throws TypeError if 'O' is null
--- | 
          342 | 
        
        
          | 15.2.3.4-1-4.js | 
          ---
es5id: 15.2.3.4-1-4
description: >
    Object.getOwnPropertyNames does not throw TypeError if 'O' is a
    boolean
--- | 
          320 | 
        
        
          | 15.2.3.4-1-5.js | 
          ---
es5id: 15.2.3.4-1-5
description: >
    Object.getOwnPropertyNames does not throw TypeError if 'O' is a
    string
--- | 
          320 | 
        
        
          | 15.2.3.4-1.js | 
          ---
es5id: 15.2.3.4-1
description: >
    Object.getOwnPropertyNames does not throw TypeError if type of
    first param is not Object
--- | 
          332 | 
        
        
          | 15.2.3.4-2-1.js | 
          ---
es5id: 15.2.3.4-2-1
description: >
    Object.getOwnPropertyNames - returned array is an array according
    to Array.isArray
--- | 
          423 | 
        
        
          | 15.2.3.4-2-2.js | 
          ---
es5id: 15.2.3.4-2-2
description: Object.getOwnPropertyNames - returned array is an instance of Array
--- | 
          402 | 
        
        
          | 15.2.3.4-2-3.js | 
          ---
es5id: 15.2.3.4-2-3
description: >
    Object.getOwnPropertyNames - length of returned array is
    initialized to 0
--- | 
          402 | 
        
        
          | 15.2.3.4-2-4.js | 
          ---
es5id: 15.2.3.4-2-4
description: >
    Object.getOwnPropertyNames - returned array is the standard
    built-in constructor
--- | 
          575 | 
        
        
          | 15.2.3.4-3-1.js | 
          ---
es5id: 15.2.3.4-3-1
description: >
    Object.getOwnPropertyNames - elements of the returned array start
    from index 0
--- | 
          477 | 
        
        
          | 15.2.3.4-4-1.js | 
          ---
es5id: 15.2.3.4-4-1
description: Object.getOwnPropertyNames returns array of property names (Global)
--- | 
          866 | 
        
        
          | 15.2.3.4-4-2.js | 
          ---
es5id: 15.2.3.4-4-2
description: Object.getOwnPropertyNames returns array of property names (Object)
--- | 
          1211 | 
        
        
          | 15.2.3.4-4-36.js | 
          ---
es5id: 15.2.3.4-4-36
description: >
    Object.getOwnPropertyNames - inherited data properties are not
    pushed into the returned array
--- | 
          553 | 
        
        
          | 15.2.3.4-4-37.js | 
          ---
es5id: 15.2.3.4-4-37
description: >
    Object.getOwnPropertyNames - inherited accessor properties are not
    pushed into the returned array
--- | 
          647 | 
        
        
          | 15.2.3.4-4-38.js | 
          ---
es5id: 15.2.3.4-4-38
description: >
    Object.getOwnPropertyNames - own data properties are pushed into
    the returned array
--- | 
          420 | 
        
        
          | 15.2.3.4-4-39.js | 
          ---
es5id: 15.2.3.4-4-39
description: >
    Object.getOwnPropertyNames - own accessor properties are pushed
    into the returned array
--- | 
          512 | 
        
        
          | 15.2.3.4-4-40.js | 
          ---
es5id: 15.2.3.4-4-40
description: >
    Object.getOwnPropertyNames - inherited data property of String
    object 'O' is not pushed into the returned array
--- | 
          543 | 
        
        
          | 15.2.3.4-4-41.js | 
          ---
es5id: 15.2.3.4-4-41
description: >
    Object.getOwnPropertyNames - inherited accessor property of String
    object 'O' is not pushed into the returned array
--- | 
          634 | 
        
        
          | 15.2.3.4-4-42.js | 
          ---
es5id: 15.2.3.4-4-42
description: >
    Object.getOwnPropertyNames - own data property of String object
    'O' is pushed into the returned array
--- | 
          664 | 
        
        
          | 15.2.3.4-4-43.js | 
          ---
es5id: 15.2.3.4-4-43
description: >
    Object.getOwnPropertyNames - own accessor property of String
    object 'O' is pushed into the returned array
--- | 
          695 | 
        
        
          | 15.2.3.4-4-44.js | 
          ---
es5id: 15.2.3.4-4-44
description: >
    Object.getOwnPropertyNames - own index properties of String object
    are pushed into the returned Array
includes: [compareArray.js]
--- | 
          476 | 
        
        
          | 15.2.3.4-4-45.js | 
          ---
es5id: 15.2.3.4-4-45
description: >
    Object.getOwnPropertyNames - inherited data property of Array
    object 'O' is not pushed into the returned array.
--- | 
          533 | 
        
        
          | 15.2.3.4-4-46.js | 
          ---
es5id: 15.2.3.4-4-46
description: >
    Object.getOwnPropertyNames - inherited accessor property of Array
    object 'O' is not pushed into the returned array.
--- | 
          624 | 
        
        
          | 15.2.3.4-4-47.js | 
          ---
es5id: 15.2.3.4-4-47
description: >
    Object.getOwnPropertyNames - own data property of Array object 'O'
    is pushed into the returned array
--- | 
          593 | 
        
        
          | 15.2.3.4-4-48.js | 
          ---
es5id: 15.2.3.4-4-48
description: >
    Object.getOwnPropertyNames - own accessor property of Array object
    'O' is pushed into the returned array.
--- | 
          686 | 
        
        
          | 15.2.3.4-4-49.js | 
          ---
es5id: 15.2.3.4-4-49
description: >
    Object.getOwnPropertyNames - own index properties of Array objcect
    are pushed into the returned Array
includes: [compareArray.js]
--- | 
          447 | 
        
        
          | 15.2.3.4-4-50.js | 
          ---
es5id: 15.2.3.4-4-50
description: >
    Object.getOwnPropertyNames - non-enumerable own property of 'O' is
    pushed into the returned Array
--- | 
          548 | 
        
        
          | 15.2.3.4-4-b-1.js | 
          ---
es5id: 15.2.3.4-4-b-1
description: >
    Object.getOwnPropertyNames - descriptor of resultant array is all
    true
--- | 
          617 | 
        
        
          | 15.2.3.4-4-b-2.js | 
          ---
es5id: 15.2.3.4-4-b-2
description: >
  Object.getOwnPropertyNames - all own properties are pushed into
  the returned array
includes: [compareArray.js]
--- | 
          764 | 
        
        
          | 15.2.3.4-4-b-3.js | 
          ---
es5id: 15.2.3.4-4-b-3
description: >
    Object.getOwnPropertyNames - own property named empty('') is
    pushed into the returned array
--- | 
          552 | 
        
        
          | 15.2.3.4-4-b-4.js | 
          ---
es5id: 15.2.3.4-4-b-4
description: >
    Object.getOwnPropertyNames - elements of the returned array are
    writable
--- | 
          564 | 
        
        
          | 15.2.3.4-4-b-5.js | 
          ---
es5id: 15.2.3.4-4-b-5
description: >
    Object.getOwnPropertyNames - elements of the returned array are
    enumerable
--- | 
          533 | 
        
        
          | 15.2.3.4-4-b-6.js | 
          ---
es5id: 15.2.3.4-4-b-6
description: >
    Object.getOwnPropertyNames - elements of the returned array are
    configurable
--- | 
          589 | 
        
        
          | browser.js | 
           | 
          0 | 
        
        
          | name.js | 
          ---
es6id: 19.1.2.7
description: >
  Object.getOwnPropertyNames.name is "getOwnPropertyNames".
info: |
  Object.getOwnPropertyNames ( O )
  17 ECMAScript Standard Built-in Objects:
    Every built-in Function object, including constructors, that is not
    identified as an anonymous function has a name property whose value
    is a String.
    Unless otherwise specified, the name property of a built-in Function
    object, if it exists, has the attributes { [[Writable]]: false,
    [[Enumerable]]: false, [[Configurable]]: true }.
includes: [propertyHelper.js]
--- | 
          881 | 
        
        
          | non-object-argument-invalid.js | 
          ---
esid: sec-object.getownpropertynames
description: >
    Object.getOwnPropertyNames called with an invalid non-object value
info: |
  GetOwnPropertyKeys ( O, type )
  Let obj be ? ToObject(O).
  Let keys be ? obj.[[OwnPropertyKeys]]().
  Let nameList be a new empty List.
  For each element nextKey of keys, do
    If Type(nextKey) is Symbol and type is symbol or Type(nextKey) is String and type is string, then
      Append nextKey as the last element of nameList.
  Return CreateArrayFromList(nameList).
features: [Symbol]
--- | 
          1053 | 
        
        
          | non-object-argument-valid.js | 
          ---
esid: sec-object.getownpropertynames
description: >
    Object.getOwnPropertyNames called with a valid non-object value
info: |
  GetOwnPropertyKeys ( O, type )
  Let obj be ? ToObject(O).
  Let keys be ? obj.[[OwnPropertyKeys]]().
  Let nameList be a new empty List.
  For each element nextKey of keys, do
    If Type(nextKey) is Symbol and type is symbol or Type(nextKey) is String and type is string, then
      Append nextKey as the last element of nameList.
  Return CreateArrayFromList(nameList).
features: [Symbol]
includes: [compareArray.js]
--- | 
          1421 | 
        
        
          | not-a-constructor.js | 
          ---
esid: sec-ecmascript-standard-built-in-objects
description: >
  Object.getOwnPropertyNames does not implement [[Construct]], is not new-able
info: |
  ECMAScript Function Objects
  Built-in function objects that are not identified as constructors do not
  implement the [[Construct]] internal method unless otherwise specified in
  the description of a particular function.
  sec-evaluatenew
  ...
  7. If IsConstructor(constructor) is false, throw a TypeError exception.
  ...
includes: [isConstructor.js]
features: [Reflect.construct, arrow-function]
--- | 
          936 | 
        
        
          | order-after-define-property.js | 
          ---
esid: sec-object.getownpropertynames
description: >
  Property names are returned in ascending chronological order of creation
  that is unaffected by [[DefineOwnProperty]].
info: |
  Object.getOwnPropertyNames ( O )
  1. Return ? GetOwnPropertyKeys(O, String).
  GetOwnPropertyKeys ( O, type )
  1. Let obj be ? ToObject(O).
  2. Let keys be ? obj.[[OwnPropertyKeys]]().
  [...]
  OrdinaryOwnPropertyKeys ( O )
  [...]
  3. For each own property key P of O that is a String but is not an array index,
  in ascending chronological order of property creation, do
    a. Add P as the last element of keys.
  [...]
  5. Return keys.
features: [arrow-function]
includes: [compareArray.js]
--- | 
          1289 | 
        
        
          | proxy-invariant-absent-not-configurable-symbol-key.js | 
          ---
esid: sec-object.getownpropertynames
description: >
  Proxy [[OwnPropertyKeys]] trap does not skip symbol keys when validating invariant:
 The result List must contain the keys of all non-configurable own properties of
    the target object.
info: |
  Object.getOwnPropertyNames ( O )
  1. Return ? GetOwnPropertyKeys(O, String).
  GetOwnPropertyKeys ( O, type )
  ...
  2. Let keys be ? obj.[[OwnPropertyKeys]]().
  [[OwnPropertyKeys]] ( )
  ...
  11. Let targetKeys be ? target.[[OwnPropertyKeys]]().
  ...
  15. Let targetNonconfigurableKeys be a new empty List.
  16. For each element key of targetKeys, do
    a. Let desc be ? target.[[GetOwnProperty]](key).
    b. If desc is not undefined and desc.[[Configurable]] is false, then
      i. Append key as an element of targetNonconfigurableKeys.
  ...
  18. Let uncheckedResultKeys be a new List which is a copy of trapResult.
  19. For each key that is an element of targetNonconfigurableKeys, do
    a. If key is not an element of uncheckedResultKeys, throw a TypeError exception.
features: [Proxy, Symbol]
--- | 
          1556 | 
        
        
          | proxy-invariant-duplicate-symbol-entry.js | 
          ---
esid: sec-object.getownpropertynames
description: >
  Proxy [[OwnPropertyKeys]] trap does not skip symbol keys when validating invariant:
 The returned List contains no duplicate entries.
info: |
  Object.getOwnPropertyNames ( O )
  1. Return ? GetOwnPropertyKeys(O, String).
  GetOwnPropertyKeys ( O, type )
  ...
  2. Let keys be ? obj.[[OwnPropertyKeys]]().
  [[OwnPropertyKeys]] ( )
  ...
  8. Let trapResult be ? CreateListFromArrayLike(trapResultArray, « String, Symbol »).
  9. If trapResult contains any duplicate entries, throw a TypeError exception.
features: [Proxy, Symbol]
--- | 
          955 | 
        
        
          | proxy-invariant-not-extensible-absent-symbol-key.js | 
          ---
esid: sec-object.getownpropertynames
description: >
  Proxy [[OwnPropertyKeys]] trap does not skip symbol keys when validating invariant:
 If the target object is not extensible, then the result List must contain all the keys of
    the own properties of the target object and no other values.
info: |
  Object.getOwnPropertyNames ( O )
  1. Return ? GetOwnPropertyKeys(O, String).
  GetOwnPropertyKeys ( O, type )
  ...
  2. Let keys be ? obj.[[OwnPropertyKeys]]().
  [[OwnPropertyKeys]] ( )
  ...
  11. Let targetKeys be ? target.[[OwnPropertyKeys]]().
  16. For each element key of targetKeys, do
    a. Let desc be ? target.[[GetOwnProperty]](key).
    b. If desc is not undefined and desc.[[Configurable]] is false, then
      ...
    c. Else,
      i. Append key as an element of targetConfigurableKeys.
  ...
  18. Let uncheckedResultKeys be a new List which is a copy of trapResult.
  ...
  21. For each key that is an element of targetConfigurableKeys, do
    a. If key is not an element of uncheckedResultKeys, throw a TypeError exception.
features: [Proxy, Symbol]
--- | 
          1506 | 
        
        
          | proxy-invariant-not-extensible-extra-symbol-key.js | 
          ---
esid: sec-object.getownpropertynames
description: >
  Proxy [[OwnPropertyKeys]] trap does not skip symbol keys when validating invariant:
 If the target object is not extensible, then the result List must contain all the keys of
    the own properties of the target object and no other values.
info: |
  Object.getOwnPropertyNames ( O )
  1. Return ? GetOwnPropertyKeys(O, String).
  GetOwnPropertyKeys ( O, type )
  ...
  2. Let keys be ? obj.[[OwnPropertyKeys]]().
  [[OwnPropertyKeys]] ( )
  ...
  11. Let targetKeys be ? target.[[OwnPropertyKeys]]().
  16. For each element key of targetKeys, do
    a. Let desc be ? target.[[GetOwnProperty]](key).
    b. If desc is not undefined and desc.[[Configurable]] is false, then
      ...
    c. Else,
      i. Append key as an element of targetConfigurableKeys.
  ...
  18. Let uncheckedResultKeys be a new List which is a copy of trapResult.
  ...
  22. If uncheckedResultKeys is not empty, throw a TypeError exception.
features: [Proxy, Symbol]
--- | 
          1410 | 
        
        
          | S15.2.3.4_A1_T1.js | 
          ---
info: |
    Object.getOwnProperties and Object.prototype.hasOwnProperty should
    agree on what the own properties are.
es5id: 15.2.3.4_A1_T1
description: >
    Check that all the own property names reported by
    Object.getOwnPropertyNames on a strict function are names that
    hasOwnProperty agrees are own properties.
--- | 
          715 | 
        
        
          | shell.js | 
           | 
          0 |