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