pcre2/testdata/testoutput17

554 lines
28 KiB
Plaintext
Raw Normal View History

# This test is run only when JIT support is available. It checks JIT complete
# and partial modes, and things that are different with JIT.
#pattern jitverify
# JIT does not support this pattern (callout at start of condition).
/(?(?C1)(?=a)a)/I
Capture group count = 0
May match empty string
Subject length lower bound = 0
JIT compilation was not successful (no more memory)
# The following pattern cannot be compiled by JIT.
/b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*
Capture group count = 0
May match empty string
Subject length lower bound = 0
JIT compilation was not successful (no more memory)
# Check that an infinite recursion loop is caught.
/(?(R)a*(?1)|((?R))b)/
aaaabcde
Failed: error -46: JIT stack limit reached
/abcd/I
Capture group count = 0
First code unit = 'a'
Last code unit = 'd'
Subject length lower bound = 4
JIT compilation was successful
abcd
0: abcd (JIT)
\= Expect no match
xyz
No match (JIT)
/(*NO_JIT)abcd/I
Capture group count = 0
First code unit = 'a'
Last code unit = 'd'
Subject length lower bound = 4
JIT compilation was not successful
abcd
0: abcd
\= Expect no match
xyz
No match
/abcd/
abcd
0: abcd (JIT)
ab\=ps
Partial match: ab (JIT)
ab\=ph
Partial match: ab (JIT)
\= Expect no match
xyz
No match (JIT)
/abcd/jitfast
abcd
0: abcd (JIT)
ab\=ps
Partial match: ab (JIT)
ab\=ph
Partial match: ab (JIT)
\= Expect no match
xyz
No match (JIT)
/abcd/jit=1
abcd
0: abcd (JIT)
ab\=ps
Partial match: ab
ab\=ph
Partial match: ab
\= Expect no match
xyz
No match (JIT)
xyz\=ps
No match
/abcd/jit=1,jitfast
abcd
0: abcd (JIT)
ab\=ps
Failed: error -45: bad JIT option
ab\=ph
Failed: error -45: bad JIT option
xyz\=ps
Failed: error -45: bad JIT option
\= Expect no match
xyz
No match (JIT)
/abcd/jit=2
abcd
0: abcd
ab\=ps
Partial match: ab (JIT)
ab\=ph
Partial match: ab
\= Expect no match
xyz
No match
/abcd/jit=2,jitfast
abcd
Failed: error -45: bad JIT option
ab\=ps
Partial match: ab (JIT)
ab\=ph
Failed: error -45: bad JIT option
xyz
Failed: error -45: bad JIT option
/abcd/jit=3
abcd
0: abcd (JIT)
ab\=ps
Partial match: ab (JIT)
ab\=ph
Partial match: ab
\= Expect no match
xyz
No match (JIT)
/abcd/jit=4
abcd
0: abcd
ab\=ps
Partial match: ab
ab\=ph
Partial match: ab (JIT)
\= Expect no match
xyz
No match
/abcd/jit=5
abcd
0: abcd (JIT)
ab\=ps
Partial match: ab
ab\=ph
Partial match: ab (JIT)
\= Expect no match
xyz
No match (JIT)
/abcd/jit=6
abcd
0: abcd
ab\=ps
Partial match: ab (JIT)
ab\=ph
Partial match: ab (JIT)
\= Expect no match
xyz
No match
/abcd/jit=7
abcd
0: abcd (JIT)
ab\=ps
Partial match: ab (JIT)
ab\=ph
Partial match: ab (JIT)
\= Expect no match
xyz
No match (JIT)
/abcd/I,jit=2
Capture group count = 0
First code unit = 'a'
Last code unit = 'd'
Subject length lower bound = 4
JIT compilation was successful
/(*NO_START_OPT)a(*:m)b/mark
\= Expect no match
a
No match, mark = m (JIT)
/^12345678abcd/m
12345678abcd
0: 12345678abcd (JIT)
# Limits tests that give different output with JIT.
/(a+)*zz/I
Capture group count = 1
Starting code units: a z
Last code unit = 'z'
Subject length lower bound = 2
JIT compilation was successful
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
Minimum match limit = 2
0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz (JIT)
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\= Expect no match
aaaaaaaaaaaaaz\=find_limits
Minimum match limit = 16383
No match (JIT)
!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
Capture group count = 1
May match empty string
Subject length lower bound = 0
JIT compilation was successful
/* this is a C style comment */\=find_limits
2015-09-02 10:35:50 +02:00
Minimum match limit = 29
0: /* this is a C style comment */ (JIT)
1: /* this is a C style comment */
/^(?>a)++/
aa\=find_limits
Minimum match limit = 1
0: aa (JIT)
aaaaaaaaa\=find_limits
Minimum match limit = 1
0: aaaaaaaaa (JIT)
/(a)(?1)++/
aa\=find_limits
Minimum match limit = 1
0: aa (JIT)
1: a
aaaaaaaaa\=find_limits
Minimum match limit = 1
0: aaaaaaaaa (JIT)
1: a
/a(?:.)*?a/ims
abbbbbbbbbbbbbbbbbbbbba\=find_limits
2015-09-02 10:35:50 +02:00
Minimum match limit = 22
0: abbbbbbbbbbbbbbbbbbbbba (JIT)
2014-08-08 20:18:18 +02:00
/a(?:.(*THEN))*?a/ims
abbbbbbbbbbbbbbbbbbbbba\=find_limits
2015-09-02 10:35:50 +02:00
Minimum match limit = 22
0: abbbbbbbbbbbbbbbbbbbbba (JIT)
/a(?:.(*THEN:ABC))*?a/ims
abbbbbbbbbbbbbbbbbbbbba\=find_limits
2015-09-02 10:35:50 +02:00
Minimum match limit = 22
0: abbbbbbbbbbbbbbbbbbbbba (JIT)
/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
aabbccddee\=find_limits
Minimum match limit = 5
0: aabbccddee (JIT)
/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
aabbccddee\=find_limits
Minimum match limit = 5
0: aabbccddee (JIT)
1: aa
2: bb
3: cc
4: dd
5: ee
2014-08-08 20:18:18 +02:00
/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
aabbccddee\=find_limits
Minimum match limit = 5
0: aabbccddee (JIT)
1: aa
2: cc
3: ee
/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/jitfast
aabbccddee\=find_limits
Minimum match limit = 5
0: aabbccddee (JIT)
1: aa
2: cc
3: ee
aabbccddee\=jitstack=1
0: aabbccddee (JIT)
1: aa
2: cc
3: ee
/(a+)*zz/
\= Expect no match
aaaaaaaaaaaaaz
No match (JIT)
\= Expect limit exceeded
aaaaaaaaaaaaaz\=match_limit=3000
Failed: error -47: match limit exceeded
/(*LIMIT_MATCH=3000)(a+)*zz/I
Capture group count = 1
Match limit = 3000
Starting code units: a z
Last code unit = 'z'
Subject length lower bound = 2
JIT compilation was successful
\= 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
Capture group count = 1
Match limit = 3000
Starting code units: a z
Last code unit = 'z'
Subject length lower bound = 2
JIT compilation was successful
\= Expect limit exceeded
aaaaaaaaaaaaaz
Failed: error -47: match limit exceeded
/(*LIMIT_MATCH=60000)(a+)*zz/I
Capture group count = 1
Match limit = 60000
Starting code units: a z
Last code unit = 'z'
Subject length lower bound = 2
JIT compilation was successful
\= Expect no match
aaaaaaaaaaaaaz
No match (JIT)
\= Expect limit exceeded
aaaaaaaaaaaaaz\=match_limit=3000
Failed: error -47: match limit exceeded
# These three have infinitely nested recursions.
/((?2))((?1))/
\= Expect JIT stack limit reached
2014-10-06 19:28:42 +02:00
abc
Failed: error -46: JIT stack limit reached
/((?(R2)a+|(?1)b))()/
\= Expect JIT stack limit reached
aaaabcde
Failed: error -46: JIT stack limit reached
/(?(R)a*(?1)|((?R))b)/
\= Expect JIT stack limit reached
aaaabcde
Failed: error -46: JIT stack limit reached
# Invalid options disable JIT when called via pcre2_match(), causing the
# match to happen via the interpreter, but for fast JIT invalid options are
# ignored, so an unanchored match happens.
/abcd/
abcd\=anchored
0: abcd
\= Expect no match
fail abcd\=anchored
No match
/abcd/jitfast
abcd\=anchored
0: abcd (JIT)
succeed abcd\=anchored
0: abcd (JIT)
# Push/pop does not lose the JIT information, though jitverify applies only to
# compilation, but serializing (save/load) discards JIT data completely.
2014-10-06 19:28:42 +02:00
/^abc\Kdef/info,push
** Applies only to compile when pattern is stacked with 'push': jitverify
Capture group count = 0
Compile options: <none>
Overall options: anchored
First code unit = 'a'
Subject length lower bound = 6
JIT compilation was successful
#pop jitverify
2014-10-06 19:28:42 +02:00
abcdef
0: def (JIT)
2014-08-08 20:18:18 +02:00
/^abc\Kdef/info,push
** Applies only to compile when pattern is stacked with 'push': jitverify
Capture group count = 0
Compile options: <none>
Overall options: anchored
First code unit = 'a'
Subject length lower bound = 6
JIT compilation was successful
#save testsaved1
#load testsaved1
#pop jitverify
abcdef
2014-10-06 19:28:42 +02:00
0: def
#load testsaved1
#pop jit,jitverify
abcdef
0: def (JIT)
2016-02-26 19:26:17 +01:00
/abcd/pushcopy,jitverify
** Applies only to compile when pattern is stacked with 'push': jitverify
abcd
0: abcd (JIT)
#pop jitverify
abcd
0: abcd
# Test pattern compilation
2014-10-06 19:28:42 +02:00
/(?:a|b|c|d|e)(?R)/jit=1
2014-10-06 19:28:42 +02:00
/(?:a|b|c|d|e)(?R)(?R)/jit=1
2014-10-06 19:28:42 +02:00
/(a(?:a|b|c|d|e)b){8,16}/jit=1
2014-10-06 19:28:42 +02:00
/(?:|a|){100}x/jit=1
# These tests provoke recursion loops, which give a different error message
# when JIT is used.
/(?R)/I
Capture group count = 0
May match empty string
Subject length lower bound = 0
JIT compilation was successful
abcd
Failed: error -46: JIT stack limit reached
/(a|(?R))/I
Capture group count = 1
May match empty string
2015-11-11 10:42:26 +01:00
Subject length lower bound = 0
JIT compilation was successful
abcd
0: a (JIT)
1: a
defg
Failed: error -46: JIT stack limit reached
/(ab|(bc|(de|(?R))))/I
Capture group count = 3
May match empty string
2015-11-11 10:42:26 +01:00
Subject length lower bound = 0
JIT compilation was successful
abcd
0: ab (JIT)
1: ab
fghi
Failed: error -46: JIT stack limit reached
/(ab|(bc|(de|(?1))))/I
Capture group count = 3
May match empty string
2015-11-11 10:42:26 +01:00
Subject length lower bound = 0
JIT compilation was successful
abcd
0: ab (JIT)
1: ab
fghi
Failed: error -46: JIT stack limit reached
/x(ab|(bc|(de|(?1)x)x)x)/I
Capture group count = 3
First code unit = 'x'
Subject length lower bound = 3
JIT compilation was successful
xab123
0: xab (JIT)
1: ab
xfghi
Failed: error -46: JIT stack limit reached
/(?!\w)(?R)/
abcd
Failed: error -46: JIT stack limit reached
=abc
Failed: error -46: JIT stack limit reached
/(?=\w)(?R)/
=abc
Failed: error -46: JIT stack limit reached
abcd
Failed: error -46: JIT stack limit reached
/(?<!\w)(?R)/
abcd
Failed: error -46: JIT stack limit reached
/(?<=\w)(?R)/
abcd
Failed: error -46: JIT stack limit reached
/(a+|(?R)b)/
aaa
0: aaa (JIT)
1: aaa
bbb
Failed: error -46: JIT stack limit reached
/[^\xff]((?1))/BI
------------------------------------------------------------------
Bra
[^\x{ff}]
CBra 1
Recurse
Ket
Ket
End
------------------------------------------------------------------
Capture group count = 1
Subject length lower bound = 1
JIT compilation was successful
abcd
Failed: error -46: JIT stack limit reached
/(x(?1)){4}/
2015-09-02 10:35:50 +02:00
/[axm]{7}/
/(.|.)*?bx/
\= Expect limit exceeded
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax\=match_limit=10000000
2015-09-02 10:35:50 +02:00
Failed: error -47: match limit exceeded
# Test JIT disable
/abc/
abc
0: abc (JIT)
abc\=no_jit
0: abc
/abc/jitfast
abc
0: abc (JIT)
abc\=no_jit
0: abc (JIT)
2016-07-02 17:52:30 +02:00
# ----
2016-07-06 19:39:15 +02:00
/[aC]/mg,firstline,newline=lf
2018-10-17 10:33:38 +02:00
match\nmatch
2016-07-02 17:52:30 +02:00
0: a (JIT)
2016-07-06 19:39:15 +02:00
/[aCz]/mg,firstline,newline=lf
2018-10-17 10:33:38 +02:00
match\nmatch
2016-07-02 17:52:30 +02:00
0: a (JIT)
2015-09-02 10:35:50 +02:00
# End of testinput17