Index: test/mjsunit/es6/regexp-flags.js |
diff --git a/test/mjsunit/es6/regexp-flags.js b/test/mjsunit/es6/regexp-flags.js |
index 79b0197e917630c35481dd9f5256da7db484a932..98d9dec65bc051739c2e260205ca0e8889e55b6a 100644 |
--- a/test/mjsunit/es6/regexp-flags.js |
+++ b/test/mjsunit/es6/regexp-flags.js |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-// Flags: --harmony-regexps --harmony-unicode-regexps |
+// Flags: --harmony-unicode-regexps |
var r1 = /abc/gi; |
assertEquals("abc", r1.source); |
@@ -64,3 +64,55 @@ testName("multiline"); |
testName("source"); |
testName("sticky"); |
testName("unicode"); |
+ |
+ |
+RegExp.prototype.flags = 'setter should be undefined'; |
+ |
+assertEquals('', RegExp('').flags); |
+assertEquals('', /./.flags); |
+assertEquals('gimuy', RegExp('', 'yugmi').flags); |
+assertEquals('gimuy', /foo/yumig.flags); |
+ |
+var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags'); |
+assertTrue(descriptor.configurable); |
+assertFalse(descriptor.enumerable); |
+assertInstanceof(descriptor.get, Function); |
+assertEquals(undefined, descriptor.set); |
+ |
+function testGenericFlags(object) { |
+ return descriptor.get.call(object); |
+} |
+ |
+assertEquals('', testGenericFlags({})); |
+assertEquals('i', testGenericFlags({ ignoreCase: true })); |
+assertEquals('uy', testGenericFlags({ global: 0, sticky: 1, unicode: 1 })); |
+assertEquals('m', testGenericFlags({ __proto__: { multiline: true } })); |
+assertThrows(function() { testGenericFlags(); }, TypeError); |
+assertThrows(function() { testGenericFlags(undefined); }, TypeError); |
+assertThrows(function() { testGenericFlags(null); }, TypeError); |
+assertThrows(function() { testGenericFlags(true); }, TypeError); |
+assertThrows(function() { testGenericFlags(false); }, TypeError); |
+assertThrows(function() { testGenericFlags(''); }, TypeError); |
+assertThrows(function() { testGenericFlags(42); }, TypeError); |
+ |
+var counter = 0; |
+var map = {}; |
+var object = { |
+ get global() { |
+ map.g = counter++; |
+ }, |
+ get ignoreCase() { |
+ map.i = counter++; |
+ }, |
+ get multiline() { |
+ map.m = counter++; |
+ }, |
+ get unicode() { |
+ map.u = counter++; |
+ }, |
+ get sticky() { |
+ map.y = counter++; |
+ } |
+}; |
+testGenericFlags(object); |
+assertEquals({ g: 0, i: 1, m: 2, u: 3, y: 4 }, map); |