# These are:
#
# (1) Tests of the match-limiting features. The results are different for
# interpretive or JIT matching, so this test should not be run with JIT. The
# same tests are run using JIT in test 17.

# (2) Other tests that must not be run with JIT.

/(a+)*zz/I
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
  aaaaaaaaaaaaaz\=find_limits

!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
   /* this is a C style comment */\=find_limits

/^(?>a)++/
    aa\=find_limits
    aaaaaaaaa\=find_limits
    
/(a)(?1)++/
    aa\=find_limits
    aaaaaaaaa\=find_limits

/a(?:.)*?a/ims
    abbbbbbbbbbbbbbbbbbbbba\=find_limits
    
/a(?:.(*THEN))*?a/ims
    abbbbbbbbbbbbbbbbbbbbba\=find_limits

/a(?:.(*THEN:ABC))*?a/ims
    abbbbbbbbbbbbbbbbbbbbba\=find_limits

/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
     aabbccddee\=find_limits

/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
     aabbccddee\=find_limits

/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
     aabbccddee\=find_limits

/(*LIMIT_MATCH=12bc)abc/

/(*LIMIT_MATCH=4294967290)abc/

/(*LIMIT_RECURSION=4294967280)abc/I

/(a+)*zz/
    aaaaaaaaaaaaaz
    aaaaaaaaaaaaaz\=match_limit=3000

/(a+)*zz/
    aaaaaaaaaaaaaz\=recursion_limit=10

/(*LIMIT_MATCH=3000)(a+)*zz/I
    aaaaaaaaaaaaaz
    aaaaaaaaaaaaaz\=match_limit=60000

/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
    aaaaaaaaaaaaaz

/(*LIMIT_MATCH=60000)(a+)*zz/I
    aaaaaaaaaaaaaz
    aaaaaaaaaaaaaz\=match_limit=3000

/(*LIMIT_RECURSION=10)(a+)*zz/I
    aaaaaaaaaaaaaz
    aaaaaaaaaaaaaz\=recursion_limit=1000

/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/I
    aaaaaaaaaaaaaz

/(*LIMIT_RECURSION=1000)(a+)*zz/I
    aaaaaaaaaaaaaz
    aaaaaaaaaaaaaz\=recursion_limit=10
    
# These three have infinitely nested recursions. 
    
/((?2))((?1))/
    abc

/((?(R2)a+|(?1)b))/
    aaaabcde

/(?(R)a*(?1)|((?R))b)/
    aaaabcde
    
# The allusedtext modifier does not work with JIT, which does not maintain
# the leftchar/rightchar data.

/abc(?=xyz)/allusedtext
    abcxyzpqr
    abcxyzpqr\=aftertext
    
/(?<=pqr)abc(?=xyz)/allusedtext
    xyzpqrabcxyzpqr
    xyzpqrabcxyzpqr\=aftertext
    
/a\b/
    a.\=allusedtext
    a\=allusedtext  

/abc\Kxyz/
    abcxyz\=allusedtext

/abc(?=xyz(*ACCEPT))/
    abcxyz\=allusedtext

/abc(?=abcde)(?=ab)/allusedtext
    abcabcdefg
    
# These tests provoke recursion loops, which give a different error message
# when JIT is used.

/(?R)/I
    abcd

/(a|(?R))/I
    abcd
    defg 

/(ab|(bc|(de|(?R))))/I
    abcd
    fghi 

/(ab|(bc|(de|(?1))))/I
    abcd
    fghi 

/x(ab|(bc|(de|(?1)x)x)x)/I
    xab123
    xfghi 

/(?!\w)(?R)/
    abcd
    =abc 

/(?=\w)(?R)/
    =abc 
    abcd

/(?<!\w)(?R)/
    abcd

/(?<=\w)(?R)/
    abcd

/(a+|(?R)b)/
    aaa
    bbb 

/[^\xff]((?1))/BI
    abcd
    
# These tests don't behave the same with JIT 

/\w+(?C1)/BI,no_auto_possess
    abc\=callout_fail=1

/(*NO_AUTO_POSSESS)\w+(?C1)/BI
    abc\=callout_fail=1

# End of testinput15
