summaryrefslogtreecommitdiff
path: root/t/lib/warnings/regcomp
blob: 50b85fdd45cab584c5a6a28dbeab6820c80a53d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
  regcomp.c	These tests have been moved to t/re/reg_mesg.t
		except for those that explicitly test line numbers
                and those that don't have a <-- HERE in them, and those that
                die plus have warnings, or otherwise require special handling

__END__
use warnings 'regexp';
$r=qr/(??{ q"\\b+" })/;
"a" =~ /a$r/; # warning should come from this line
EXPECT
\b+ matches null string many times in regex; marked by <-- HERE in m/\b+ <-- HERE / at - line 3.
########
# regcomp.c
use warnings 'digit' ;
my $a = qr/\o{1238456}\x{100}/;
my $a = qr/[\o{6548321}]\x{100}/;
no warnings 'digit' ;
my $a = qr/\o{1238456}\x{100}/;
my $a = qr/[\o{6548321}]\x{100}/;
EXPECT
Non-octal character '8' terminates \o early.  Resolved as "\o{123}" in regex; marked by <-- HERE in m/\o{1238456} <-- HERE \x{100}/ at - line 3.
Non-octal character '8' terminates \o early.  Resolved as "\o{654}" in regex; marked by <-- HERE in m/[\o{6548321} <-- HERE ]\x{100}/ at - line 4.
########
# regcomp.c
BEGIN {
    if (ord('A') == 193) {
        print "SKIPPED\n# Different results on EBCDIC";
        exit 0;
    }
}
use warnings;
$a = qr/\c,/;
$a = qr/[\c,]/;
no warnings 'syntax';
$a = qr/\c,/;
$a = qr/[\c,]/;
EXPECT
"\c," is more clearly written simply as "l" in regex; marked by <-- HERE in m/\c, <-- HERE / at - line 9.
"\c," is more clearly written simply as "l" in regex; marked by <-- HERE in m/[\c, <-- HERE ]/ at - line 10.
########
# This is because currently a different error is output under
# use re 'strict', so can't go in reg_mesg.t
# NAME perl #126261, error message causes segfault
# OPTION fatal
 qr/abc[\x{df}[.00./i
EXPECT
Unmatched [ in regex; marked by <-- HERE in m/abc[ <-- HERE \x{df}[.00./ at - line 4.
########
# NAME perl #126261, with 'use utf8'
# OPTION fatal
use utf8;
no warnings 'utf8';
qr/abc[fi[.00./i;
EXPECT
Unmatched [ in regex; marked by <-- HERE in m/abc[ <-- HERE fi[.00./ at - line 4.
########
# NAME perl qr/(?[[[:word]]])/ XXX Why is 'syntax' lc?
# OPTION fatal
use warnings;
no warnings 'experimental::regex_sets';
qr/(?[[[:word]]])/;
EXPECT
Assuming NOT a POSIX class since there is no terminating ':' in regex; marked by <-- HERE in m/(?[[[:word <-- HERE ]]])/ at - line 4.
Unexpected ']' with no following ')' in (?[... in regex; marked by <-- HERE in m/(?[[[:word]] <-- HERE ])/ at - line 4.
########
# NAME qr/(?[ [[:digit: ])/
# OPTION fatal
use warnings;
no warnings 'experimental::regex_sets';
qr/(?[[[:digit: ])/;
EXPECT
Assuming NOT a POSIX class since no blanks are allowed in one in regex; marked by <-- HERE in m/(?[[[:digit: ] <-- HERE )/ at - line 4.
syntax error in (?[...]) in regex; marked by <-- HERE in m/(?[[[:digit: ]) <-- HERE / at - line 4.
########
# NAME qr/(?[ [:digit: ])/
# OPTION fatal
use warnings;
no warnings 'experimental::regex_sets';
qr/(?[[:digit: ])/
EXPECT
Assuming NOT a POSIX class since no blanks are allowed in one in regex; marked by <-- HERE in m/(?[[:digit: ] <-- HERE )/ at - line 4.
syntax error in (?[...]) in regex; marked by <-- HERE in m/(?[[:digit: ]) <-- HERE / at - line 4.
########
# NAME [perl #126141]
# OPTION fatal
eval {/$_/}, print "$_ ==> ", $@ || "OK!\n" for "]]]]]]]]][\\", "]]]]][\\"
EXPECT
]]]]]]]]][\ ==> Unmatched [ in regex; marked by <-- HERE in m/]]]]]]]]][\ <-- HERE / at - line 2.
]]]]][\ ==> Unmatched [ in regex; marked by <-- HERE in m/]]]]][\ <-- HERE / at - line 2.
########
# NAME [perl #123417]
# OPTION fatal
qr/[\N{}]/;
EXPECT
Unknown charname '' at - line 2, within pattern
Execution of - aborted due to compilation errors.
########
# NAME [perl #123417]
# OPTION fatal
qr/\N{}/;
EXPECT
Unknown charname '' at - line 2, within pattern
Execution of - aborted due to compilation errors.
########
# NAME [perl #131868]
use warnings;
my $qr = qr {
    (?(DEFINE)
      (?<digit>   [0-9])
      (?<digits>  (?&digit){4})
    )
    ^(?&digits)$
}x;
EXPECT
########
# NAME Warn on 32-bit code points
# SKIP ? $Config{uvsize} < 8
use warnings 'portable';
qr/\x{8000_0000}/;
qr/[\x{8000_0000}]/;
qr/\o{20_000_000_000}/;
qr/[\o{20_000_000_000}]/;
EXPECT
Code point 0x80000000 is not Unicode, requires a Perl extension, and so is not portable in regex; marked by <-- HERE in m/\x{8000_0000} <-- HERE / at - line 2.
Code point 0x80000000 is not Unicode, requires a Perl extension, and so is not portable in regex; marked by <-- HERE in m/[\x{8000_0000} <-- HERE ]/ at - line 3.
Code point 0x80000000 is not Unicode, requires a Perl extension, and so is not portable in regex; marked by <-- HERE in m/\o{20_000_000_000} <-- HERE / at - line 4.
Code point 0x80000000 is not Unicode, requires a Perl extension, and so is not portable in regex; marked by <-- HERE in m/[\o{20_000_000_000} <-- HERE ]/ at - line 5.