blob: c83975a8d30d560655cea66fe2384f32e46977e6 [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5Object.defineProperty(Number.prototype, "0",
6 { set: function(v) { set = v; }});
7Object.defineProperty(String.prototype, "0",
8 { set: function(v) { set = v; }});
9Object.defineProperty(String.prototype, "3",
10 { set: function(v) { set = v; }});
11
12var set;
13var n = 1;
14set = 0;
15n[0] = 100;
16assertEquals(100, set);
17var s = "bla";
18s[0] = 200;
19assertEquals(100, set);
20s[3] = 300;
21assertEquals(300, set);
22
23assertThrows(function(){"use strict"; var o = "123"; o[1] = 10; });
24assertThrows(function(){"use strict"; var o = ""; o[1] = 10; });
25assertThrows(function(){"use strict"; var o = 1; o[1] = 10; });
26
27assertThrows(function() {
28 "use strict";
29 var sym = Symbol('66');
30 sym.a = 0;
31});
32
33assertThrows(function() {
34 "use strict";
35 var sym = Symbol('66');
36 sym['a' + 'b'] = 0;
37});
38
39assertThrows(function() {
40 "use strict";
41 var sym = Symbol('66');
42 sym[62] = 0;
43});
44
45assertThrows(function() {
46 "use strict";
47 var o = "bla";
48 o["0"] = 1;
49});