// 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);