| // Copyright 2019 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. | |
| let re = /x/y; | |
| let cnt = 0; | |
| let str = re[Symbol.replace]("x", { | |
| toString: () => { | |
| cnt++; | |
| if (cnt == 2) { | |
| re.lastIndex = {valueOf: () => { | |
| re.x = 42; | |
| return 0; | |
| }}; | |
| } | |
| return 'y$'; | |
| } | |
| }); | |
| assertEquals("y$", str); |