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