# Tests of \C when Unicode support is available. Note that \C is not supported
# for DFA matching in UTF mode, so this test is not run with -dfa. The output
# of this test is different in 8-, 16-, and 32-bit modes. Some tests may match
# in some widths and not in others.

/ab\Cde/utf,info
Capturing subpattern count = 0
Contains \C
Options: utf
First code unit = 'a'
Last code unit = 'e'
Subject length lower bound = 0
    abXde
 0: abXde

# This should produce an error diagnostic (\C in UTF lookbehind)

/(?<=ab\Cde)X/utf
Failed: error 136 at offset 10: \C is not allowed in a lookbehind assertion

# Autopossessification tests

/\C+\X \X+\C/Bx
------------------------------------------------------------------
        Bra
        AllAny+
        extuni
        extuni+
        AllAny
        Ket
        End
------------------------------------------------------------------

/\C+\X \X+\C/Bx,utf
------------------------------------------------------------------
        Bra
        Anybyte+
        extuni
        extuni+
        Anybyte
        Ket
        End
------------------------------------------------------------------

/\C\X*TӅ;
{0,6}\v+F
/utf
\= Expect no match
    Ӆ\x0a
No match

/\C(\W?ſ)'?{{/utf
\= Expect no match
    \\C(\\W?ſ)'?{{
No match

/X(\C{3})/utf
    X\x{1234}
No match
    X\x{11234}Y
 0: X\x{11234}Y
 1: \x{11234}Y
    X\x{11234}YZ
 0: X\x{11234}Y
 1: \x{11234}Y

/X(\C{4})/utf
    X\x{1234}YZ
No match
    X\x{11234}YZ
 0: X\x{11234}YZ
 1: \x{11234}YZ
    X\x{11234}YZW
 0: X\x{11234}YZ
 1: \x{11234}YZ

/X\C*/utf
    XYZabcdce
 0: XYZabcdce

/X\C*?/utf
    XYZabcde
 0: X

/X\C{3,5}/utf
    Xabcdefg
 0: Xabcde
    X\x{1234}
No match
    X\x{1234}YZ
 0: X\x{1234}YZ
    X\x{1234}\x{512}
No match
    X\x{1234}\x{512}YZ
 0: X\x{1234}\x{512}YZ
    X\x{11234}Y
 0: X\x{11234}Y
    X\x{11234}YZ
 0: X\x{11234}YZ
    X\x{11234}\x{512}
 0: X\x{11234}\x{512}
    X\x{11234}\x{512}YZ
 0: X\x{11234}\x{512}YZ
    X\x{11234}\x{512}\x{11234}Z
 0: X\x{11234}\x{512}\x{11234}

/X\C{3,5}?/utf
    Xabcdefg
 0: Xabc
    X\x{1234}
No match
    X\x{1234}YZ
 0: X\x{1234}YZ
    X\x{1234}\x{512}
No match
    X\x{11234}Y
 0: X\x{11234}Y
    X\x{11234}YZ
 0: X\x{11234}Y
    X\x{11234}\x{512}YZ
 0: X\x{11234}\x{512}
    X\x{11234}
No match

/a\Cb/utf
    aXb
 0: aXb
    a\nb
 0: a\x{0a}b
    a\x{100}b
 0: a\x{100}b

/a\C\Cb/utf
    a\x{100}b
No match
    a\x{12257}b
 0: a\x{12257}b
    a\x{12257}\x{11234}b
No match

/ab\Cde/utf
    abXde
 0: abXde

# This one is here not because it's different to Perl, but because the way
# the captured single code unit is displayed. (In Perl it becomes a character,
# and you can't tell the difference.)

/X(\C)(.*)/utf
    X\x{1234}
 0: X\x{1234}
 1: \x{1234}
 2: 
    X\nabc
 0: X\x{0a}abc
 1: \x{0a}
 2: abc

# This one is here because Perl gives out a grumbly error message (quite
# correctly, but that messes up comparisons).

/a\Cb/utf
\= Expect no match in 8-bit mode
    a\x{100}b
 0: a\x{100}b

# End of testinput22
