Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: test/mjsunit/es6/regexp-constructor.js

Issue 1846303002: Further ES2015 RegExp spec compliance fixes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix cctest Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/mjsunit/es6/classes-subclass-builtins.js ('k') | test/mjsunit/es6/regexp-flags.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 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 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 // Flags: --harmony-regexp-subclass 5 // Flags: --harmony-regexp-subclass
6 6
7 "use strict"; 7 "use strict";
8 8
9 function should_not_be_called() { 9 function should_not_be_called() {
10 throw new Error("should not be called"); 10 throw new Error("should not be called");
11 } 11 }
12 12
13 (function() { 13 (function() {
14 var r = new RegExp("biep"); 14 var r = new RegExp("biep");
15 assertTrue(r === RegExp(r)); 15 assertTrue(r === RegExp(r));
16 assertFalse(r === new RegExp(r)); 16 assertFalse(r === new RegExp(r));
17 r[Symbol.match] = false; 17 r[Symbol.match] = false;
18 Object.defineProperty(r, "source", {get: should_not_be_called}); 18 Object.defineProperty(r, "source", {get: should_not_be_called});
19 Object.defineProperty(r, "flags", {get: should_not_be_called}); 19 Object.defineProperty(r, "flags", {get: should_not_be_called});
20 assertFalse(r === RegExp(r)); 20 assertFalse(r === RegExp(r));
21 })(); 21 })();
22 22
23 (function() { 23 (function() {
24 let allow = false;
24 class A extends RegExp { 25 class A extends RegExp {
25 get source() { throw new Error("should not be called") } 26 get source() {
26 get flags() { throw new Error("should not be called") } 27 if (!allow) throw new Error("should not be called");
28 return super.source;
29 }
30 get flags() {
31 if (!allow) throw new Error("should not be called");
32 return super.flags
33 }
27 } 34 }
28 35
29 var r = new A("biep"); 36 var r = new A("biep");
30 var r2 = RegExp(r); 37 var r2 = RegExp(r);
31 38
32 assertFalse(r === r2); 39 assertFalse(r === r2);
40 allow = true;
33 assertEquals(r, r2); 41 assertEquals(r, r2);
42 allow = false;
34 assertTrue(A.prototype === r.__proto__); 43 assertTrue(A.prototype === r.__proto__);
35 assertTrue(RegExp.prototype === r2.__proto__); 44 assertTrue(RegExp.prototype === r2.__proto__);
36 45
37 var r3 = RegExp(r); 46 var r3 = RegExp(r);
38 assertFalse(r3 === r); 47 assertFalse(r3 === r);
48 allow = true;
39 assertEquals(r3, r); 49 assertEquals(r3, r);
50 allow = false;
40 51
41 var r4 = new A(r2); 52 var r4 = new A(r2);
42 assertFalse(r4 === r2); 53 assertFalse(r4 === r2);
54 allow = true;
43 assertEquals(r4, r2); 55 assertEquals(r4, r2);
56 allow = false;
44 assertTrue(A.prototype === r4.__proto__); 57 assertTrue(A.prototype === r4.__proto__);
45 58
46 r[Symbol.match] = false; 59 r[Symbol.match] = false;
47 var r5 = new A(r); 60 var r5 = new A(r);
48 assertFalse(r5 === r); 61 assertFalse(r5 === r);
62 allow = true;
49 assertEquals(r5, r); 63 assertEquals(r5, r);
64 allow = false;
50 assertTrue(A.prototype === r5.__proto__); 65 assertTrue(A.prototype === r5.__proto__);
51 })(); 66 })();
52 67
53 (function() { 68 (function() {
54 var log = []; 69 var log = [];
55 var match = { 70 var match = {
56 get source() { log.push("source"); return "biep"; }, 71 get source() { log.push("source"); return "biep"; },
57 get flags() { log.push("flags"); return "i"; } 72 get flags() { log.push("flags"); return "i"; }
58 }; 73 };
59 Object.defineProperty(match, Symbol.match, 74 Object.defineProperty(match, Symbol.match,
(...skipping 30 matching lines...) Expand all
90 (function() { 105 (function() {
91 class A extends RegExp { 106 class A extends RegExp {
92 get ["constructor"]() { log.push("constructor"); return RegExp; } 107 get ["constructor"]() { log.push("constructor"); return RegExp; }
93 } 108 }
94 var r = new A("biep"); 109 var r = new A("biep");
95 var log = []; 110 var log = [];
96 var r2 = RegExp(r); 111 var r2 = RegExp(r);
97 assertEquals(["constructor"], log); 112 assertEquals(["constructor"], log);
98 assertTrue(r === r2); 113 assertTrue(r === r2);
99 })(); 114 })();
OLDNEW
« no previous file with comments | « test/mjsunit/es6/classes-subclass-builtins.js ('k') | test/mjsunit/es6/regexp-flags.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698