26 lines
890 B
JavaScript
26 lines
890 B
JavaScript
|
// Copyright 2017 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.
|
||
|
|
||
|
// Flags: --allow-natives-syntax
|
||
|
|
||
|
function testAdvanceStringIndex(lastIndex, expectedLastIndex) {
|
||
|
let exec_count = 0;
|
||
|
let last_last_index = -1;
|
||
|
|
||
|
let fake_re = {
|
||
|
exec: () => { return (exec_count++ == 0) ? [""] : null },
|
||
|
get lastIndex() { return lastIndex; },
|
||
|
set lastIndex(value) { last_last_index = value },
|
||
|
get global() { return true; },
|
||
|
get flags() { return "g"; }
|
||
|
};
|
||
|
|
||
|
assertEquals([""], RegExp.prototype[Symbol.match].call(fake_re, "abc"));
|
||
|
assertEquals(expectedLastIndex, last_last_index);
|
||
|
}
|
||
|
|
||
|
testAdvanceStringIndex(new Number(42), 43); // Value wrapper.
|
||
|
testAdvanceStringIndex(%AllocateHeapNumber(), 1); // HeapNumber.
|
||
|
testAdvanceStringIndex(4294967295, 4294967296); // HeapNumber.
|