| // Copyright 2014 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| function newArrayWithGetter() { |
| var arr = [1, 2, 3]; |
| Object.defineProperty(arr, '1', { |
| get: function() { delete this[1]; return undefined; }, |
| configurable: true |
| }); |
| return arr; |
| } |
| |
| var a = newArrayWithGetter(); |
| var s = a.slice(1); |
| assertTrue('0' in s); |
| |
| // Sparse case should hit the same code as above due to presence of the getter. |
| a = newArrayWithGetter(); |
| a[0xffff] = 4; |
| s = a.slice(1); |
| assertTrue('0' in s); |
| |
| a = newArrayWithGetter(); |
| a.shift(); |
| assertTrue('0' in a); |
| |
| a = newArrayWithGetter(); |
| a.unshift(0); |
| assertTrue('2' in a); |