OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var log = []; | 5 var log = []; |
6 | 6 |
7 var fake = | 7 var fake = |
8 { | 8 { |
9 get source() { | 9 get source() { |
10 log.push("p"); | 10 log.push("p"); |
(...skipping 26 matching lines...) Expand all Loading... |
37 } | 37 } |
38 | 38 |
39 testThrows(1); | 39 testThrows(1); |
40 testThrows(null); | 40 testThrows(null); |
41 Number.prototype.source = "a"; | 41 Number.prototype.source = "a"; |
42 Number.prototype.flags = "b"; | 42 Number.prototype.flags = "b"; |
43 testThrows(1); | 43 testThrows(1); |
44 | 44 |
45 assertEquals("/pattern/flags", RegExp.prototype.toString.call(fake)); | 45 assertEquals("/pattern/flags", RegExp.prototype.toString.call(fake)); |
46 assertEquals(["p", "ps", "f", "fs"], log); | 46 assertEquals(["p", "ps", "f", "fs"], log); |
| 47 |
| 48 // Monkey-patching is also possible on RegExp instances |
| 49 |
| 50 let weird = /foo/; |
| 51 Object.defineProperty(weird, 'flags', {value: 'bar'}); |
| 52 Object.defineProperty(weird, 'source', {value: 'baz'}); |
| 53 assertEquals('/baz/bar', weird.toString()); |
| 54 |
| 55 assertEquals('/(?:)/', RegExp.prototype.toString()); |
| 56 assertEquals('(?:)', RegExp.prototype.source); |
| 57 assertEquals('', RegExp.prototype.flags); |
OLD | NEW |