OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // 1. Redistributions of source code must retain the above copyright | 7 // 1. Redistributions of source code must retain the above copyright |
8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
9 // 2. Redistributions in binary form must reproduce the above copyright | 9 // 2. Redistributions in binary form must reproduce the above copyright |
10 // notice, this list of conditions and the following disclaimer in the | 10 // notice, this list of conditions and the following disclaimer in the |
11 // documentation and/or other materials provided with the distribution. | 11 // documentation and/or other materials provided with the distribution. |
12 // | 12 // |
13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y | 13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y |
14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y | 16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y |
17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N | 19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N |
20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | 21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
23 | 23 |
24 description( | 24 description( |
25 "This tests that function inlining in the DFG JIT doesn't get confused by consta
nts being reused between inliner and inlinee." | 25 'Test for behavior of non-capturing groups, as described in <a href="http://blog
.stevenlevithan.com/archives/npcg-javascript">' + |
| 26 'a blog post by Steven Levithan</a> and <a href="http://bugs.webkit.org/show_bug
.cgi?id=14931">bug 14931</a>.' |
26 ); | 27 ); |
27 | 28 |
28 function foo(a, b) { | 29 shouldBe('/(x)?\\1y/.test("y")', 'true'); |
29 if (b) | 30 shouldBe('/(x)?\\1y/.exec("y")', '["y", undefined]'); |
30 return a + 4; | 31 shouldBe('/(x)?y/.exec("y")', '["y", undefined]'); |
31 return b + 5; | 32 shouldBe('"y".match(/(x)?\\1y/)', '["y", undefined]'); |
32 } | 33 shouldBe('"y".match(/(x)?y/)', '["y", undefined]'); |
33 | 34 shouldBe('"y".match(/(x)?\\1y/g)', '["y"]'); |
34 function bar(a, b) { | 35 shouldBe('"y".split(/(x)?\\1y/)', '["", undefined, ""]'); |
35 return foo(a, b) + 5; | 36 shouldBe('"y".split(/(x)?y/)', '["", undefined, ""]'); |
36 } | 37 shouldBe('"y".search(/(x)?\\1y/)', '0'); |
37 | 38 shouldBe('"y".replace(/(x)?\\1y/, "z")', '"z"'); |
38 for (var i = 0; i < 1000; ++i) | 39 shouldBe('"y".replace(/(x)?y/, "$1")', '""'); |
39 bar(i, i + 1); | 40 shouldBe('"y".replace(/(x)?\\1y/, function($0, $1){ return String($1); })', '"un
defined"'); |
40 | 41 shouldBe('"y".replace(/(x)?y/, function($0, $1){ return String($1); })', '"undef
ined"'); |
41 shouldBe("bar(6, 0)", "10"); | 42 shouldBe('"y".replace(/(x)?y/, function($0, $1){ return $1; })', '"undefined"'); |
42 shouldBe("bar(6, 1)", "15"); | |
43 shouldBe("bar(6, false)", "10"); | |
44 shouldBe("bar(6, true)", "15"); | |
OLD | NEW |