| # These are: |
| # |
| # (1) Tests of the match-limiting features. The results are different for |
| # interpretive or JIT matching, so this test should not be run with JIT. The |
| # same tests are run using JIT in test 17. |
| |
| # (2) Other tests that must not be run with JIT. |
| |
| /(a+)*zz/I |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits |
| aaaaaaaaaaaaaz\=find_limits |
| |
| !((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I |
| /* this is a C style comment */\=find_limits |
| |
| /^(?>a)++/ |
| aa\=find_limits |
| aaaaaaaaa\=find_limits |
| |
| /(a)(?1)++/ |
| aa\=find_limits |
| aaaaaaaaa\=find_limits |
| |
| /a(?:.)*?a/ims |
| abbbbbbbbbbbbbbbbbbbbba\=find_limits |
| |
| /a(?:.(*THEN))*?a/ims |
| abbbbbbbbbbbbbbbbbbbbba\=find_limits |
| |
| /a(?:.(*THEN:ABC))*?a/ims |
| abbbbbbbbbbbbbbbbbbbbba\=find_limits |
| |
| /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/ |
| aabbccddee\=find_limits |
| |
| /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/ |
| aabbccddee\=find_limits |
| |
| /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/ |
| aabbccddee\=find_limits |
| |
| /(*LIMIT_MATCH=12bc)abc/ |
| |
| /(*LIMIT_MATCH=4294967290)abc/ |
| |
| /(*LIMIT_DEPTH=4294967280)abc/I |
| |
| /(a+)*zz/ |
| \= Expect no match |
| aaaaaaaaaaaaaz |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz\=match_limit=3000 |
| |
| /(a+)*zz/ |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz\=depth_limit=10 |
| |
| /(*LIMIT_MATCH=3000)(a+)*zz/I |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz\=match_limit=60000 |
| |
| /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz |
| |
| /(*LIMIT_MATCH=60000)(a+)*zz/I |
| \= Expect no match |
| aaaaaaaaaaaaaz |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz\=match_limit=3000 |
| |
| /(*LIMIT_DEPTH=10)(a+)*zz/I |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz\=depth_limit=1000 |
| |
| /(*LIMIT_DEPTH=10)(*LIMIT_DEPTH=1000)(a+)*zz/I |
| \= Expect no match |
| aaaaaaaaaaaaaz |
| |
| /(*LIMIT_DEPTH=1000)(a+)*zz/I |
| \= Expect no match |
| aaaaaaaaaaaaaz |
| \= Expect limit exceeded |
| aaaaaaaaaaaaaz\=depth_limit=10 |
| |
| # These three have infinitely nested recursions. |
| |
| /((?2))((?1))/ |
| abc |
| |
| /((?(R2)a+|(?1)b))()/ |
| aaaabcde |
| |
| /(?(R)a*(?1)|((?R))b)/ |
| aaaabcde |
| |
| # The allusedtext modifier does not work with JIT, which does not maintain |
| # the leftchar/rightchar data. |
| |
| /abc(?=xyz)/allusedtext |
| abcxyzpqr |
| abcxyzpqr\=aftertext |
| |
| /(?<=pqr)abc(?=xyz)/allusedtext |
| xyzpqrabcxyzpqr |
| xyzpqrabcxyzpqr\=aftertext |
| |
| /a\b/ |
| a.\=allusedtext |
| a\=allusedtext |
| |
| /abc\Kxyz/ |
| abcxyz\=allusedtext |
| |
| /abc(?=xyz(*ACCEPT))/ |
| abcxyz\=allusedtext |
| |
| /abc(?=abcde)(?=ab)/allusedtext |
| abcabcdefg |
| |
| # These tests provoke recursion loops, which give a different error message |
| # when JIT is used. |
| |
| /(?R)/I |
| abcd |
| |
| /(a|(?R))/I |
| abcd |
| defg |
| |
| /(ab|(bc|(de|(?R))))/I |
| abcd |
| fghi |
| |
| /(ab|(bc|(de|(?1))))/I |
| abcd |
| fghi |
| |
| /x(ab|(bc|(de|(?1)x)x)x)/I |
| xab123 |
| xfghi |
| |
| /(?!\w)(?R)/ |
| abcd |
| =abc |
| |
| /(?=\w)(?R)/ |
| =abc |
| abcd |
| |
| /(?<!\w)(?R)/ |
| abcd |
| |
| /(?<=\w)(?R)/ |
| abcd |
| |
| /(a+|(?R)b)/ |
| aaa |
| bbb |
| |
| /[^\xff]((?1))/BI |
| abcd |
| |
| # These tests don't behave the same with JIT |
| |
| /\w+(?C1)/BI,no_auto_possess |
| abc\=callout_fail=1 |
| |
| /(*NO_AUTO_POSSESS)\w+(?C1)/BI |
| abc\=callout_fail=1 |
| |
| # This test breaks the JIT stack limit |
| |
| /(|]+){2,2452}/ |
| (|]+){2,2452} |
| |
| /(*LIMIT_HEAP=21)\[(a)]{60}/expand |
| \[a]{60} |
| |
| # End of testinput15 |