xref: /aosp_15_r20/external/pcre/testdata/testoutput15 (revision 22dc650d8ae982c6770746019a6f94af92b0f024)
1*22dc650dSSadaf Ebrahimi# These are:
2*22dc650dSSadaf Ebrahimi#
3*22dc650dSSadaf Ebrahimi# (1) Tests of the match-limiting features. The results are different for
4*22dc650dSSadaf Ebrahimi# interpretive or JIT matching, so this test should not be run with JIT. The
5*22dc650dSSadaf Ebrahimi# same tests are run using JIT in test 17.
6*22dc650dSSadaf Ebrahimi
7*22dc650dSSadaf Ebrahimi# (2) Other tests that must not be run with JIT.
8*22dc650dSSadaf Ebrahimi
9*22dc650dSSadaf Ebrahimi# These tests are first so that they don't inherit a large enough heap frame
10*22dc650dSSadaf Ebrahimi# vector from a previous test.
11*22dc650dSSadaf Ebrahimi
12*22dc650dSSadaf Ebrahimi/(*LIMIT_HEAP=21)\[(a)]{60}/expand
13*22dc650dSSadaf Ebrahimi    \[a]{60}
14*22dc650dSSadaf EbrahimiFailed: error -63: heap limit exceeded
15*22dc650dSSadaf Ebrahimi
16*22dc650dSSadaf Ebrahimi"(*LIMIT_HEAP=21)()((?))()()()()()()()()()()()()()()()()()()()()()()()(())()()()()()()()()()()()()()()()()()()()()()(())()()()()()()()()()()()()()"
17*22dc650dSSadaf Ebrahimi  xx
18*22dc650dSSadaf EbrahimiFailed: error -63: heap limit exceeded
19*22dc650dSSadaf Ebrahimi
20*22dc650dSSadaf Ebrahimi# -----------------------------------------------------------------------
21*22dc650dSSadaf Ebrahimi
22*22dc650dSSadaf Ebrahimi/(a+)*zz/I
23*22dc650dSSadaf EbrahimiCapture group count = 1
24*22dc650dSSadaf EbrahimiStarting code units: a z
25*22dc650dSSadaf EbrahimiLast code unit = 'z'
26*22dc650dSSadaf EbrahimiSubject length lower bound = 2
27*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits_noheap
28*22dc650dSSadaf EbrahimiMinimum match limit = 7
29*22dc650dSSadaf EbrahimiMinimum depth limit = 7
30*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
31*22dc650dSSadaf Ebrahimi 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
32*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaz\=find_limits_noheap
33*22dc650dSSadaf EbrahimiMinimum match limit = 20481
34*22dc650dSSadaf EbrahimiMinimum depth limit = 30
35*22dc650dSSadaf EbrahimiNo match
36*22dc650dSSadaf Ebrahimi
37*22dc650dSSadaf Ebrahimi!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
38*22dc650dSSadaf EbrahimiCapture group count = 1
39*22dc650dSSadaf EbrahimiMay match empty string
40*22dc650dSSadaf EbrahimiSubject length lower bound = 0
41*22dc650dSSadaf Ebrahimi   /* this is a C style comment */\=find_limits_noheap
42*22dc650dSSadaf EbrahimiMinimum match limit = 64
43*22dc650dSSadaf EbrahimiMinimum depth limit = 7
44*22dc650dSSadaf Ebrahimi 0: /* this is a C style comment */
45*22dc650dSSadaf Ebrahimi 1: /* this is a C style comment */
46*22dc650dSSadaf Ebrahimi
47*22dc650dSSadaf Ebrahimi/^(?>a)++/
48*22dc650dSSadaf Ebrahimi    aa\=find_limits_noheap
49*22dc650dSSadaf EbrahimiMinimum match limit = 5
50*22dc650dSSadaf EbrahimiMinimum depth limit = 3
51*22dc650dSSadaf Ebrahimi 0: aa
52*22dc650dSSadaf Ebrahimi    aaaaaaaaa\=find_limits_noheap
53*22dc650dSSadaf EbrahimiMinimum match limit = 12
54*22dc650dSSadaf EbrahimiMinimum depth limit = 3
55*22dc650dSSadaf Ebrahimi 0: aaaaaaaaa
56*22dc650dSSadaf Ebrahimi
57*22dc650dSSadaf Ebrahimi/(a)(?1)++/
58*22dc650dSSadaf Ebrahimi    aa\=find_limits_noheap
59*22dc650dSSadaf EbrahimiMinimum match limit = 7
60*22dc650dSSadaf EbrahimiMinimum depth limit = 5
61*22dc650dSSadaf Ebrahimi 0: aa
62*22dc650dSSadaf Ebrahimi 1: a
63*22dc650dSSadaf Ebrahimi    aaaaaaaaa\=find_limits_noheap
64*22dc650dSSadaf EbrahimiMinimum match limit = 21
65*22dc650dSSadaf EbrahimiMinimum depth limit = 5
66*22dc650dSSadaf Ebrahimi 0: aaaaaaaaa
67*22dc650dSSadaf Ebrahimi 1: a
68*22dc650dSSadaf Ebrahimi
69*22dc650dSSadaf Ebrahimi/a(?:.)*?a/ims
70*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbbbbbbbbbbba\=find_limits_noheap
71*22dc650dSSadaf EbrahimiMinimum match limit = 24
72*22dc650dSSadaf EbrahimiMinimum depth limit = 3
73*22dc650dSSadaf Ebrahimi 0: abbbbbbbbbbbbbbbbbbbbba
74*22dc650dSSadaf Ebrahimi
75*22dc650dSSadaf Ebrahimi/a(?:.(*THEN))*?a/ims
76*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbbbbbbbbbbba\=find_limits_noheap
77*22dc650dSSadaf EbrahimiMinimum match limit = 66
78*22dc650dSSadaf EbrahimiMinimum depth limit = 45
79*22dc650dSSadaf Ebrahimi 0: abbbbbbbbbbbbbbbbbbbbba
80*22dc650dSSadaf Ebrahimi
81*22dc650dSSadaf Ebrahimi/a(?:.(*THEN:ABC))*?a/ims
82*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbbbbbbbbbbba\=find_limits_noheap
83*22dc650dSSadaf EbrahimiMinimum match limit = 66
84*22dc650dSSadaf EbrahimiMinimum depth limit = 45
85*22dc650dSSadaf Ebrahimi 0: abbbbbbbbbbbbbbbbbbbbba
86*22dc650dSSadaf Ebrahimi
87*22dc650dSSadaf Ebrahimi/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
88*22dc650dSSadaf Ebrahimi     aabbccddee\=find_limits_noheap
89*22dc650dSSadaf EbrahimiMinimum match limit = 7
90*22dc650dSSadaf EbrahimiMinimum depth limit = 7
91*22dc650dSSadaf Ebrahimi 0: aabbccddee
92*22dc650dSSadaf Ebrahimi
93*22dc650dSSadaf Ebrahimi/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
94*22dc650dSSadaf Ebrahimi     aabbccddee\=find_limits_noheap
95*22dc650dSSadaf EbrahimiMinimum match limit = 12
96*22dc650dSSadaf EbrahimiMinimum depth limit = 12
97*22dc650dSSadaf Ebrahimi 0: aabbccddee
98*22dc650dSSadaf Ebrahimi 1: aa
99*22dc650dSSadaf Ebrahimi 2: bb
100*22dc650dSSadaf Ebrahimi 3: cc
101*22dc650dSSadaf Ebrahimi 4: dd
102*22dc650dSSadaf Ebrahimi 5: ee
103*22dc650dSSadaf Ebrahimi
104*22dc650dSSadaf Ebrahimi/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
105*22dc650dSSadaf Ebrahimi     aabbccddee\=find_limits_noheap
106*22dc650dSSadaf EbrahimiMinimum match limit = 10
107*22dc650dSSadaf EbrahimiMinimum depth limit = 10
108*22dc650dSSadaf Ebrahimi 0: aabbccddee
109*22dc650dSSadaf Ebrahimi 1: aa
110*22dc650dSSadaf Ebrahimi 2: cc
111*22dc650dSSadaf Ebrahimi 3: ee
112*22dc650dSSadaf Ebrahimi
113*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=12bc)abc/
114*22dc650dSSadaf EbrahimiFailed: error 160 at offset 17: (*VERB) not recognized or malformed
115*22dc650dSSadaf Ebrahimi
116*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=4294967290)abc/
117*22dc650dSSadaf EbrahimiFailed: error 160 at offset 24: (*VERB) not recognized or malformed
118*22dc650dSSadaf Ebrahimi
119*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=4294967280)abc/I
120*22dc650dSSadaf EbrahimiCapture group count = 0
121*22dc650dSSadaf EbrahimiDepth limit = 4294967280
122*22dc650dSSadaf EbrahimiFirst code unit = 'a'
123*22dc650dSSadaf EbrahimiLast code unit = 'c'
124*22dc650dSSadaf EbrahimiSubject length lower bound = 3
125*22dc650dSSadaf Ebrahimi
126*22dc650dSSadaf Ebrahimi/(a+)*zz/
127*22dc650dSSadaf Ebrahimi\= Expect no match
128*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
129*22dc650dSSadaf EbrahimiNo match
130*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
131*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=match_limit=3000
132*22dc650dSSadaf EbrahimiFailed: error -47: match limit exceeded
133*22dc650dSSadaf Ebrahimi
134*22dc650dSSadaf Ebrahimi/(a+)*zz/
135*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
136*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=depth_limit=10
137*22dc650dSSadaf EbrahimiFailed: error -53: matching depth limit exceeded
138*22dc650dSSadaf Ebrahimi
139*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=3000)(a+)*zz/I
140*22dc650dSSadaf EbrahimiCapture group count = 1
141*22dc650dSSadaf EbrahimiMatch limit = 3000
142*22dc650dSSadaf EbrahimiStarting code units: a z
143*22dc650dSSadaf EbrahimiLast code unit = 'z'
144*22dc650dSSadaf EbrahimiSubject length lower bound = 2
145*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
146*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
147*22dc650dSSadaf EbrahimiFailed: error -47: match limit exceeded
148*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
149*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=match_limit=60000
150*22dc650dSSadaf EbrahimiFailed: error -47: match limit exceeded
151*22dc650dSSadaf Ebrahimi
152*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
153*22dc650dSSadaf EbrahimiCapture group count = 1
154*22dc650dSSadaf EbrahimiMatch limit = 3000
155*22dc650dSSadaf EbrahimiStarting code units: a z
156*22dc650dSSadaf EbrahimiLast code unit = 'z'
157*22dc650dSSadaf EbrahimiSubject length lower bound = 2
158*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
159*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
160*22dc650dSSadaf EbrahimiFailed: error -47: match limit exceeded
161*22dc650dSSadaf Ebrahimi
162*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=60000)(a+)*zz/I
163*22dc650dSSadaf EbrahimiCapture group count = 1
164*22dc650dSSadaf EbrahimiMatch limit = 60000
165*22dc650dSSadaf EbrahimiStarting code units: a z
166*22dc650dSSadaf EbrahimiLast code unit = 'z'
167*22dc650dSSadaf EbrahimiSubject length lower bound = 2
168*22dc650dSSadaf Ebrahimi\= Expect no match
169*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
170*22dc650dSSadaf EbrahimiNo match
171*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
172*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=match_limit=3000
173*22dc650dSSadaf EbrahimiFailed: error -47: match limit exceeded
174*22dc650dSSadaf Ebrahimi
175*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=10)(a+)*zz/I
176*22dc650dSSadaf EbrahimiCapture group count = 1
177*22dc650dSSadaf EbrahimiDepth limit = 10
178*22dc650dSSadaf EbrahimiStarting code units: a z
179*22dc650dSSadaf EbrahimiLast code unit = 'z'
180*22dc650dSSadaf EbrahimiSubject length lower bound = 2
181*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
182*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
183*22dc650dSSadaf EbrahimiFailed: error -53: matching depth limit exceeded
184*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
185*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=depth_limit=1000
186*22dc650dSSadaf EbrahimiFailed: error -53: matching depth limit exceeded
187*22dc650dSSadaf Ebrahimi
188*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=10)(*LIMIT_DEPTH=1000)(a+)*zz/I
189*22dc650dSSadaf EbrahimiCapture group count = 1
190*22dc650dSSadaf EbrahimiDepth limit = 1000
191*22dc650dSSadaf EbrahimiStarting code units: a z
192*22dc650dSSadaf EbrahimiLast code unit = 'z'
193*22dc650dSSadaf EbrahimiSubject length lower bound = 2
194*22dc650dSSadaf Ebrahimi\= Expect no match
195*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
196*22dc650dSSadaf EbrahimiNo match
197*22dc650dSSadaf Ebrahimi
198*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=1000)(a+)*zz/I
199*22dc650dSSadaf EbrahimiCapture group count = 1
200*22dc650dSSadaf EbrahimiDepth limit = 1000
201*22dc650dSSadaf EbrahimiStarting code units: a z
202*22dc650dSSadaf EbrahimiLast code unit = 'z'
203*22dc650dSSadaf EbrahimiSubject length lower bound = 2
204*22dc650dSSadaf Ebrahimi\= Expect no match
205*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
206*22dc650dSSadaf EbrahimiNo match
207*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
208*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=depth_limit=10
209*22dc650dSSadaf EbrahimiFailed: error -53: matching depth limit exceeded
210*22dc650dSSadaf Ebrahimi
211*22dc650dSSadaf Ebrahimi# These three have infinitely nested recursions.
212*22dc650dSSadaf Ebrahimi
213*22dc650dSSadaf Ebrahimi/((?2))((?1))/
214*22dc650dSSadaf Ebrahimi    abc
215*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
216*22dc650dSSadaf Ebrahimi
217*22dc650dSSadaf Ebrahimi/((?(R2)a+|(?1)b))()/
218*22dc650dSSadaf Ebrahimi    aaaabcde
219*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
220*22dc650dSSadaf Ebrahimi
221*22dc650dSSadaf Ebrahimi/(?(R)a*(?1)|((?R))b)/
222*22dc650dSSadaf Ebrahimi    aaaabcde
223*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
224*22dc650dSSadaf Ebrahimi
225*22dc650dSSadaf Ebrahimi# The allusedtext modifier does not work with JIT, which does not maintain
226*22dc650dSSadaf Ebrahimi# the leftchar/rightchar data.
227*22dc650dSSadaf Ebrahimi
228*22dc650dSSadaf Ebrahimi/abc(?=xyz)/allusedtext
229*22dc650dSSadaf Ebrahimi    abcxyzpqr
230*22dc650dSSadaf Ebrahimi 0: abcxyz
231*22dc650dSSadaf Ebrahimi       >>>
232*22dc650dSSadaf Ebrahimi    abcxyzpqr\=aftertext
233*22dc650dSSadaf Ebrahimi 0: abcxyz
234*22dc650dSSadaf Ebrahimi       >>>
235*22dc650dSSadaf Ebrahimi 0+ xyzpqr
236*22dc650dSSadaf Ebrahimi
237*22dc650dSSadaf Ebrahimi/(?<=pqr)abc(?=xyz)/allusedtext
238*22dc650dSSadaf Ebrahimi    xyzpqrabcxyzpqr
239*22dc650dSSadaf Ebrahimi 0: pqrabcxyz
240*22dc650dSSadaf Ebrahimi    <<<   >>>
241*22dc650dSSadaf Ebrahimi    xyzpqrabcxyzpqr\=aftertext
242*22dc650dSSadaf Ebrahimi 0: pqrabcxyz
243*22dc650dSSadaf Ebrahimi    <<<   >>>
244*22dc650dSSadaf Ebrahimi 0+ xyzpqr
245*22dc650dSSadaf Ebrahimi
246*22dc650dSSadaf Ebrahimi/a\b/
247*22dc650dSSadaf Ebrahimi    a.\=allusedtext
248*22dc650dSSadaf Ebrahimi 0: a.
249*22dc650dSSadaf Ebrahimi     >
250*22dc650dSSadaf Ebrahimi    a\=allusedtext
251*22dc650dSSadaf Ebrahimi 0: a
252*22dc650dSSadaf Ebrahimi
253*22dc650dSSadaf Ebrahimi/abc\Kxyz/
254*22dc650dSSadaf Ebrahimi    abcxyz\=allusedtext
255*22dc650dSSadaf Ebrahimi 0: abcxyz
256*22dc650dSSadaf Ebrahimi    <<<
257*22dc650dSSadaf Ebrahimi
258*22dc650dSSadaf Ebrahimi/abc(?=xyz(*ACCEPT))/
259*22dc650dSSadaf Ebrahimi    abcxyz\=allusedtext
260*22dc650dSSadaf Ebrahimi 0: abcxyz
261*22dc650dSSadaf Ebrahimi       >>>
262*22dc650dSSadaf Ebrahimi
263*22dc650dSSadaf Ebrahimi/abc(?=abcde)(?=ab)/allusedtext
264*22dc650dSSadaf Ebrahimi    abcabcdefg
265*22dc650dSSadaf Ebrahimi 0: abcabcde
266*22dc650dSSadaf Ebrahimi       >>>>>
267*22dc650dSSadaf Ebrahimi
268*22dc650dSSadaf Ebrahimi#subject allusedtext
269*22dc650dSSadaf Ebrahimi
270*22dc650dSSadaf Ebrahimi/(?<=abc)123/
271*22dc650dSSadaf Ebrahimi    xyzabc123pqr
272*22dc650dSSadaf Ebrahimi 0: abc123
273*22dc650dSSadaf Ebrahimi    <<<
274*22dc650dSSadaf Ebrahimi    xyzabc12\=ps
275*22dc650dSSadaf EbrahimiPartial match: abc12
276*22dc650dSSadaf Ebrahimi               <<<
277*22dc650dSSadaf Ebrahimi    xyzabc12\=ph
278*22dc650dSSadaf EbrahimiPartial match: abc12
279*22dc650dSSadaf Ebrahimi               <<<
280*22dc650dSSadaf Ebrahimi
281*22dc650dSSadaf Ebrahimi/\babc\b/
282*22dc650dSSadaf Ebrahimi    +++abc+++
283*22dc650dSSadaf Ebrahimi 0: +abc+
284*22dc650dSSadaf Ebrahimi    <   >
285*22dc650dSSadaf Ebrahimi    +++ab\=ps
286*22dc650dSSadaf EbrahimiPartial match: +ab
287*22dc650dSSadaf Ebrahimi               <
288*22dc650dSSadaf Ebrahimi    +++ab\=ph
289*22dc650dSSadaf EbrahimiPartial match: +ab
290*22dc650dSSadaf Ebrahimi               <
291*22dc650dSSadaf Ebrahimi
292*22dc650dSSadaf Ebrahimi/(?<=abc)def/
293*22dc650dSSadaf Ebrahimi    abc\=ph
294*22dc650dSSadaf EbrahimiPartial match: abc
295*22dc650dSSadaf Ebrahimi               <<<
296*22dc650dSSadaf Ebrahimi
297*22dc650dSSadaf Ebrahimi/(?<=123)(*MARK:xx)abc/mark
298*22dc650dSSadaf Ebrahimi    xxxx123a\=ph
299*22dc650dSSadaf EbrahimiPartial match, mark=xx: 123a
300*22dc650dSSadaf Ebrahimi                        <<<
301*22dc650dSSadaf Ebrahimi    xxxx123a\=ps
302*22dc650dSSadaf EbrahimiPartial match, mark=xx: 123a
303*22dc650dSSadaf Ebrahimi                        <<<
304*22dc650dSSadaf Ebrahimi
305*22dc650dSSadaf Ebrahimi/(?<=(?<=a)b)c.*/I
306*22dc650dSSadaf EbrahimiCapture group count = 0
307*22dc650dSSadaf EbrahimiMax lookbehind = 1
308*22dc650dSSadaf EbrahimiFirst code unit = 'c'
309*22dc650dSSadaf EbrahimiSubject length lower bound = 1
310*22dc650dSSadaf Ebrahimi    abc\=ph
311*22dc650dSSadaf EbrahimiPartial match: abc
312*22dc650dSSadaf Ebrahimi               <<
313*22dc650dSSadaf Ebrahimi\= Expect no match
314*22dc650dSSadaf Ebrahimi    xbc\=ph
315*22dc650dSSadaf EbrahimiNo match
316*22dc650dSSadaf Ebrahimi
317*22dc650dSSadaf Ebrahimi/(?<=ab)c.*/I
318*22dc650dSSadaf EbrahimiCapture group count = 0
319*22dc650dSSadaf EbrahimiMax lookbehind = 2
320*22dc650dSSadaf EbrahimiFirst code unit = 'c'
321*22dc650dSSadaf EbrahimiSubject length lower bound = 1
322*22dc650dSSadaf Ebrahimi    abc\=ph
323*22dc650dSSadaf EbrahimiPartial match: abc
324*22dc650dSSadaf Ebrahimi               <<
325*22dc650dSSadaf Ebrahimi\= Expect no match
326*22dc650dSSadaf Ebrahimi    xbc\=ph
327*22dc650dSSadaf EbrahimiNo match
328*22dc650dSSadaf Ebrahimi
329*22dc650dSSadaf Ebrahimi/abc(?<=bc)def/
330*22dc650dSSadaf Ebrahimi    xxxabcd\=ph
331*22dc650dSSadaf EbrahimiPartial match: abcd
332*22dc650dSSadaf Ebrahimi
333*22dc650dSSadaf Ebrahimi/(?<=ab)cdef/
334*22dc650dSSadaf Ebrahimi    xxabcd\=ph
335*22dc650dSSadaf EbrahimiPartial match: abcd
336*22dc650dSSadaf Ebrahimi               <<
337*22dc650dSSadaf Ebrahimi
338*22dc650dSSadaf Ebrahimi/(?<=(?<=(?<=a)b)c)./I
339*22dc650dSSadaf EbrahimiCapture group count = 0
340*22dc650dSSadaf EbrahimiMax lookbehind = 1
341*22dc650dSSadaf EbrahimiSubject length lower bound = 1
342*22dc650dSSadaf Ebrahimi    123abcXYZ
343*22dc650dSSadaf Ebrahimi 0: abcX
344*22dc650dSSadaf Ebrahimi    <<<
345*22dc650dSSadaf Ebrahimi
346*22dc650dSSadaf Ebrahimi/(?<=ab(cd(?<=...)))./I
347*22dc650dSSadaf EbrahimiCapture group count = 1
348*22dc650dSSadaf EbrahimiMax lookbehind = 4
349*22dc650dSSadaf EbrahimiSubject length lower bound = 1
350*22dc650dSSadaf Ebrahimi    abcdX
351*22dc650dSSadaf Ebrahimi 0: abcdX
352*22dc650dSSadaf Ebrahimi    <<<<
353*22dc650dSSadaf Ebrahimi 1: cd
354*22dc650dSSadaf Ebrahimi
355*22dc650dSSadaf Ebrahimi/(?<=ab((?<=...)cd))./I
356*22dc650dSSadaf EbrahimiCapture group count = 1
357*22dc650dSSadaf EbrahimiMax lookbehind = 4
358*22dc650dSSadaf EbrahimiSubject length lower bound = 1
359*22dc650dSSadaf Ebrahimi    ZabcdX
360*22dc650dSSadaf Ebrahimi 0: ZabcdX
361*22dc650dSSadaf Ebrahimi    <<<<<
362*22dc650dSSadaf Ebrahimi 1: cd
363*22dc650dSSadaf Ebrahimi
364*22dc650dSSadaf Ebrahimi/(?<=((?<=(?<=ab).))(?1)(?1))./I
365*22dc650dSSadaf EbrahimiCapture group count = 1
366*22dc650dSSadaf EbrahimiMax lookbehind = 2
367*22dc650dSSadaf EbrahimiSubject length lower bound = 1
368*22dc650dSSadaf Ebrahimi    abxZ
369*22dc650dSSadaf Ebrahimi 0: abxZ
370*22dc650dSSadaf Ebrahimi    <<<
371*22dc650dSSadaf Ebrahimi 1:
372*22dc650dSSadaf Ebrahimi
373*22dc650dSSadaf Ebrahimi#subject
374*22dc650dSSadaf Ebrahimi# -------------------------------------------------------------------
375*22dc650dSSadaf Ebrahimi
376*22dc650dSSadaf Ebrahimi# These tests provoke recursion loops, which give a different error message
377*22dc650dSSadaf Ebrahimi# when JIT is used.
378*22dc650dSSadaf Ebrahimi
379*22dc650dSSadaf Ebrahimi/(?R)/I
380*22dc650dSSadaf EbrahimiCapture group count = 0
381*22dc650dSSadaf EbrahimiMay match empty string
382*22dc650dSSadaf EbrahimiSubject length lower bound = 0
383*22dc650dSSadaf Ebrahimi    abcd
384*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
385*22dc650dSSadaf Ebrahimi
386*22dc650dSSadaf Ebrahimi/(a|(?R))/I
387*22dc650dSSadaf EbrahimiCapture group count = 1
388*22dc650dSSadaf EbrahimiMay match empty string
389*22dc650dSSadaf EbrahimiSubject length lower bound = 0
390*22dc650dSSadaf Ebrahimi    abcd
391*22dc650dSSadaf Ebrahimi 0: a
392*22dc650dSSadaf Ebrahimi 1: a
393*22dc650dSSadaf Ebrahimi    defg
394*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
395*22dc650dSSadaf Ebrahimi
396*22dc650dSSadaf Ebrahimi/(ab|(bc|(de|(?R))))/I
397*22dc650dSSadaf EbrahimiCapture group count = 3
398*22dc650dSSadaf EbrahimiMay match empty string
399*22dc650dSSadaf EbrahimiSubject length lower bound = 0
400*22dc650dSSadaf Ebrahimi    abcd
401*22dc650dSSadaf Ebrahimi 0: ab
402*22dc650dSSadaf Ebrahimi 1: ab
403*22dc650dSSadaf Ebrahimi    fghi
404*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
405*22dc650dSSadaf Ebrahimi
406*22dc650dSSadaf Ebrahimi/(ab|(bc|(de|(?1))))/I
407*22dc650dSSadaf EbrahimiCapture group count = 3
408*22dc650dSSadaf EbrahimiMay match empty string
409*22dc650dSSadaf EbrahimiSubject length lower bound = 0
410*22dc650dSSadaf Ebrahimi    abcd
411*22dc650dSSadaf Ebrahimi 0: ab
412*22dc650dSSadaf Ebrahimi 1: ab
413*22dc650dSSadaf Ebrahimi    fghi
414*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
415*22dc650dSSadaf Ebrahimi
416*22dc650dSSadaf Ebrahimi/x(ab|(bc|(de|(?1)x)x)x)/I
417*22dc650dSSadaf EbrahimiCapture group count = 3
418*22dc650dSSadaf EbrahimiFirst code unit = 'x'
419*22dc650dSSadaf EbrahimiSubject length lower bound = 3
420*22dc650dSSadaf Ebrahimi    xab123
421*22dc650dSSadaf Ebrahimi 0: xab
422*22dc650dSSadaf Ebrahimi 1: ab
423*22dc650dSSadaf Ebrahimi    xfghi
424*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
425*22dc650dSSadaf Ebrahimi
426*22dc650dSSadaf Ebrahimi/(?!\w)(?R)/
427*22dc650dSSadaf Ebrahimi    abcd
428*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
429*22dc650dSSadaf Ebrahimi    =abc
430*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
431*22dc650dSSadaf Ebrahimi
432*22dc650dSSadaf Ebrahimi/(?=\w)(?R)/
433*22dc650dSSadaf Ebrahimi    =abc
434*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
435*22dc650dSSadaf Ebrahimi    abcd
436*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
437*22dc650dSSadaf Ebrahimi
438*22dc650dSSadaf Ebrahimi/(?<!\w)(?R)/
439*22dc650dSSadaf Ebrahimi    abcd
440*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
441*22dc650dSSadaf Ebrahimi
442*22dc650dSSadaf Ebrahimi/(?<=\w)(?R)/
443*22dc650dSSadaf Ebrahimi    abcd
444*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
445*22dc650dSSadaf Ebrahimi
446*22dc650dSSadaf Ebrahimi/(a+|(?R)b)/
447*22dc650dSSadaf Ebrahimi    aaa
448*22dc650dSSadaf Ebrahimi 0: aaa
449*22dc650dSSadaf Ebrahimi 1: aaa
450*22dc650dSSadaf Ebrahimi    bbb
451*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
452*22dc650dSSadaf Ebrahimi
453*22dc650dSSadaf Ebrahimi/[^\xff]((?1))/BI
454*22dc650dSSadaf Ebrahimi------------------------------------------------------------------
455*22dc650dSSadaf Ebrahimi        Bra
456*22dc650dSSadaf Ebrahimi        [^\x{ff}]
457*22dc650dSSadaf Ebrahimi        CBra 1
458*22dc650dSSadaf Ebrahimi        Recurse
459*22dc650dSSadaf Ebrahimi        Ket
460*22dc650dSSadaf Ebrahimi        Ket
461*22dc650dSSadaf Ebrahimi        End
462*22dc650dSSadaf Ebrahimi------------------------------------------------------------------
463*22dc650dSSadaf EbrahimiCapture group count = 1
464*22dc650dSSadaf EbrahimiSubject length lower bound = 1
465*22dc650dSSadaf Ebrahimi    abcd
466*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
467*22dc650dSSadaf Ebrahimi
468*22dc650dSSadaf Ebrahimi# These tests don't behave the same with JIT
469*22dc650dSSadaf Ebrahimi
470*22dc650dSSadaf Ebrahimi/\w+(?C1)/BI,no_auto_possess
471*22dc650dSSadaf Ebrahimi------------------------------------------------------------------
472*22dc650dSSadaf Ebrahimi        Bra
473*22dc650dSSadaf Ebrahimi        \w+
474*22dc650dSSadaf Ebrahimi        Callout 1 8 0
475*22dc650dSSadaf Ebrahimi        Ket
476*22dc650dSSadaf Ebrahimi        End
477*22dc650dSSadaf Ebrahimi------------------------------------------------------------------
478*22dc650dSSadaf EbrahimiCapture group count = 0
479*22dc650dSSadaf EbrahimiOptions: no_auto_possess
480*22dc650dSSadaf EbrahimiStarting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
481*22dc650dSSadaf Ebrahimi  Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
482*22dc650dSSadaf EbrahimiSubject length lower bound = 1
483*22dc650dSSadaf Ebrahimi    abc\=callout_fail=1
484*22dc650dSSadaf Ebrahimi--->abc
485*22dc650dSSadaf Ebrahimi  1 ^  ^    End of pattern
486*22dc650dSSadaf Ebrahimi  1 ^ ^     End of pattern
487*22dc650dSSadaf Ebrahimi  1 ^^      End of pattern
488*22dc650dSSadaf Ebrahimi  1  ^ ^    End of pattern
489*22dc650dSSadaf Ebrahimi  1  ^^     End of pattern
490*22dc650dSSadaf Ebrahimi  1   ^^    End of pattern
491*22dc650dSSadaf EbrahimiNo match
492*22dc650dSSadaf Ebrahimi
493*22dc650dSSadaf Ebrahimi/(*NO_AUTO_POSSESS)\w+(?C1)/BI
494*22dc650dSSadaf Ebrahimi------------------------------------------------------------------
495*22dc650dSSadaf Ebrahimi        Bra
496*22dc650dSSadaf Ebrahimi        \w+
497*22dc650dSSadaf Ebrahimi        Callout 1 26 0
498*22dc650dSSadaf Ebrahimi        Ket
499*22dc650dSSadaf Ebrahimi        End
500*22dc650dSSadaf Ebrahimi------------------------------------------------------------------
501*22dc650dSSadaf EbrahimiCapture group count = 0
502*22dc650dSSadaf EbrahimiCompile options: <none>
503*22dc650dSSadaf EbrahimiOverall options: no_auto_possess
504*22dc650dSSadaf EbrahimiStarting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
505*22dc650dSSadaf Ebrahimi  Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
506*22dc650dSSadaf EbrahimiSubject length lower bound = 1
507*22dc650dSSadaf Ebrahimi    abc\=callout_fail=1
508*22dc650dSSadaf Ebrahimi--->abc
509*22dc650dSSadaf Ebrahimi  1 ^  ^    End of pattern
510*22dc650dSSadaf Ebrahimi  1 ^ ^     End of pattern
511*22dc650dSSadaf Ebrahimi  1 ^^      End of pattern
512*22dc650dSSadaf Ebrahimi  1  ^ ^    End of pattern
513*22dc650dSSadaf Ebrahimi  1  ^^     End of pattern
514*22dc650dSSadaf Ebrahimi  1   ^^    End of pattern
515*22dc650dSSadaf EbrahimiNo match
516*22dc650dSSadaf Ebrahimi
517*22dc650dSSadaf Ebrahimi# This test breaks the JIT stack limit
518*22dc650dSSadaf Ebrahimi
519*22dc650dSSadaf Ebrahimi/(|]+){2,2452}/
520*22dc650dSSadaf Ebrahimi    (|]+){2,2452}
521*22dc650dSSadaf Ebrahimi 0:
522*22dc650dSSadaf Ebrahimi 1:
523*22dc650dSSadaf Ebrahimi
524*22dc650dSSadaf Ebrahimi/b(?<!ax)(?!cx)/allusedtext
525*22dc650dSSadaf Ebrahimi    abc
526*22dc650dSSadaf Ebrahimi 0: abc
527*22dc650dSSadaf Ebrahimi    < >
528*22dc650dSSadaf Ebrahimi    abcz
529*22dc650dSSadaf Ebrahimi 0: abcz
530*22dc650dSSadaf Ebrahimi    < >>
531*22dc650dSSadaf Ebrahimi
532*22dc650dSSadaf Ebrahimi# This test triggers the recursion limit in the interpreter, but completes in
533*22dc650dSSadaf Ebrahimi# JIT. It's in testinput2 with disable_recurse_loop_check to get it to work
534*22dc650dSSadaf Ebrahimi# in the interpreter.
535*22dc650dSSadaf Ebrahimi
536*22dc650dSSadaf Ebrahimi/(a(?1)z||(?1)++)$/
537*22dc650dSSadaf Ebrahimi    abcd
538*22dc650dSSadaf EbrahimiFailed: error -52: nested recursion at the same subject position
539*22dc650dSSadaf Ebrahimi
540*22dc650dSSadaf Ebrahimi# End of testinput15
541