# 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
    abXde

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

/(?<=ab\Cde)X/utf

# Autopossessification tests

/\C+\X \X+\C/Bx

/\C+\X \X+\C/Bx,utf

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

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

/X(\C{3})/utf
    X\x{1234}
    X\x{11234}Y
    X\x{11234}YZ

/X(\C{4})/utf
    X\x{1234}YZ
    X\x{11234}YZ
    X\x{11234}YZW

/X\C*/utf
    XYZabcdce

/X\C*?/utf
    XYZabcde

/X\C{3,5}/utf
    Xabcdefg
    X\x{1234}
    X\x{1234}YZ
    X\x{1234}\x{512}
    X\x{1234}\x{512}YZ
    X\x{11234}Y
    X\x{11234}YZ
    X\x{11234}\x{512}
    X\x{11234}\x{512}YZ
    X\x{11234}\x{512}\x{11234}Z

/X\C{3,5}?/utf
    Xabcdefg
    X\x{1234}
    X\x{1234}YZ
    X\x{1234}\x{512}
    X\x{11234}Y
    X\x{11234}YZ
    X\x{11234}\x{512}YZ
    X\x{11234}

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

/a\C\Cb/utf
    a\x{100}b
    a\x{12257}b
    a\x{12257}\x{11234}b

/ab\Cde/utf
    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}
    X\nabc

# 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

# End of testinput22
