| Index: test/mjsunit/regexp.js | 
| diff --git a/test/mjsunit/regexp.js b/test/mjsunit/regexp.js | 
| index 59c3ba8d2874f08dff99445f2de61257a80b4add..b57b86d2d88bbf2a882e0116e3c8be38b13f3cd7 100644 | 
| --- a/test/mjsunit/regexp.js | 
| +++ b/test/mjsunit/regexp.js | 
| @@ -110,6 +110,44 @@ assertFalse(re.test("\\]")); | 
| assertFalse(re.test("\x03]"));  // I.e., read as \cc | 
|  | 
|  | 
| +// Test that we handle \s and \S correctly inside some bizarre | 
| +// character classes. | 
| +re = /[\s-:]/; | 
| +assertTrue(re.test('-')); | 
| +assertTrue(re.test(':')); | 
| +assertTrue(re.test(' ')); | 
| +assertTrue(re.test('\t')); | 
| +assertTrue(re.test('\n')); | 
| +assertFalse(re.test('a')); | 
| +assertFalse(re.test('Z')); | 
| + | 
| +re = /[\S-:]/; | 
| +assertTrue(re.test('-')); | 
| +assertTrue(re.test(':')); | 
| +assertFalse(re.test(' ')); | 
| +assertFalse(re.test('\t')); | 
| +assertFalse(re.test('\n')); | 
| +assertTrue(re.test('a')); | 
| +assertTrue(re.test('Z')); | 
| + | 
| +re = /[^\s-:]/; | 
| +assertFalse(re.test('-')); | 
| +assertFalse(re.test(':')); | 
| +assertFalse(re.test(' ')); | 
| +assertFalse(re.test('\t')); | 
| +assertFalse(re.test('\n')); | 
| +assertTrue(re.test('a')); | 
| +assertTrue(re.test('Z')); | 
| + | 
| +re = /[^\S-:]/; | 
| +assertFalse(re.test('-')); | 
| +assertFalse(re.test(':')); | 
| +assertTrue(re.test(' ')); | 
| +assertTrue(re.test('\t')); | 
| +assertTrue(re.test('\n')); | 
| +assertFalse(re.test('a')); | 
| +assertFalse(re.test('Z')); | 
| + | 
| re = /[\s]/; | 
| assertFalse(re.test('-')); | 
| assertFalse(re.test(':')); | 
| @@ -609,47 +647,3 @@ assertEquals(4, re.exec("zimzamzumba").index); | 
| assertEquals(["bc"], re.exec("zimzomzumbc")); | 
| assertFalse(re.test("c")); | 
| assertFalse(re.test("")); | 
| - | 
| - | 
| -function testInvalidRange(str) { | 
| -  try { | 
| -    RegExp(str).test("x"); | 
| -  } catch (e) { | 
| -    return; | 
| -  } | 
| -  assetUnreachable("Allowed invalid range in " + str); | 
| -} | 
| - | 
| -function testValidRange(str) { | 
| -  try { | 
| -    RegExp(str).test("x"); | 
| -  } catch (e) { | 
| -    assertUnreachable("Shouldn't fail parsing: " + str + ", was: " + e); | 
| -  } | 
| -} | 
| - | 
| -testInvalidRange("[\\d-z]"); | 
| -testInvalidRange("[z-\\d]"); | 
| -testInvalidRange("[\\d-\\d]"); | 
| -testInvalidRange("[z-x]");  // Larger value first. | 
| -testInvalidRange("[x-\\d-\\d]"); | 
| - | 
| -testValidRange("[x-z]"); | 
| -testValidRange("[!--\d]");  // Second "-" is end of range. | 
| -testValidRange("[\d-]"); | 
| -testValidRange("[-\d]"); | 
| -testValidRange("[-\d-]"); | 
| -testValidRange("[^-\d-]"); | 
| -testValidRange("[^-\d-]"); | 
| -testValidRange("[0-9-\w]"); | 
| - | 
| -// Escaped dashes do not count as range operators. | 
| -testValidRange("[\\d\\-z]"); | 
| -testValidRange("[z\\-\\d]"); | 
| -testValidRange("[\\d\\-\\d]"); | 
| -testValidRange("[z\\-x]"); | 
| -testValidRange("[x\\-\\d\\-\\d]"); | 
| - | 
| - | 
| - | 
| - | 
|  |