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