• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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