summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js')
-rw-r--r--js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js
new file mode 100644
index 0000000000..ce971cf0b5
--- /dev/null
+++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js
@@ -0,0 +1,34 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: Properties of the groups object are created with CreateDataProperty
+includes: [compareArray.js, propertyHelper.js]
+esid: sec-regexpbuiltinexec
+features: [regexp-named-groups]
+info: |
+ Runtime Semantics: RegExpBuiltinExec ( R, S )
+ 25. For each integer i such that i > 0 and i ≤ n
+ f. If the ith capture of R was defined with a GroupName,
+ i. Let s be the StringValue of the corresponding RegExpIdentifierName.
+ ii. Perform ! CreateDataProperty(groups, s, capturedValue).
+---*/
+
+// Properties created on result.groups in textual order.
+assert.compareArray(["fst", "snd"], Object.getOwnPropertyNames(
+ /(?<fst>.)|(?<snd>.)/u.exec("abcd").groups));
+
+// Properties are created with Define, not Set
+let counter = 0;
+Object.defineProperty(Object.prototype, 'x', {set() { counter++; }});
+let match = /(?<x>.)/.exec('a');
+let groups = match.groups;
+assert.sameValue(counter, 0);
+
+// Properties are writable, enumerable and configurable
+// (from CreateDataProperty)
+verifyWritable(groups, "x");
+verifyEnumerable(groups, "x");
+verifyConfigurable(groups, "x");
+
+reportCompare(0, 0);