diff --git a/js/src/tests/ecma_5/RegExp/jstests.list b/js/src/tests/ecma_5/RegExp/jstests.list index 60901873bbf1..d6b06e45a5e8 100644 --- a/js/src/tests/ecma_5/RegExp/jstests.list +++ b/js/src/tests/ecma_5/RegExp/jstests.list @@ -5,5 +5,6 @@ script 15.10.7.5-01.js script empty-lookahead.js script exec.js script exec-lastIndex-ToInteger.js +script regress-576828.js skip-if(!xulRuntime.shell&&(Android||xulRuntime.OS=="WINNT")) script regress-617935.js script instance-property-storage-introspection.js diff --git a/js/src/tests/ecma_5/RegExp/regress-576828.js b/js/src/tests/ecma_5/RegExp/regress-576828.js new file mode 100644 index 000000000000..45e97dc3b1ed --- /dev/null +++ b/js/src/tests/ecma_5/RegExp/regress-576828.js @@ -0,0 +1,8 @@ +var re = /(z\1){3}/; +var str = 'zzz'; +var actual = re.exec(str); +var expected = makeExpectedMatch(['zzz', 'z'], 0, str); +checkRegExpMatch(actual, expected); + +if (typeof reportCompare == 'function') + reportCompare(true, true); diff --git a/js/src/tests/ecma_5/RegExp/shell.js b/js/src/tests/ecma_5/RegExp/shell.js index e69de29bb2d1..0ce9f087de91 100644 --- a/js/src/tests/ecma_5/RegExp/shell.js +++ b/js/src/tests/ecma_5/RegExp/shell.js @@ -0,0 +1,21 @@ +function makeExpectedMatch(arr, index, input) { + var expectedMatch = { + index: index, + input: input, + length: arr.length, + }; + + for (var i = 0; i < arr.length; ++i) + expectedMatch[i] = arr[i]; + + return expectedMatch; +} + +function checkRegExpMatch(actual, expected) { + assertEq(actual.length, expected.length); + for (var i = 0; i < actual.length; ++i) + assertEq(actual[i], expected[i]); + + assertEq(actual.index, expected.index); + assertEq(actual.input, expected.input); +}