• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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});
50