--- /dev/null
+# 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
+Capturing subpattern count = 1
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 7
+Minimum depth limit = 7
+ 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
+ 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaz\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 20481
+Minimum depth limit = 30
+No match
+
+!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
+Capturing subpattern count = 1
+May match empty string
+Subject length lower bound = 0
+ /* this is a C style comment */\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 64
+Minimum depth limit = 7
+ 0: /* this is a C style comment */
+ 1: /* this is a C style comment */
+
+/^(?>a)++/
+ aa\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 5
+Minimum depth limit = 3
+ 0: aa
+ aaaaaaaaa\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 12
+Minimum depth limit = 3
+ 0: aaaaaaaaa
+
+/(a)(?1)++/
+ aa\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 7
+Minimum depth limit = 5
+ 0: aa
+ 1: a
+ aaaaaaaaa\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 21
+Minimum depth limit = 5
+ 0: aaaaaaaaa
+ 1: a
+
+/a(?:.)*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 24
+Minimum depth limit = 3
+ 0: abbbbbbbbbbbbbbbbbbbbba
+
+/a(?:.(*THEN))*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 66
+Minimum depth limit = 45
+ 0: abbbbbbbbbbbbbbbbbbbbba
+
+/a(?:.(*THEN:ABC))*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 66
+Minimum depth limit = 45
+ 0: abbbbbbbbbbbbbbbbbbbbba
+
+/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
+ aabbccddee\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 7
+Minimum depth limit = 7
+ 0: aabbccddee
+
+/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
+ aabbccddee\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 12
+Minimum depth limit = 12
+ 0: aabbccddee
+ 1: aa
+ 2: bb
+ 3: cc
+ 4: dd
+ 5: ee
+
+/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
+ aabbccddee\=find_limits
+Minimum heap limit = 0
+Minimum match limit = 10
+Minimum depth limit = 10
+ 0: aabbccddee
+ 1: aa
+ 2: cc
+ 3: ee
+
+/(*LIMIT_MATCH=12bc)abc/
+Failed: error 160 at offset 17: (*VERB) not recognized or malformed
+
+/(*LIMIT_MATCH=4294967290)abc/
+Failed: error 160 at offset 24: (*VERB) not recognized or malformed
+
+/(*LIMIT_DEPTH=4294967280)abc/I
+Capturing subpattern count = 0
+Depth limit = 4294967280
+First code unit = 'a'
+Last code unit = 'c'
+Subject length lower bound = 3
+
+/(a+)*zz/
+\= Expect no match
+ aaaaaaaaaaaaaz
+No match
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz\=match_limit=3000
+Failed: error -47: match limit exceeded
+
+/(a+)*zz/
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz\=depth_limit=10
+Failed: error -53: matching depth limit exceeded
+
+/(*LIMIT_MATCH=3000)(a+)*zz/I
+Capturing subpattern count = 1
+Match limit = 3000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz
+Failed: error -47: match limit exceeded
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz\=match_limit=60000
+Failed: error -47: match limit exceeded
+
+/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
+Capturing subpattern count = 1
+Match limit = 3000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz
+Failed: error -47: match limit exceeded
+
+/(*LIMIT_MATCH=60000)(a+)*zz/I
+Capturing subpattern count = 1
+Match limit = 60000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+\= Expect no match
+ aaaaaaaaaaaaaz
+No match
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz\=match_limit=3000
+Failed: error -47: match limit exceeded
+
+/(*LIMIT_DEPTH=10)(a+)*zz/I
+Capturing subpattern count = 1
+Depth limit = 10
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz
+Failed: error -53: matching depth limit exceeded
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz\=depth_limit=1000
+Failed: error -53: matching depth limit exceeded
+
+/(*LIMIT_DEPTH=10)(*LIMIT_DEPTH=1000)(a+)*zz/I
+Capturing subpattern count = 1
+Depth limit = 1000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+\= Expect no match
+ aaaaaaaaaaaaaz
+No match
+
+/(*LIMIT_DEPTH=1000)(a+)*zz/I
+Capturing subpattern count = 1
+Depth limit = 1000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+\= Expect no match
+ aaaaaaaaaaaaaz
+No match
+\= Expect limit exceeded
+ aaaaaaaaaaaaaz\=depth_limit=10
+Failed: error -53: matching depth limit exceeded
+
+# These three have infinitely nested recursions.
+
+/((?2))((?1))/
+ abc
+Failed: error -52: nested recursion at the same subject position
+
+/((?(R2)a+|(?1)b))()/
+ aaaabcde
+Failed: error -52: nested recursion at the same subject position
+
+/(?(R)a*(?1)|((?R))b)/
+ aaaabcde
+Failed: error -52: nested recursion at the same subject position
+
+# The allusedtext modifier does not work with JIT, which does not maintain
+# the leftchar/rightchar data.
+
+/abc(?=xyz)/allusedtext
+ abcxyzpqr
+ 0: abcxyz
+ >>>
+ abcxyzpqr\=aftertext
+ 0: abcxyz
+ >>>
+ 0+ xyzpqr
+
+/(?<=pqr)abc(?=xyz)/allusedtext
+ xyzpqrabcxyzpqr
+ 0: pqrabcxyz
+ <<< >>>
+ xyzpqrabcxyzpqr\=aftertext
+ 0: pqrabcxyz
+ <<< >>>
+ 0+ xyzpqr
+
+/a\b/
+ a.\=allusedtext
+ 0: a.
+ >
+ a\=allusedtext
+ 0: a
+
+/abc\Kxyz/
+ abcxyz\=allusedtext
+ 0: abcxyz
+ <<<
+
+/abc(?=xyz(*ACCEPT))/
+ abcxyz\=allusedtext
+ 0: abcxyz
+ >>>
+
+/abc(?=abcde)(?=ab)/allusedtext
+ abcabcdefg
+ 0: abcabcde
+ >>>>>
+
+# These tests provoke recursion loops, which give a different error message
+# when JIT is used.
+
+/(?R)/I
+Capturing subpattern count = 0
+May match empty string
+Subject length lower bound = 0
+ abcd
+Failed: error -52: nested recursion at the same subject position
+
+/(a|(?R))/I
+Capturing subpattern count = 1
+May match empty string
+Subject length lower bound = 0
+ abcd
+ 0: a
+ 1: a
+ defg
+Failed: error -52: nested recursion at the same subject position
+
+/(ab|(bc|(de|(?R))))/I
+Capturing subpattern count = 3
+May match empty string
+Subject length lower bound = 0
+ abcd
+ 0: ab
+ 1: ab
+ fghi
+Failed: error -52: nested recursion at the same subject position
+
+/(ab|(bc|(de|(?1))))/I
+Capturing subpattern count = 3
+May match empty string
+Subject length lower bound = 0
+ abcd
+ 0: ab
+ 1: ab
+ fghi
+Failed: error -52: nested recursion at the same subject position
+
+/x(ab|(bc|(de|(?1)x)x)x)/I
+Capturing subpattern count = 3
+First code unit = 'x'
+Subject length lower bound = 3
+ xab123
+ 0: xab
+ 1: ab
+ xfghi
+Failed: error -52: nested recursion at the same subject position
+
+/(?!\w)(?R)/
+ abcd
+Failed: error -52: nested recursion at the same subject position
+ =abc
+Failed: error -52: nested recursion at the same subject position
+
+/(?=\w)(?R)/
+ =abc
+Failed: error -52: nested recursion at the same subject position
+ abcd
+Failed: error -52: nested recursion at the same subject position
+
+/(?<!\w)(?R)/
+ abcd
+Failed: error -52: nested recursion at the same subject position
+
+/(?<=\w)(?R)/
+ abcd
+Failed: error -52: nested recursion at the same subject position
+
+/(a+|(?R)b)/
+ aaa
+ 0: aaa
+ 1: aaa
+ bbb
+Failed: error -52: nested recursion at the same subject position
+
+/[^\xff]((?1))/BI
+------------------------------------------------------------------
+ Bra
+ [^\x{ff}]
+ CBra 1
+ Recurse
+ Ket
+ Ket
+ End
+------------------------------------------------------------------
+Capturing subpattern count = 1
+Subject length lower bound = 1
+ abcd
+Failed: error -52: nested recursion at the same subject position
+
+# These tests don't behave the same with JIT
+
+/\w+(?C1)/BI,no_auto_possess
+------------------------------------------------------------------
+ Bra
+ \w+
+ Callout 1 8 0
+ Ket
+ End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Options: no_auto_possess
+Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
+ Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
+Subject length lower bound = 1
+ abc\=callout_fail=1
+--->abc
+ 1 ^ ^ End of pattern
+ 1 ^ ^ End of pattern
+ 1 ^^ End of pattern
+ 1 ^ ^ End of pattern
+ 1 ^^ End of pattern
+ 1 ^^ End of pattern
+No match
+
+/(*NO_AUTO_POSSESS)\w+(?C1)/BI
+------------------------------------------------------------------
+ Bra
+ \w+
+ Callout 1 26 0
+ Ket
+ End
+------------------------------------------------------------------
+Capturing subpattern count = 0
+Compile options: <none>
+Overall options: no_auto_possess
+Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P
+ Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
+Subject length lower bound = 1
+ abc\=callout_fail=1
+--->abc
+ 1 ^ ^ End of pattern
+ 1 ^ ^ End of pattern
+ 1 ^^ End of pattern
+ 1 ^ ^ End of pattern
+ 1 ^^ End of pattern
+ 1 ^^ End of pattern
+No match
+
+# This test breaks the JIT stack limit
+
+/(|]+){2,2452}/
+ (|]+){2,2452}
+ 0:
+ 1:
+
+/(*LIMIT_HEAP=21)\[(a)]{60}/expand
+ \[a]{60}
+Failed: error -63: heap limit exceeded
+
+# End of testinput15