xref: /aosp_15_r20/external/pcre/testdata/testinput15 (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 Ebrahimi
15*22dc650dSSadaf Ebrahimi"(*LIMIT_HEAP=21)()((?))()()()()()()()()()()()()()()()()()()()()()()()(())()()()()()()()()()()()()()()()()()()()()()(())()()()()()()()()()()()()()"
16*22dc650dSSadaf Ebrahimi  xx
17*22dc650dSSadaf Ebrahimi
18*22dc650dSSadaf Ebrahimi# -----------------------------------------------------------------------
19*22dc650dSSadaf Ebrahimi
20*22dc650dSSadaf Ebrahimi/(a+)*zz/I
21*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits_noheap
22*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaz\=find_limits_noheap
23*22dc650dSSadaf Ebrahimi
24*22dc650dSSadaf Ebrahimi!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
25*22dc650dSSadaf Ebrahimi   /* this is a C style comment */\=find_limits_noheap
26*22dc650dSSadaf Ebrahimi
27*22dc650dSSadaf Ebrahimi/^(?>a)++/
28*22dc650dSSadaf Ebrahimi    aa\=find_limits_noheap
29*22dc650dSSadaf Ebrahimi    aaaaaaaaa\=find_limits_noheap
30*22dc650dSSadaf Ebrahimi
31*22dc650dSSadaf Ebrahimi/(a)(?1)++/
32*22dc650dSSadaf Ebrahimi    aa\=find_limits_noheap
33*22dc650dSSadaf Ebrahimi    aaaaaaaaa\=find_limits_noheap
34*22dc650dSSadaf Ebrahimi
35*22dc650dSSadaf Ebrahimi/a(?:.)*?a/ims
36*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbbbbbbbbbbba\=find_limits_noheap
37*22dc650dSSadaf Ebrahimi
38*22dc650dSSadaf Ebrahimi/a(?:.(*THEN))*?a/ims
39*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbbbbbbbbbbba\=find_limits_noheap
40*22dc650dSSadaf Ebrahimi
41*22dc650dSSadaf Ebrahimi/a(?:.(*THEN:ABC))*?a/ims
42*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbbbbbbbbbbba\=find_limits_noheap
43*22dc650dSSadaf Ebrahimi
44*22dc650dSSadaf Ebrahimi/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
45*22dc650dSSadaf Ebrahimi     aabbccddee\=find_limits_noheap
46*22dc650dSSadaf Ebrahimi
47*22dc650dSSadaf Ebrahimi/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
48*22dc650dSSadaf Ebrahimi     aabbccddee\=find_limits_noheap
49*22dc650dSSadaf Ebrahimi
50*22dc650dSSadaf Ebrahimi/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
51*22dc650dSSadaf Ebrahimi     aabbccddee\=find_limits_noheap
52*22dc650dSSadaf Ebrahimi
53*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=12bc)abc/
54*22dc650dSSadaf Ebrahimi
55*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=4294967290)abc/
56*22dc650dSSadaf Ebrahimi
57*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=4294967280)abc/I
58*22dc650dSSadaf Ebrahimi
59*22dc650dSSadaf Ebrahimi/(a+)*zz/
60*22dc650dSSadaf Ebrahimi\= Expect no match
61*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
62*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
63*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=match_limit=3000
64*22dc650dSSadaf Ebrahimi
65*22dc650dSSadaf Ebrahimi/(a+)*zz/
66*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
67*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=depth_limit=10
68*22dc650dSSadaf Ebrahimi
69*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=3000)(a+)*zz/I
70*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
71*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
72*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
73*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=match_limit=60000
74*22dc650dSSadaf Ebrahimi
75*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
76*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
77*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
78*22dc650dSSadaf Ebrahimi
79*22dc650dSSadaf Ebrahimi/(*LIMIT_MATCH=60000)(a+)*zz/I
80*22dc650dSSadaf Ebrahimi\= Expect no match
81*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
82*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
83*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=match_limit=3000
84*22dc650dSSadaf Ebrahimi
85*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=10)(a+)*zz/I
86*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
87*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
88*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
89*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=depth_limit=1000
90*22dc650dSSadaf Ebrahimi
91*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=10)(*LIMIT_DEPTH=1000)(a+)*zz/I
92*22dc650dSSadaf Ebrahimi\= Expect no match
93*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
94*22dc650dSSadaf Ebrahimi
95*22dc650dSSadaf Ebrahimi/(*LIMIT_DEPTH=1000)(a+)*zz/I
96*22dc650dSSadaf Ebrahimi\= Expect no match
97*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz
98*22dc650dSSadaf Ebrahimi\= Expect limit exceeded
99*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaz\=depth_limit=10
100*22dc650dSSadaf Ebrahimi
101*22dc650dSSadaf Ebrahimi# These three have infinitely nested recursions.
102*22dc650dSSadaf Ebrahimi
103*22dc650dSSadaf Ebrahimi/((?2))((?1))/
104*22dc650dSSadaf Ebrahimi    abc
105*22dc650dSSadaf Ebrahimi
106*22dc650dSSadaf Ebrahimi/((?(R2)a+|(?1)b))()/
107*22dc650dSSadaf Ebrahimi    aaaabcde
108*22dc650dSSadaf Ebrahimi
109*22dc650dSSadaf Ebrahimi/(?(R)a*(?1)|((?R))b)/
110*22dc650dSSadaf Ebrahimi    aaaabcde
111*22dc650dSSadaf Ebrahimi
112*22dc650dSSadaf Ebrahimi# The allusedtext modifier does not work with JIT, which does not maintain
113*22dc650dSSadaf Ebrahimi# the leftchar/rightchar data.
114*22dc650dSSadaf Ebrahimi
115*22dc650dSSadaf Ebrahimi/abc(?=xyz)/allusedtext
116*22dc650dSSadaf Ebrahimi    abcxyzpqr
117*22dc650dSSadaf Ebrahimi    abcxyzpqr\=aftertext
118*22dc650dSSadaf Ebrahimi
119*22dc650dSSadaf Ebrahimi/(?<=pqr)abc(?=xyz)/allusedtext
120*22dc650dSSadaf Ebrahimi    xyzpqrabcxyzpqr
121*22dc650dSSadaf Ebrahimi    xyzpqrabcxyzpqr\=aftertext
122*22dc650dSSadaf Ebrahimi
123*22dc650dSSadaf Ebrahimi/a\b/
124*22dc650dSSadaf Ebrahimi    a.\=allusedtext
125*22dc650dSSadaf Ebrahimi    a\=allusedtext
126*22dc650dSSadaf Ebrahimi
127*22dc650dSSadaf Ebrahimi/abc\Kxyz/
128*22dc650dSSadaf Ebrahimi    abcxyz\=allusedtext
129*22dc650dSSadaf Ebrahimi
130*22dc650dSSadaf Ebrahimi/abc(?=xyz(*ACCEPT))/
131*22dc650dSSadaf Ebrahimi    abcxyz\=allusedtext
132*22dc650dSSadaf Ebrahimi
133*22dc650dSSadaf Ebrahimi/abc(?=abcde)(?=ab)/allusedtext
134*22dc650dSSadaf Ebrahimi    abcabcdefg
135*22dc650dSSadaf Ebrahimi
136*22dc650dSSadaf Ebrahimi#subject allusedtext
137*22dc650dSSadaf Ebrahimi
138*22dc650dSSadaf Ebrahimi/(?<=abc)123/
139*22dc650dSSadaf Ebrahimi    xyzabc123pqr
140*22dc650dSSadaf Ebrahimi    xyzabc12\=ps
141*22dc650dSSadaf Ebrahimi    xyzabc12\=ph
142*22dc650dSSadaf Ebrahimi
143*22dc650dSSadaf Ebrahimi/\babc\b/
144*22dc650dSSadaf Ebrahimi    +++abc+++
145*22dc650dSSadaf Ebrahimi    +++ab\=ps
146*22dc650dSSadaf Ebrahimi    +++ab\=ph
147*22dc650dSSadaf Ebrahimi
148*22dc650dSSadaf Ebrahimi/(?<=abc)def/
149*22dc650dSSadaf Ebrahimi    abc\=ph
150*22dc650dSSadaf Ebrahimi
151*22dc650dSSadaf Ebrahimi/(?<=123)(*MARK:xx)abc/mark
152*22dc650dSSadaf Ebrahimi    xxxx123a\=ph
153*22dc650dSSadaf Ebrahimi    xxxx123a\=ps
154*22dc650dSSadaf Ebrahimi
155*22dc650dSSadaf Ebrahimi/(?<=(?<=a)b)c.*/I
156*22dc650dSSadaf Ebrahimi    abc\=ph
157*22dc650dSSadaf Ebrahimi\= Expect no match
158*22dc650dSSadaf Ebrahimi    xbc\=ph
159*22dc650dSSadaf Ebrahimi
160*22dc650dSSadaf Ebrahimi/(?<=ab)c.*/I
161*22dc650dSSadaf Ebrahimi    abc\=ph
162*22dc650dSSadaf Ebrahimi\= Expect no match
163*22dc650dSSadaf Ebrahimi    xbc\=ph
164*22dc650dSSadaf Ebrahimi
165*22dc650dSSadaf Ebrahimi/abc(?<=bc)def/
166*22dc650dSSadaf Ebrahimi    xxxabcd\=ph
167*22dc650dSSadaf Ebrahimi
168*22dc650dSSadaf Ebrahimi/(?<=ab)cdef/
169*22dc650dSSadaf Ebrahimi    xxabcd\=ph
170*22dc650dSSadaf Ebrahimi
171*22dc650dSSadaf Ebrahimi/(?<=(?<=(?<=a)b)c)./I
172*22dc650dSSadaf Ebrahimi    123abcXYZ
173*22dc650dSSadaf Ebrahimi
174*22dc650dSSadaf Ebrahimi/(?<=ab(cd(?<=...)))./I
175*22dc650dSSadaf Ebrahimi    abcdX
176*22dc650dSSadaf Ebrahimi
177*22dc650dSSadaf Ebrahimi/(?<=ab((?<=...)cd))./I
178*22dc650dSSadaf Ebrahimi    ZabcdX
179*22dc650dSSadaf Ebrahimi
180*22dc650dSSadaf Ebrahimi/(?<=((?<=(?<=ab).))(?1)(?1))./I
181*22dc650dSSadaf Ebrahimi    abxZ
182*22dc650dSSadaf Ebrahimi
183*22dc650dSSadaf Ebrahimi#subject
184*22dc650dSSadaf Ebrahimi# -------------------------------------------------------------------
185*22dc650dSSadaf Ebrahimi
186*22dc650dSSadaf Ebrahimi# These tests provoke recursion loops, which give a different error message
187*22dc650dSSadaf Ebrahimi# when JIT is used.
188*22dc650dSSadaf Ebrahimi
189*22dc650dSSadaf Ebrahimi/(?R)/I
190*22dc650dSSadaf Ebrahimi    abcd
191*22dc650dSSadaf Ebrahimi
192*22dc650dSSadaf Ebrahimi/(a|(?R))/I
193*22dc650dSSadaf Ebrahimi    abcd
194*22dc650dSSadaf Ebrahimi    defg
195*22dc650dSSadaf Ebrahimi
196*22dc650dSSadaf Ebrahimi/(ab|(bc|(de|(?R))))/I
197*22dc650dSSadaf Ebrahimi    abcd
198*22dc650dSSadaf Ebrahimi    fghi
199*22dc650dSSadaf Ebrahimi
200*22dc650dSSadaf Ebrahimi/(ab|(bc|(de|(?1))))/I
201*22dc650dSSadaf Ebrahimi    abcd
202*22dc650dSSadaf Ebrahimi    fghi
203*22dc650dSSadaf Ebrahimi
204*22dc650dSSadaf Ebrahimi/x(ab|(bc|(de|(?1)x)x)x)/I
205*22dc650dSSadaf Ebrahimi    xab123
206*22dc650dSSadaf Ebrahimi    xfghi
207*22dc650dSSadaf Ebrahimi
208*22dc650dSSadaf Ebrahimi/(?!\w)(?R)/
209*22dc650dSSadaf Ebrahimi    abcd
210*22dc650dSSadaf Ebrahimi    =abc
211*22dc650dSSadaf Ebrahimi
212*22dc650dSSadaf Ebrahimi/(?=\w)(?R)/
213*22dc650dSSadaf Ebrahimi    =abc
214*22dc650dSSadaf Ebrahimi    abcd
215*22dc650dSSadaf Ebrahimi
216*22dc650dSSadaf Ebrahimi/(?<!\w)(?R)/
217*22dc650dSSadaf Ebrahimi    abcd
218*22dc650dSSadaf Ebrahimi
219*22dc650dSSadaf Ebrahimi/(?<=\w)(?R)/
220*22dc650dSSadaf Ebrahimi    abcd
221*22dc650dSSadaf Ebrahimi
222*22dc650dSSadaf Ebrahimi/(a+|(?R)b)/
223*22dc650dSSadaf Ebrahimi    aaa
224*22dc650dSSadaf Ebrahimi    bbb
225*22dc650dSSadaf Ebrahimi
226*22dc650dSSadaf Ebrahimi/[^\xff]((?1))/BI
227*22dc650dSSadaf Ebrahimi    abcd
228*22dc650dSSadaf Ebrahimi
229*22dc650dSSadaf Ebrahimi# These tests don't behave the same with JIT
230*22dc650dSSadaf Ebrahimi
231*22dc650dSSadaf Ebrahimi/\w+(?C1)/BI,no_auto_possess
232*22dc650dSSadaf Ebrahimi    abc\=callout_fail=1
233*22dc650dSSadaf Ebrahimi
234*22dc650dSSadaf Ebrahimi/(*NO_AUTO_POSSESS)\w+(?C1)/BI
235*22dc650dSSadaf Ebrahimi    abc\=callout_fail=1
236*22dc650dSSadaf Ebrahimi
237*22dc650dSSadaf Ebrahimi# This test breaks the JIT stack limit
238*22dc650dSSadaf Ebrahimi
239*22dc650dSSadaf Ebrahimi/(|]+){2,2452}/
240*22dc650dSSadaf Ebrahimi    (|]+){2,2452}
241*22dc650dSSadaf Ebrahimi
242*22dc650dSSadaf Ebrahimi/b(?<!ax)(?!cx)/allusedtext
243*22dc650dSSadaf Ebrahimi    abc
244*22dc650dSSadaf Ebrahimi    abcz
245*22dc650dSSadaf Ebrahimi
246*22dc650dSSadaf Ebrahimi# This test triggers the recursion limit in the interpreter, but completes in
247*22dc650dSSadaf Ebrahimi# JIT. It's in testinput2 with disable_recurse_loop_check to get it to work
248*22dc650dSSadaf Ebrahimi# in the interpreter.
249*22dc650dSSadaf Ebrahimi
250*22dc650dSSadaf Ebrahimi/(a(?1)z||(?1)++)$/
251*22dc650dSSadaf Ebrahimi    abcd
252*22dc650dSSadaf Ebrahimi
253*22dc650dSSadaf Ebrahimi# End of testinput15
254