1# These are:
2#
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.
6
7# (2) Other tests that must not be run with JIT.
8
9/(a+)*zz/I
10  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
11  aaaaaaaaaaaaaz\=find_limits
12
13!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
14   /* this is a C style comment */\=find_limits
15
16/^(?>a)++/
17    aa\=find_limits
18    aaaaaaaaa\=find_limits
19
20/(a)(?1)++/
21    aa\=find_limits
22    aaaaaaaaa\=find_limits
23
24/a(?:.)*?a/ims
25    abbbbbbbbbbbbbbbbbbbbba\=find_limits
26
27/a(?:.(*THEN))*?a/ims
28    abbbbbbbbbbbbbbbbbbbbba\=find_limits
29
30/a(?:.(*THEN:ABC))*?a/ims
31    abbbbbbbbbbbbbbbbbbbbba\=find_limits
32
33/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
34     aabbccddee\=find_limits
35
36/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
37     aabbccddee\=find_limits
38
39/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
40     aabbccddee\=find_limits
41
42/(*LIMIT_MATCH=12bc)abc/
43
44/(*LIMIT_MATCH=4294967290)abc/
45
46/(*LIMIT_DEPTH=4294967280)abc/I
47
48/(a+)*zz/
49\= Expect no match
50    aaaaaaaaaaaaaz
51\= Expect limit exceeded
52    aaaaaaaaaaaaaz\=match_limit=3000
53
54/(a+)*zz/
55\= Expect limit exceeded
56    aaaaaaaaaaaaaz\=depth_limit=10
57
58/(*LIMIT_MATCH=3000)(a+)*zz/I
59\= Expect limit exceeded
60    aaaaaaaaaaaaaz
61\= Expect limit exceeded
62    aaaaaaaaaaaaaz\=match_limit=60000
63
64/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
65\= Expect limit exceeded
66    aaaaaaaaaaaaaz
67
68/(*LIMIT_MATCH=60000)(a+)*zz/I
69\= Expect no match
70    aaaaaaaaaaaaaz
71\= Expect limit exceeded
72    aaaaaaaaaaaaaz\=match_limit=3000
73
74/(*LIMIT_DEPTH=10)(a+)*zz/I
75\= Expect limit exceeded
76    aaaaaaaaaaaaaz
77\= Expect limit exceeded
78    aaaaaaaaaaaaaz\=depth_limit=1000
79
80/(*LIMIT_DEPTH=10)(*LIMIT_DEPTH=1000)(a+)*zz/I
81\= Expect no match
82    aaaaaaaaaaaaaz
83
84/(*LIMIT_DEPTH=1000)(a+)*zz/I
85\= Expect no match
86    aaaaaaaaaaaaaz
87\= Expect limit exceeded
88    aaaaaaaaaaaaaz\=depth_limit=10
89
90# These three have infinitely nested recursions.
91
92/((?2))((?1))/
93    abc
94
95/((?(R2)a+|(?1)b))()/
96    aaaabcde
97
98/(?(R)a*(?1)|((?R))b)/
99    aaaabcde
100
101# The allusedtext modifier does not work with JIT, which does not maintain
102# the leftchar/rightchar data.
103
104/abc(?=xyz)/allusedtext
105    abcxyzpqr
106    abcxyzpqr\=aftertext
107
108/(?<=pqr)abc(?=xyz)/allusedtext
109    xyzpqrabcxyzpqr
110    xyzpqrabcxyzpqr\=aftertext
111
112/a\b/
113    a.\=allusedtext
114    a\=allusedtext
115
116/abc\Kxyz/
117    abcxyz\=allusedtext
118
119/abc(?=xyz(*ACCEPT))/
120    abcxyz\=allusedtext
121
122/abc(?=abcde)(?=ab)/allusedtext
123    abcabcdefg
124
125# These tests provoke recursion loops, which give a different error message
126# when JIT is used.
127
128/(?R)/I
129    abcd
130
131/(a|(?R))/I
132    abcd
133    defg
134
135/(ab|(bc|(de|(?R))))/I
136    abcd
137    fghi
138
139/(ab|(bc|(de|(?1))))/I
140    abcd
141    fghi
142
143/x(ab|(bc|(de|(?1)x)x)x)/I
144    xab123
145    xfghi
146
147/(?!\w)(?R)/
148    abcd
149    =abc
150
151/(?=\w)(?R)/
152    =abc
153    abcd
154
155/(?<!\w)(?R)/
156    abcd
157
158/(?<=\w)(?R)/
159    abcd
160
161/(a+|(?R)b)/
162    aaa
163    bbb
164
165/[^\xff]((?1))/BI
166    abcd
167
168# These tests don't behave the same with JIT
169
170/\w+(?C1)/BI,no_auto_possess
171    abc\=callout_fail=1
172
173/(*NO_AUTO_POSSESS)\w+(?C1)/BI
174    abc\=callout_fail=1
175
176# This test breaks the JIT stack limit
177
178/(|]+){2,2452}/
179    (|]+){2,2452}
180
181/(*LIMIT_HEAP=21)\[(a)]{60}/expand
182    \[a]{60}
183
184# End of testinput15
185