diff options
Diffstat (limited to 'js/src/tests/test262/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-props.js')
-rw-r--r-- | js/src/tests/test262/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-props.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/js/src/tests/test262/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-props.js b/js/src/tests/test262/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-props.js new file mode 100644 index 0000000000..f723c00174 --- /dev/null +++ b/js/src/tests/test262/annexB/built-ins/RegExp/prototype/compile/pattern-regexp-props.js @@ -0,0 +1,75 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype.compile +es6id: B.2.5.1 +description: > + Properties are not referenced when provided pattern is a RegExp instance +info: | + [...] + 3. If Type(pattern) is Object and pattern has a [[RegExpMatcher]] internal + slot, then + a. If flags is not undefined, throw a TypeError exception. + b. Let P be the value of pattern's [[OriginalSource]] internal slot. + c. Let F be the value of pattern's [[OriginalFlags]] internal slot. + 4. Else, + [...] + 5. Return ? RegExpInitialize(O, P, F). +---*/ + +var thisValue = /abc/gim; +var pattern = /def/mig; +var flagsCount = 0; +var globalCount = 0; +var ignoreCaseCount = 0; +var multilineCount = 0; +var stickyCount = 0; +var unicodeCount = 0; +var counters = { + flags: { + get: function() { + flagsCount += 1; + } + }, + global: { + get: function() { + globalCount += 1; + } + }, + ignoreCase: { + get: function() { + ignoreCaseCount += 1; + } + }, + multiline: { + get: function() { + multilineCount += 1; + } + }, + sticky: { + get: function() { + stickyCount += 1; + } + }, + unicode: { + get: function() { + unicodeCount += 1; + } + } +}; + +Object.defineProperties(thisValue, counters); +Object.defineProperties(pattern, counters); + +thisValue.compile(thisValue); +thisValue.compile(pattern); +thisValue.compile(thisValue); + +assert.sameValue(flagsCount, 0, '`flags` property not accessed'); +assert.sameValue(globalCount, 0, '`global` property not accessed'); +assert.sameValue(ignoreCaseCount, 0, '`ignoreCase` property not accessed'); +assert.sameValue(multilineCount, 0, '`multiline` property not accessed'); +assert.sameValue(stickyCount, 0, '`sticky` property not accessed'); +assert.sameValue(unicodeCount, 0, '`unicode` property not accessed'); + +reportCompare(0, 0); |