Skip to content

Commit dea74fd

Browse files
committed
Implement Array.prototype.findLast and Array.prototype.findLastIndex
https://bugs.webkit.org/show_bug.cgi?id=227939 Reviewed by Yusuke Suzuki. JSTests: * stress/typedarray-findLast.js: Added. (keepEven): (keepEvenAndChange): (isBigEnoughAndException): * stress/typedarray-findLastIndex.js: Added. (keepEven): (keepEvenAndChange): (isBigEnoughAndException): Source/JavaScriptCore: * builtins/ArrayPrototype.js: (findLast): Added. (findLastIndex): Added. (JSC::ArrayPrototype::finishCreation): * runtime/JSTypedArrayViewPrototype.cpp: * builtins/TypedArrayPrototype.js: (findLast): Added. (findLastIndex): Added. * runtime/ArrayPrototype.cpp: (JSC::JSTypedArrayViewPrototype::finishCreation): * runtime/OptionsList.h: Source/WebInspectorUI: * UserInterface/Models/NativeFunctionParameters.js: LayoutTests: * js/array-findLast.html: Added. * js/array-findLast-expected.txt: Added. * js/script-tests/array-findLast.js: Added. (passUndefined): (passZero): (passNull): (passFalse): (passEmptyString): (passEven): (passAfter5): (toObject): (findItemAddedDuringSearch): (numberOfCallbacksInFindInArrayWithHoles): (throwError): * js/array-findLastIndex.html: Added. * js/array-findLastIndex-expected.txt: Added. * js/script-tests/array-findLastIndex.js: Added. (passUndefined): (passZero): (passNull): (passFalse): (passEmptyString): (passEven): (passAfter5): (toObject): (findItemAddedDuringSearch): (numberOfCallbacksInFindIndexInArrayWithHoles): (throwError): Canonical link: https://commits.webkit.org/239681@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279937 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent b512e5b commit dea74fd

18 files changed

Lines changed: 688 additions & 0 deletions

‎JSTests/ChangeLog‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
2021-07-14 Devin Rousso <drousso@apple.com>
2+
3+
Implement Array.prototype.findLast and Array.prototype.findLastIndex
4+
https://bugs.webkit.org/show_bug.cgi?id=227939
5+
6+
Reviewed by Yusuke Suzuki.
7+
8+
* stress/typedarray-findLast.js: Added.
9+
(keepEven):
10+
(keepEvenAndChange):
11+
(isBigEnoughAndException):
12+
13+
* stress/typedarray-findLastIndex.js: Added.
14+
(keepEven):
15+
(keepEvenAndChange):
16+
(isBigEnoughAndException):
17+
118
2021-07-14 Keith Miller <keith_miller@apple.com>
219

