3 # (1) Tests of the match-limiting features. The results are different for
4 # interpretive or JIT matching, so this test should not be run with JIT. The
5 # same tests are run using JIT in test 17.
7 # (2) Other tests that must not be run with JIT.
10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
11 aaaaaaaaaaaaaz\=find_limits
13 !((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
14 /* this is a C style comment */\=find_limits
18 aaaaaaaaa\=find_limits
22 aaaaaaaaa\=find_limits
25 abbbbbbbbbbbbbbbbbbbbba\=find_limits
28 abbbbbbbbbbbbbbbbbbbbba\=find_limits
30 /a(?:.(*THEN:ABC))*?a/ims
31 abbbbbbbbbbbbbbbbbbbbba\=find_limits
33 /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
34 aabbccddee\=find_limits
36 /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
37 aabbccddee\=find_limits
39 /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
40 aabbccddee\=find_limits
42 /(*LIMIT_MATCH=12bc)abc/
44 /(*LIMIT_MATCH=4294967290)abc/
46 /(*LIMIT_DEPTH=4294967280)abc/I
51 \= Expect limit exceeded
52 aaaaaaaaaaaaaz\=match_limit=3000
55 \= Expect limit exceeded
56 aaaaaaaaaaaaaz\=depth_limit=10
58 /(*LIMIT_MATCH=3000)(a+)*zz/I
59 \= Expect limit exceeded
61 \= Expect limit exceeded
62 aaaaaaaaaaaaaz\=match_limit=60000
64 /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
65 \= Expect limit exceeded
68 /(*LIMIT_MATCH=60000)(a+)*zz/I
71 \= Expect limit exceeded
72 aaaaaaaaaaaaaz\=match_limit=3000
74 /(*LIMIT_DEPTH=10)(a+)*zz/I
75 \= Expect limit exceeded
77 \= Expect limit exceeded
78 aaaaaaaaaaaaaz\=depth_limit=1000
80 /(*LIMIT_DEPTH=10)(*LIMIT_DEPTH=1000)(a+)*zz/I
84 /(*LIMIT_DEPTH=1000)(a+)*zz/I
87 \= Expect limit exceeded
88 aaaaaaaaaaaaaz\=depth_limit=10
90 # These three have infinitely nested recursions.
98 /(?(R)a*(?1)|((?R))b)/
101 # The allusedtext modifier does not work with JIT, which does not maintain
102 # the leftchar/rightchar data.
104 /abc(?=xyz)/allusedtext
108 /(?<=pqr)abc(?=xyz)/allusedtext
110 xyzpqrabcxyzpqr\=aftertext
119 /abc(?=xyz(*ACCEPT))/
122 /abc(?=abcde)(?=ab)/allusedtext
125 # These tests provoke recursion loops, which give a different error message
135 /(ab|(bc|(de|(?R))))/I
139 /(ab|(bc|(de|(?1))))/I
143 /x(ab|(bc|(de|(?1)x)x)x)/I
168 # These tests don't behave the same with JIT
170 /\w+(?C1)/BI,no_auto_possess
173 /(*NO_AUTO_POSSESS)\w+(?C1)/BI
176 # This test breaks the JIT stack limit
181 /(*LIMIT_HEAP=21)\[(a)]{60}/expand