Skip to content

Commit

Permalink
Make RegExp.prototype.flags getter configurable
Browse files Browse the repository at this point in the history
TEST=mjsunit/harmony
BUG=v8:3751
LOG=N

Review URL: https://codereview.chromium.org/788053003

Cr-Commit-Position: refs/heads/master@{#25809}
  • Loading branch information
mathiasbynens authored and Commit bot committed Dec 13, 2014
1 parent 4805417 commit b24f04d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/harmony-regexp.js
Expand Up @@ -28,7 +28,7 @@ function ExtendRegExpPrototype() {
%CheckIsBootstrapping();

%DefineAccessorPropertyUnchecked($RegExp.prototype, 'flags', RegExpGetFlags,
null, DONT_ENUM | DONT_DELETE);
null, DONT_ENUM);
%SetNativeFlag(RegExpGetFlags);
}

Expand Down
25 changes: 23 additions & 2 deletions test/mjsunit/harmony/regexp-flags.js
Expand Up @@ -4,7 +4,6 @@

// Flags: --harmony-regexps

delete RegExp.prototype.flags;
RegExp.prototype.flags = 'setter should be undefined';

assertEquals('', RegExp('').flags);
Expand All @@ -18,7 +17,7 @@ assertEquals('gimy', /foo/ymig.flags);
assertThrows(function() { RegExp('', 'yumig').flags; }, SyntaxError);

var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags');
assertFalse(descriptor.configurable);
assertTrue(descriptor.configurable);
assertFalse(descriptor.enumerable);
assertInstanceof(descriptor.get, Function);
assertEquals(undefined, descriptor.set);
Expand All @@ -38,3 +37,25 @@ 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);

0 comments on commit b24f04d

Please sign in to comment.