320
Unreviewed, test gardening.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//@ requireOptions("--useArrayFindLastMethod=true")
2+
load("./resources/typedarray-test-helper-functions.js", "caller relative");
3+
description(
4+
"This test checks the behavior of the TypedArray.prototype.findLast function"
5+
);
6+
7+
shouldBe("Int32Array.prototype.findLast.length", "1");
8+
shouldBe("Int32Array.prototype.findLast.name", "'findLast'");
9+
shouldBeTrue("isSameFunctionForEachTypedArrayPrototype('findLast')");
10+
shouldBeTrue("testPrototypeReceivesArray('findLast', [undefined, this, { }, [ ], true, ''])");
11+
debug("");
12+
13+
debug("testPrototypeFunction has the following arg list (name, args, init, result [ , expectedArray ])");
14+
debug("");
15+
16+
debug("1.0 Single Argument Testing");
17+
function keepEven(e, i) {
18+
return !(e & 1) || (this.keep ? this.keep === i : false);
19+
}
20+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEven)', [12, 5, 8, 13, 44], 44)");
21+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEven)', [11, 13, 17, 13, 22], 22)");
22+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEven)', [22, 13, 17, 13, 11], 22)");
23+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEven)', [11, 13, 17, 13, 11], undefined)");
24+
debug("");
25+
26+
debug("2.0 Two Argument Testing");
27+
var thisValue = { keep: 3 };
28+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEven, thisValue)', [11, 23, 11, 1, 44], 44)");
29+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEven, thisValue)', [11, 23, 11, 1, 43], 1)");
30+
debug("");
31+
32+
debug("3.0 Array Element Changing");
33+
function keepEvenAndChange(e, i, a) {
34+
a[a.length - 1 - i] = 5;
35+
return !(e & 1);
36+
}
37+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEvenAndChange)', [11, 15, 3, 12, 44], 44, [5, 15, 3, 12, 44])");
38+
shouldBeTrue("testPrototypeFunction('findLast', '(keepEvenAndChange)', [44, 12, 3, 15, 11], undefined, [5, 5, 5, 5, 5])");
39+
debug("");
40+
41+
debug("4.0 Exception Test");
42+
function isBigEnoughAndException(element, index, array) {
43+
if(index==3) throw "exception from function";
44+
return (element == 44);
45+
}
46+
shouldBeTrue("testPrototypeFunction('findLast', '(isBigEnoughAndException)', [12, 15, 10, 13, 44], 44)");
47+
shouldThrow("testPrototypeFunction('findLast', '(isBigEnoughAndException)', [9, 15, 10, 13, 43], false)");
48+
debug("");
49+
50+
debug("5.0 Wrong Type for Callback Test");
51+
shouldThrow("testPrototypeFunction('findLast', '(8)', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLast callback must be a function'");
52+
shouldThrow("testPrototypeFunction('findLast', '(\"wrong\")', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLast callback must be a function'");
53+
shouldThrow("testPrototypeFunction('findLast', '(new Object())', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLast callback must be a function'");
54+
shouldThrow("testPrototypeFunction('findLast', '(null)', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLast callback must be a function'");
55+
shouldThrow("testPrototypeFunction('findLast', '()', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLast callback must be a function'");
56+
debug("");
57+
finishJSTest();
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//@ requireOptions("--useArrayFindLastMethod=true")
2+
load("./resources/typedarray-test-helper-functions.js", "caller relative");
3+
description(
4+
"This test checks the behavior of the TypedArray.prototype.findLastIndex function"
5+
);
6+
7+
shouldBe("Int32Array.prototype.findLastIndex.length", "1");
8+
shouldBe("Int32Array.prototype.findLastIndex.name", "'findLastIndex'");
9+
shouldBeTrue("isSameFunctionForEachTypedArrayPrototype('findLastIndex')");
10+
shouldBeTrue("testPrototypeReceivesArray('findLastIndex', [undefined, this, { }, [ ], true, ''])");
11+
debug("");
12+
13+
debug("testPrototypeFunction has the following arg list (name, args, init, result [ , expectedArray ])");
14+
debug("");
15+
16+
debug("1.0 Single Argument Testing");
17+
function keepEven(e, i) {
18+
return !(e & 1) || (this.keep ? this.keep === i : false);
19+
}
20+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEven)', [12, 5, 8, 13, 44], 4)");
21+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEven)', [11, 13, 17, 13, 22], 4)");
22+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEven)', [22, 13, 17, 13, 11], 0)");
23+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEven)', [11, 13, 17, 13, 11], -1)");
24+
debug("");
25+
26+
debug("2.0 Two Argument Testing");
27+
var thisValue = { keep: 3 };
28+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEven, thisValue)', [11, 23, 11, 1, 44], 4)");
29+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEven, thisValue)', [11, 23, 11, 1, 43], 3)");
30+
debug("");
31+
32+
debug("3.0 Array Element Changing");
33+
function keepEvenAndChange(e, i, a) {
34+
a[a.length - 1 - i] = 5;
35+
return !(e & 1);
36+
}
37+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEvenAndChange)', [11, 15, 3, 12, 44], 4, [5, 15, 3, 12, 44])");
38+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(keepEvenAndChange)', [44, 12, 3, 15, 11], -1, [5, 5, 5, 5, 5])");
39+
debug("");
40+
41+
debug("4.0 Exception Test");
42+
function isBigEnoughAndException(element, index, array) {
43+
if(index==3) throw "exception from function";
44+
return (element >= 44);
45+
}
46+
shouldBeTrue("testPrototypeFunction('findLastIndex', '(isBigEnoughAndException)', [12, 15, 10, 13, 44], 4)");
47+
shouldThrow("testPrototypeFunction('findLastIndex', '(isBigEnoughAndException)', [9, 15, 10, 13, 43], false)");
48+
debug("");
49+
50+
debug("5.0 Wrong Type for Callback Test");
51+
shouldThrow("testPrototypeFunction('findLastIndex', '(8)', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLastIndex callback must be a function'");
52+
shouldThrow("testPrototypeFunction('findLastIndex', '(\"wrong\")', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLastIndex callback must be a function'");
53+
shouldThrow("testPrototypeFunction('findLastIndex', '(new Object())', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLastIndex callback must be a function'");
54+
shouldThrow("testPrototypeFunction('findLastIndex', '(null)', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLastIndex callback must be a function'");
55+
shouldThrow("testPrototypeFunction('findLastIndex', '()', [12, 15, 10, 13, 44], false)", "'TypeError: TypedArray.prototype.findLastIndex callback must be a function'");
56+
debug("");
57+
finishJSTest();

