summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/String/prototype/replace/replaceValue-evaluation-order.js
blob: aeb45287bae06d89bb06b62b45d816464661f477 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-string.prototype.replace
description: >
  Non-callable replaceValue is evaluated before searching the string.
info: |
  String.prototype.replace ( searchValue, replaceValue )

  ...
  6. If functionalReplace is false, then
    a. Set replaceValue to ? ToString(replaceValue).
  7. Search string for the first occurrence of searchString and let pos be the
  index within string of the first code unit of the matched substring and let
  matched be searchString. If no occurrences of searchString were found, return string.
---*/

var calls = 0;
var replaceValue = {
  toString: function() {
    calls += 1;
    return "b";
  },
};

var newString = "".replace("a", replaceValue);
assert.sameValue(newString, "");
assert.sameValue(calls, 1);

reportCompare(0, 0);