1# Tests of \C when Unicode support is available. Note that \C is not supported 2# for DFA matching in UTF mode, so this test is not run with -dfa. The output 3# of this test is different in 8-, 16-, and 32-bit modes. Some tests may match 4# in some widths and not in others. 5 6/ab\Cde/utf,info 7Capture group count = 0 8Contains \C 9Options: utf 10First code unit = 'a' 11Last code unit = 'e' 12Subject length lower bound = 5 13 abXde 14 0: abXde 15 16# This should produce an error diagnostic (\C in UTF lookbehind) in 8-bit and 17# 16-bit modes, but not in 32-bit mode. 18 19/(?<=ab\Cde)X/utf 20 ab!deXYZ 21 0: X 22 23# Autopossessification tests 24 25/\C+\X \X+\C/Bx 26------------------------------------------------------------------ 27 Bra 28 AllAny+ 29 extuni 30 extuni+ 31 AllAny 32 Ket 33 End 34------------------------------------------------------------------ 35 36/\C+\X \X+\C/Bx,utf 37------------------------------------------------------------------ 38 Bra 39 AllAny+ 40 extuni 41 extuni+ 42 AllAny 43 Ket 44 End 45------------------------------------------------------------------ 46 47/\C\X*TӅ; 48{0,6}\v+ 49F 50/utf 51\= Expect no match 52 Ӆ\x0a 53No match 54 55/\C(\W?ſ)'?{{/utf 56\= Expect no match 57 \\C(\\W?ſ)'?{{ 58No match 59 60/X(\C{3})/utf 61 X\x{1234} 62No match 63 X\x{11234}Y 64No match 65 X\x{11234}YZ 66 0: X\x{11234}YZ 67 1: \x{11234}YZ 68 69/X(\C{4})/utf 70 X\x{1234}YZ 71No match 72 X\x{11234}YZ 73No match 74 X\x{11234}YZW 75 0: X\x{11234}YZW 76 1: \x{11234}YZW 77 78/X\C*/utf 79 XYZabcdce 80 0: XYZabcdce 81 82/X\C*?/utf 83 XYZabcde 84 0: X 85 86/X\C{3,5}/utf 87 Xabcdefg 88 0: Xabcde 89 X\x{1234} 90No match 91 X\x{1234}YZ 92 0: X\x{1234}YZ 93 X\x{1234}\x{512} 94No match 95 X\x{1234}\x{512}YZ 96 0: X\x{1234}\x{512}YZ 97 X\x{11234}Y 98No match 99 X\x{11234}YZ 100 0: X\x{11234}YZ 101 X\x{11234}\x{512} 102No match 103 X\x{11234}\x{512}YZ 104 0: X\x{11234}\x{512}YZ 105 X\x{11234}\x{512}\x{11234}Z 106 0: X\x{11234}\x{512}\x{11234}Z 107 108/X\C{3,5}?/utf 109 Xabcdefg 110 0: Xabc 111 X\x{1234} 112No match 113 X\x{1234}YZ 114 0: X\x{1234}YZ 115 X\x{1234}\x{512} 116No match 117 X\x{11234}Y 118No match 119 X\x{11234}YZ 120 0: X\x{11234}YZ 121 X\x{11234}\x{512}YZ 122 0: X\x{11234}\x{512}Y 123 X\x{11234} 124No match 125 126/a\Cb/utf 127 aXb 128 0: aXb 129 a\nb 130 0: a\x{0a}b 131 a\x{100}b 132 0: a\x{100}b 133 134/a\C\Cb/utf 135 a\x{100}b 136No match 137 a\x{12257}b 138No match 139 a\x{12257}\x{11234}b 140 0: a\x{12257}\x{11234}b 141 142/ab\Cde/utf 143 abXde 144 0: abXde 145 146# This one is here not because it's different to Perl, but because the way 147# the captured single code unit is displayed. (In Perl it becomes a character, 148# and you can't tell the difference.) 149 150/X(\C)(.*)/utf 151 X\x{1234} 152 0: X\x{1234} 153 1: \x{1234} 154 2: 155 X\nabc 156 0: X\x{0a}abc 157 1: \x{0a} 158 2: abc 159 160# This one is here because Perl gives out a grumbly error message (quite 161# correctly, but that messes up comparisons). 162 163/a\Cb/utf 164\= Expect no match in 8-bit mode 165 a\x{100}b 166 0: a\x{100}b 167 168/^ab\C/utf,no_start_optimize 169\= Expect no match - tests \C at end of subject 170 ab 171No match 172 173/\C[^\v]+\x80/utf 174 [AΏBŀC] 175No match 176 177/\C[^\d]+\x80/utf 178 [AΏBŀC] 179No match 180 181# End of testinput22 182