‎LayoutTests/ChangeLog‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,40 @@
1+
2021-07-14 Devin Rousso <drousso@apple.com>
2+
3+
Implement Array.prototype.findLast and Array.prototype.findLastIndex
4+
https://bugs.webkit.org/show_bug.cgi?id=227939
5+
6+
Reviewed by Yusuke Suzuki.
7+
8+
* js/array-findLast.html: Added.
9+
* js/array-findLast-expected.txt: Added.
10+
* js/script-tests/array-findLast.js: Added.
11+
(passUndefined):
12+
(passZero):
13+
(passNull):
14+
(passFalse):
15+
(passEmptyString):
16+
(passEven):
17+
(passAfter5):
18+
(toObject):
19+
(findItemAddedDuringSearch):
20+
(numberOfCallbacksInFindInArrayWithHoles):
21+
(throwError):
22+
23+
* js/array-findLastIndex.html: Added.
24+
* js/array-findLastIndex-expected.txt: Added.
25+
* js/script-tests/array-findLastIndex.js: Added.
26+
(passUndefined):
27+
(passZero):
28+
(passNull):
29+
(passFalse):
30+
(passEmptyString):
31+
(passEven):
32+
(passAfter5):
33+
(toObject):
34+
(findItemAddedDuringSearch):
35+
(numberOfCallbacksInFindIndexInArrayWithHoles):
36+
(throwError):
37+
138
2021-07-14 Eric Hutchison <ehutchison@apple.com>
239

340
Update expectations for webanimations/multiple-transform-properties-and-multiple-transform-properties-animation-with-delay-on-forced-layer.html.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
Tests for Array.prototype.findLast
2+
3+
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4+
5+
6+
PASS Array.prototype.findLast.length is 1
7+
PASS Array.prototype.findLast.name is 'findLast'
8+
PASS [undefined, 0, null, false, ''].findLast(passUndefined) is undefined
9+
PASS [undefined, 0, null, false, ''].findLast(passZero) is 0
10+
PASS [undefined, 0, null, false, ''].findLast(passNull) is null
11+
PASS [undefined, 0, null, false, ''].findLast(passFalse) is false
12+
PASS [undefined, 0, null, false, ''].findLast(passEmptyString) is ''
13+
PASS [0,1,2,3,4,5,6,7,8,9].findLast(passEven) is 8
14+
PASS [0,1,2,3,4,5,6,7,8,9].findLast(passAfter5) is 9
15+
PASS [0, null, false, ''].findLast(passUndefined) is undefined
16+
PASS [undefined, 0, false, ''].findLast(passNull) is undefined
17+
PASS [undefined, 0, null, ''].findLast(passFalse) is undefined
18+
PASS [undefined, 0, null, false].findLast(passEmptyString) is undefined
19+
PASS [1,3,5,7,9].findLast(passEven) is undefined
20+
PASS [0,1,2,3,4].findLast(passAfter5) is undefined
21+
PASS [undefined, null, false, ''].findLast(passZero) is undefined
22+
Array with holes
23+
PASS (new Array(20)).findLast(passUndefined) is undefined
24+
PASS arrayWithHoles.findLast(passUndefined) is undefined
25+
PASS arrayWithHoles.findLast(passZero) is 0
26+
PASS arrayWithHoles.findLast(passNull) is null
27+
PASS arrayWithHoles.findLast(passFalse) is false
28+
PASS arrayWithHoles.findLast(passEmptyString) is ''
29+
PASS arrayWithHoles.findLast(passAfter5) is ''
30+
Generic Object
31+
PASS toObject([undefined, 0, null, false, '']).findLast(passUndefined) is undefined
32+
PASS toObject([undefined, 0, null, false, '']).findLast(passZero) is 0
33+
PASS toObject([undefined, 0, null, false, '']).findLast(passNull) is null
34+
PASS toObject([undefined, 0, null, false, '']).findLast(passFalse) is false
35+
PASS toObject([undefined, 0, null, false, '']).findLast(passEmptyString) is ''
36+
PASS toObject([0, null, false, '']).findLast(passUndefined) is undefined
37+
PASS toObject([undefined, 0, false, '']).findLast(passNull) is undefined
38+
PASS toObject([undefined, 0, null, '']).findLast(passFalse) is undefined
39+
PASS toObject([undefined, 0, null, false]).findLast(passEmptyString) is undefined
40+
PASS toObject([undefined, null, false, '']).findLast(passZero) is undefined
41+
PASS toObject(new Array(20)).findLast(passUndefined) is undefined
42+
Array-like object with invalid lengths
43+
PASS var obj = { 0: 1, 1: 2, 2: 3, length: 0 }; Array.prototype.findLast.call(obj, throwError) is undefined.
44+
PASS var obj = { 0: 1, 1: 2, 2: 3, length: -0 }; Array.prototype.findLast.call(obj, throwError) is undefined.
45+
PASS var obj = { 0: 1, 1: 2, 2: 3, length: -3 }; Array.prototype.findLast.call(obj, throwError) is undefined.
46+
Modification during search
47+
PASS [0,1,2,3,4,5,6,7,8,9].findLast(findItemAddedDuringSearch) is undefined
48+
PASS [0,1,2,3,4,5,6,7,8,9].findLast(findItemRemovedDuringSearch) is undefined
49+
Exceptions
50+
PASS Array.prototype.findLast.call(undefined, function() {}) threw exception TypeError: Array.prototype.findLast requires that |this| not be null or undefined.
51+
PASS Array.prototype.findLast.call(null, function() {}) threw exception TypeError: Array.prototype.findLast requires that |this| not be null or undefined.
52+
PASS [].findLast(1) threw exception TypeError: Array.prototype.findLast callback must be a function.
53+
PASS [].findLast('hello') threw exception TypeError: Array.prototype.findLast callback must be a function.
54+
PASS [].findLast([]) threw exception TypeError: Array.prototype.findLast callback must be a function.
55+
PASS [].findLast({}) threw exception TypeError: Array.prototype.findLast callback must be a function.
56+
PASS [].findLast(null) threw exception TypeError: Array.prototype.findLast callback must be a function.
57+
PASS [].findLast(undefined) threw exception TypeError: Array.prototype.findLast callback must be a function.
58+
Callbacks in the expected order and *not* skipping holes
59+
findLast callback called with index 7
60+
findLast callback called with index 6
61+
findLast callback called with index 5
62+
findLast callback called with index 4
63+
findLast callback called with index 3
64+
findLast callback called with index 2
65+
findLast callback called with index 1
66+
findLast callback called with index 0
67+
PASS numberOfCallbacksInFindInArrayWithHoles() is 8
68+
PASS successfullyParsed is true
69+
70+
TEST COMPLETE
71+

