| // Copyright 2016 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| function createNonRegExp(calls) { |
| return { |
| get [Symbol.match]() { |
| calls.push("@@match"); |
| return undefined; |
| }, |
| get [Symbol.replace]() { |
| calls.push("@@replace"); |
| return undefined; |
| }, |
| get [Symbol.search]() { |
| calls.push("@@search"); |
| return undefined; |
| }, |
| get [Symbol.split]() { |
| calls.push("@@split"); |
| return undefined; |
| }, |
| [Symbol.toPrimitive]() { |
| calls.push("@@toPrimitive"); |
| return ""; |
| } |
| }; |
| } |
| |
| (function testStringMatchBrandCheck() { |
| var calls = []; |
| "".match(createNonRegExp(calls)); |
| assertEquals(["@@match", "@@toPrimitive"], calls); |
| })(); |
| |
| (function testStringSearchBrandCheck() { |
| var calls = []; |
| "".search(createNonRegExp(calls)); |
| assertEquals(["@@search", "@@toPrimitive"], calls); |
| })(); |
| |
| (function testStringSplitBrandCheck() { |
| var calls = []; |
| "".split(createNonRegExp(calls)); |
| assertEquals(["@@split", "@@toPrimitive"], calls); |
| })(); |
| |
| (function testStringReplaceBrandCheck() { |
| var calls = []; |
| "".replace(createNonRegExp(calls), ""); |
| assertEquals(["@@replace", "@@toPrimitive"], calls); |
| })(); |