| // Copyright 2015 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. |
| |
| Object.defineProperty(Number.prototype, "0", |
| { set: function(v) { set = v; }}); |
| Object.defineProperty(String.prototype, "0", |
| { set: function(v) { set = v; }}); |
| Object.defineProperty(String.prototype, "3", |
| { set: function(v) { set = v; }}); |
| |
| var set; |
| var n = 1; |
| set = 0; |
| n[0] = 100; |
| assertEquals(100, set); |
| var s = "bla"; |
| s[0] = 200; |
| assertEquals(100, set); |
| s[3] = 300; |
| assertEquals(300, set); |
| |
| assertThrows(function(){"use strict"; var o = "123"; o[1] = 10; }); |
| assertThrows(function(){"use strict"; var o = ""; o[1] = 10; }); |
| assertThrows(function(){"use strict"; var o = 1; o[1] = 10; }); |
| |
| assertThrows(function() { |
| "use strict"; |
| var sym = Symbol('66'); |
| sym.a = 0; |
| }); |
| |
| assertThrows(function() { |
| "use strict"; |
| var sym = Symbol('66'); |
| sym['a' + 'b'] = 0; |
| }); |
| |
| assertThrows(function() { |
| "use strict"; |
| var sym = Symbol('66'); |
| sym[62] = 0; |
| }); |
| |
| assertThrows(function() { |
| "use strict"; |
| var o = "bla"; |
| o["0"] = 1; |
| }); |