‎LayoutTests/js/array-findLast.html‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- webkit-test-runner [ jscOptions=--useArrayFindLastMethod=true ] -->
2+
<html>
3+
<head>
4+
<script src="../resources/js-test-pre.js"></script>
5+
</head>
6+
<body>
7+
<script src="script-tests/array-findLast.js"></script>
8+
<script src="../resources/js-test-post.js"></script>
9+
</body>
10+
</html>
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
Tests for Array.prototype.findLastIndex
2+
3+
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4+
5+
6+
PASS Array.prototype.findLastIndex.length is 1
7+
PASS Array.prototype.findLastIndex.name is 'findLastIndex'
8+
PASS [undefined, 0, null, false, ''].findLastIndex(passUndefined) is 0
9+
PASS [undefined, 0, null, false, ''].findLastIndex(passZero) is 1
10+
PASS [undefined, 0, null, false, ''].findLastIndex(passNull) is 2
11+
PASS [undefined, 0, null, false, ''].findLastIndex(passFalse) is 3
12+
PASS [undefined, 0, null, false, ''].findLastIndex(passEmptyString) is 4
13+
PASS [0,1,2,3,4,5,6,7,8,9].findLastIndex(passEven) is 8
14+
PASS [0,1,2,3,4,5,6,7,8,9].findLastIndex(passAfter5) is 9
15+
PASS [0, null, false, ''].findLastIndex(passUndefined) is -1
16+
PASS [undefined, 0, false, ''].findLastIndex(passNull) is -1
17+
PASS [undefined, 0, null, ''].findLastIndex(passFalse) is -1
18+
PASS [undefined, 0, null, false].findLastIndex(passEmptyString) is -1
19+
PASS [1,3,5,7,9].findLastIndex(passEven) is -1
20+
PASS [0,1,2,3,4].findLastIndex(passAfter5) is -1
21+
PASS [undefined, null, false, ''].findLastIndex(passZero) is -1
22+
Array with holes
23+
PASS (new Array(20)).findLastIndex(passUndefined) is 19
24+
PASS arrayWithHoles.findLastIndex(passUndefined) is 6
25+
PASS arrayWithHoles.findLastIndex(passZero) is 1
26+
PASS arrayWithHoles.findLastIndex(passNull) is 3
27+
PASS arrayWithHoles.findLastIndex(passFalse) is 5
28+
PASS arrayWithHoles.findLastIndex(passEmptyString) is 7
29+
PASS arrayWithHoles.findLastIndex(passAfter5) is 7
30+
PASS arrayWithHoles.findLastIndex(passUndefined) is 4
31+
Generic Object
32+
PASS toObject([undefined, 0, null, false, '']).findLastIndex(passUndefined) is 0
33+
PASS toObject([undefined, 0, null, false, '']).findLastIndex(passZero) is 1
34+
PASS toObject([undefined, 0, null, false, '']).findLastIndex(passNull) is 2
35+
PASS toObject([undefined, 0, null, false, '']).findLastIndex(passFalse) is 3
36+
PASS toObject([undefined, 0, null, false, '']).findLastIndex(passEmptyString) is 4
37+
PASS toObject([0, null, false, '']).findLastIndex(passUndefined) is -1
38+
PASS toObject([undefined, 0, false, '']).findLastIndex(passNull) is -1
39+
PASS toObject([undefined, 0, null, '']).findLastIndex(passFalse) is -1
40+
PASS toObject([undefined, 0, null, false]).findLastIndex(passEmptyString) is -1
41+
PASS toObject([undefined, null, false, '']).findLastIndex(passZero) is -1
42+
PASS toObject(new Array(20)).findLastIndex(passUndefined) is 19
43+
Array-like object with invalid lengths
44+
PASS var obj = { 0: 1, 1: 2, 2: 3, length: 0 }; Array.prototype.findLastIndex.call(obj, throwError) is -1
45+
PASS var obj = { 0: 1, 1: 2, 2: 3, length: -0 }; Array.prototype.findLastIndex.call(obj, throwError) is -1
46+
PASS var obj = { 0: 1, 1: 2, 2: 3, length: -3 }; Array.prototype.findLastIndex.call(obj, throwError) is -1
47+
Modification during search
48+
PASS [0,1,2,3,4,5,6,7,8,9].findLastIndex(findItemAddedDuringSearch) is -1
49+
PASS [0,1,2,3,4,5,6,7,8,9].findLastIndex(findItemRemovedDuringSearch) is -1
50+
Exceptions
51+
PASS Array.prototype.findLastIndex.call(undefined, function() {}) threw exception TypeError: Array.prototype.findLastIndex requires that |this| not be null or undefined.
52+
PASS Array.prototype.findLastIndex.call(null, function() {}) threw exception TypeError: Array.prototype.findLastIndex requires that |this| not be null or undefined.
53+
PASS [].findLastIndex(1) threw exception TypeError: Array.prototype.findLastIndex callback must be a function.
54+
PASS [].findLastIndex('hello') threw exception TypeError: Array.prototype.findLastIndex callback must be a function.
55+
PASS [].findLastIndex([]) threw exception TypeError: Array.prototype.findLastIndex callback must be a function.
56+
PASS [].findLastIndex({}) threw exception TypeError: Array.prototype.findLastIndex callback must be a function.
57+
PASS [].findLastIndex(null) threw exception TypeError: Array.prototype.findLastIndex callback must be a function.
58+
PASS [].findLastIndex(undefined) threw exception TypeError: Array.prototype.findLastIndex callback must be a function.
59+
Callbacks in the expected order and *not* skipping holes
60+
find callback called with index 0
61+
find callback called with index 1
62+
find callback called with index 2
63+
find callback called with index 3
64+
find callback called with index 4
65+
find callback called with index 5
66+
find callback called with index 6
67+
find callback called with index 7
68+
PASS numberOfCallbacksInFindIndexInArrayWithHoles() is 8
69+
PASS successfullyParsed is true
70+
71+
TEST COMPLETE
72+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- webkit-test-runner [ jscOptions=--useArrayFindLastMethod=true ] -->
2+
<html>
3+
<head>
4+
<script src="../resources/js-test-pre.js"></script>
5+
</head>
6+
<body>
7+
<script src="script-tests/array-findLastIndex.js"></script>
8+
<script src="../resources/js-test-post.js"></script>
9+
</body>
10+
</html>

0 commit comments

Comments
 (0)