According to the spec[1], RegExp.prototype[Symbol.match] calls the flags getter and the unicode getter. However, the current implementation does not work that way. This causes some test262 test cases to fail: - test/built-ins/RegExp/prototype/Symbol.match/flags-tostring-error.js - test/built-ins/RegExp/prototype/Symbol.match/get-flags-err.js - test/built-ins/RegExp/prototype/Symbol.match/get-unicode-error.js [1]: https://tc39.es/ecma262/#sec-regexp.prototype-@@match poc: ```js function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } const re = /./; let flagsCount = 0; let unicodeCount = 0; Object.defineProperties(re, { flags: { get() { flagsCount++; return ''; } }, unicode: { get() { unicodeCount++; return false; } } }); for (let i = 0; i < 1e3; i++) { re[Symbol.match](''); } shouldBe(flagsCount, 1e3); shouldBe(unicodeCount, 1e3); ```
Pull request: https://github.com/WebKit/WebKit/pull/26885
<rdar://problem/126326970>