// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    A property name P (in the form of a string value) is an array index
    if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^32 - 1
es5id: 15.4_A1.1_T10
description: Array index is power of two
---*/

//CHECK#
var x = [];
var k = 1;
for (var i = 0; i < 32; i++) {
  k = k * 2;
  x[k - 2] = k;  
}

k = 1;
for (i = 0; i < 32; i++) {
  k = k * 2;
  if (x[k - 2] !== k) {
    $ERROR('#' + (k - 2) + ': ');
  }     
}
