Commit | Line | Data |
---|---|---|
87a42246 MS |
1 | #!./perl |
2 | ||
3 | BEGIN { | |
5638aaac SM |
4 | if ($ENV{PERL_CORE}){ |
5 | chdir('t') if -d 't'; | |
6 | if ($^O eq 'MacOS') { | |
7 | @INC = qw(: ::lib ::macos:lib); | |
8 | } else { | |
9 | @INC = '.'; | |
10 | push @INC, '../lib'; | |
11 | } | |
87a42246 | 12 | } else { |
5638aaac | 13 | unshift @INC, 't'; |
87a42246 | 14 | } |
9cd8f857 NC |
15 | require Config; |
16 | if (($Config::Config{'extensions'} !~ /\bB\b/) ){ | |
17 | print "1..0 # Skip -- Perl configured without B module\n"; | |
18 | exit 0; | |
19 | } | |
87a42246 MS |
20 | } |
21 | ||
87a42246 MS |
22 | use warnings; |
23 | use strict; | |
e9c69003 NC |
24 | BEGIN { |
25 | # BEGIN block is acutally a subroutine :-) | |
26 | return unless $] > 5.009; | |
27 | require feature; | |
28 | feature->import(':5.10'); | |
29 | } | |
2990415a | 30 | use Test::More tests => 74; |
1bb3cfc5 | 31 | use Config (); |
87a42246 MS |
32 | |
33 | use B::Deparse; | |
09d856fb CK |
34 | my $deparse = B::Deparse->new(); |
35 | ok($deparse); | |
87a42246 MS |
36 | |
37 | # Tell B::Deparse about our ambient pragmas | |
0ced6c29 RGS |
38 | { my ($hint_bits, $warning_bits, $hinthash); |
39 | BEGIN { ($hint_bits, $warning_bits, $hinthash) = ($^H, ${^WARNING_BITS}, \%^H); } | |
87a42246 MS |
40 | $deparse->ambient_pragmas ( |
41 | hint_bits => $hint_bits, | |
42 | warning_bits => $warning_bits, | |
0ced6c29 RGS |
43 | '$[' => 0 + $[, |
44 | '%^H' => $hinthash, | |
87a42246 MS |
45 | ); |
46 | } | |
47 | ||
ad46c0be RH |
48 | $/ = "\n####\n"; |
49 | while (<DATA>) { | |
50 | chomp; | |
e9c69003 NC |
51 | # This code is pinched from the t/lib/common.pl for TODO. |
52 | # It's not clear how to avoid duplication | |
b871937f NC |
53 | # Now tweaked a bit to do skip or todo |
54 | my %reason; | |
55 | foreach my $what (qw(skip todo)) { | |
56 | s/^#\s*\U$what\E\s*(.*)\n//m and $reason{$what} = $1; | |
57 | # If the SKIP reason starts ? then it's taken as a code snippet to | |
58 | # evaluate. This provides the flexibility to have conditional SKIPs | |
59 | if ($reason{$what} && $reason{$what} =~ s/^\?//) { | |
60 | my $temp = eval $reason{$what}; | |
61 | if ($@) { | |
62 | die "# In \U$what\E code reason:\n# $reason{$what}\n$@"; | |
63 | } | |
64 | $reason{$what} = $temp; | |
e9c69003 | 65 | } |
e9c69003 NC |
66 | } |
67 | ||
ec59cdf2 RGS |
68 | s/#\s*(.*)$//mg; |
69 | my ($num, $testname) = $1 =~ m/(\d+)\s*(.*)/; | |
e9c69003 | 70 | |
b871937f | 71 | if ($reason{skip}) { |
e9c69003 | 72 | # Like this to avoid needing a label SKIP: |
b871937f | 73 | Test::More->builder->skip($reason{skip}); |
e9c69003 NC |
74 | next; |
75 | } | |
76 | ||
ad46c0be RH |
77 | my ($input, $expected); |
78 | if (/(.*)\n>>>>\n(.*)/s) { | |
79 | ($input, $expected) = ($1, $2); | |
80 | } | |
81 | else { | |
82 | ($input, $expected) = ($_, $_); | |
83 | } | |
87a42246 | 84 | |
ad46c0be | 85 | my $coderef = eval "sub {$input}"; |
87a42246 | 86 | |
ad46c0be | 87 | if ($@) { |
ec59cdf2 RGS |
88 | diag("$num deparsed: $@"); |
89 | ok(0, $testname); | |
ad46c0be RH |
90 | } |
91 | else { | |
92 | my $deparsed = $deparse->coderef2text( $coderef ); | |
31c6271a RD |
93 | my $regex = $expected; |
94 | $regex =~ s/(\S+)/\Q$1/g; | |
95 | $regex =~ s/\s+/\\s+/g; | |
96 | $regex = '^\{\s*' . $regex . '\s*\}$'; | |
b871937f NC |
97 | |
98 | our $TODO = $reason{todo}; | |
ec59cdf2 | 99 | like($deparsed, qr/$regex/, $testname); |
87a42246 | 100 | } |
87a42246 MS |
101 | } |
102 | ||
87a42246 | 103 | use constant 'c', 'stuff'; |
09d856fb | 104 | is((eval "sub ".$deparse->coderef2text(\&c))->(), 'stuff'); |
87a42246 | 105 | |
09d856fb CK |
106 | my $a = 0; |
107 | is("{\n (-1) ** \$a;\n}", $deparse->coderef2text(sub{(-1) ** $a })); | |
87a42246 | 108 | |
d989cdac SM |
109 | use constant cr => ['hello']; |
110 | my $string = "sub " . $deparse->coderef2text(\&cr); | |
0707d6cc NC |
111 | my $val = (eval $string)->() or diag $string; |
112 | is(ref($val), 'ARRAY'); | |
113 | is($val->[0], 'hello'); | |
87a42246 | 114 | |
87a42246 MS |
115 | my $Is_VMS = $^O eq 'VMS'; |
116 | my $Is_MacOS = $^O eq 'MacOS'; | |
117 | ||
118 | my $path = join " ", map { qq["-I$_"] } @INC; | |
be708cc0 | 119 | $path .= " -MMac::err=unix" if $Is_MacOS; |
87a42246 MS |
120 | my $redir = $Is_MacOS ? "" : "2>&1"; |
121 | ||
d2bc402e | 122 | $a = `$^X $path "-MO=Deparse" -anlwi.bak -e 1 $redir`; |
e69a2255 | 123 | $a =~ s/-e syntax OK\n//g; |
d2bc402e | 124 | $a =~ s/.*possible typo.*\n//; # Remove warning line |
87a42246 MS |
125 | $a =~ s{\\340\\242}{\\s} if (ord("\\") == 224); # EBCDIC, cp 1047 or 037 |
126 | $a =~ s{\\274\\242}{\\s} if (ord("\\") == 188); # $^O eq 'posix-bc' | |
127 | $b = <<'EOF'; | |
d2bc402e RGS |
128 | BEGIN { $^I = ".bak"; } |
129 | BEGIN { $^W = 1; } | |
130 | BEGIN { $/ = "\n"; $\ = "\n"; } | |
87a42246 MS |
131 | LINE: while (defined($_ = <ARGV>)) { |
132 | chomp $_; | |
f86ea535 | 133 | our(@F) = split(' ', $_, 0); |
87a42246 MS |
134 | '???'; |
135 | } | |
87a42246 | 136 | EOF |
e69a2255 JH |
137 | $b =~ s/(LINE:)/sub BEGIN { |
138 | 'MacPerl'->bootstrap; | |
139 | 'OSA'->bootstrap; | |
140 | 'XL'->bootstrap; | |
141 | } | |
142 | $1/ if $Is_MacOS; | |
09d856fb | 143 | is($a, $b); |
87a42246 | 144 | |
579a54dc | 145 | #Re: perlbug #35857, patch #24505 |
b3980c39 YO |
146 | #handle warnings::register-ed packages properly. |
147 | package B::Deparse::Wrapper; | |
148 | use strict; | |
149 | use warnings; | |
150 | use warnings::register; | |
151 | sub getcode { | |
579a54dc | 152 | my $deparser = B::Deparse->new(); |
b3980c39 YO |
153 | return $deparser->coderef2text(shift); |
154 | } | |
155 | ||
2990415a FR |
156 | package Moo; |
157 | use overload '0+' => sub { 42 }; | |
158 | ||
b3980c39 YO |
159 | package main; |
160 | use strict; | |
161 | use warnings; | |
71c4dbc3 | 162 | use constant GLIPP => 'glipp'; |
2990415a FR |
163 | use constant PI => 4; |
164 | use constant OVERLOADED_NUMIFICATION => bless({}, 'Moo'); | |
3779476a | 165 | use Fcntl qw/O_TRUNC O_APPEND O_EXCL/; |
aaf9c2b2 | 166 | BEGIN { delete $::Fcntl::{O_APPEND}; } |
2990415a | 167 | use POSIX qw/O_CREAT/; |
b3980c39 | 168 | sub test { |
579a54dc RGS |
169 | my $val = shift; |
170 | my $res = B::Deparse::Wrapper::getcode($val); | |
09d856fb | 171 | like( $res, qr/use warnings/); |
b3980c39 YO |
172 | } |
173 | my ($q,$p); | |
174 | my $x=sub { ++$q,++$p }; | |
175 | test($x); | |
176 | eval <<EOFCODE and test($x); | |
177 | package bar; | |
178 | use strict; | |
179 | use warnings; | |
180 | use warnings::register; | |
181 | package main; | |
182 | 1 | |
183 | EOFCODE | |
184 | ||
ad46c0be | 185 | __DATA__ |
14a55f98 | 186 | # 2 |
ad46c0be RH |
187 | 1; |
188 | #### | |
14a55f98 | 189 | # 3 |
ad46c0be RH |
190 | { |
191 | no warnings; | |
192 | '???'; | |
193 | 2; | |
194 | } | |
195 | #### | |
14a55f98 | 196 | # 4 |
ad46c0be RH |
197 | my $test; |
198 | ++$test and $test /= 2; | |
199 | >>>> | |
200 | my $test; | |
201 | $test /= 2 if ++$test; | |
202 | #### | |
14a55f98 | 203 | # 5 |
ad46c0be RH |
204 | -((1, 2) x 2); |
205 | #### | |
14a55f98 | 206 | # 6 |
ad46c0be RH |
207 | { |
208 | my $test = sub : lvalue { | |
209 | my $x; | |
210 | } | |
211 | ; | |
212 | } | |
213 | #### | |
14a55f98 | 214 | # 7 |
ad46c0be RH |
215 | { |
216 | my $test = sub : method { | |
217 | my $x; | |
218 | } | |
219 | ; | |
220 | } | |
221 | #### | |
14a55f98 | 222 | # 8 |
8e5dadda NC |
223 | # Was sub : locked method { ... } |
224 | # This number could be re-used. | |
ad46c0be | 225 | #### |
14a55f98 | 226 | # 9 |
87a42246 | 227 | { |
ad46c0be | 228 | 234; |
f99a63a2 | 229 | } |
ad46c0be RH |
230 | continue { |
231 | 123; | |
87a42246 | 232 | } |
ce4e655d | 233 | #### |
14a55f98 | 234 | # 10 |
ce4e655d RH |
235 | my $x; |
236 | print $main::x; | |
237 | #### | |
14a55f98 | 238 | # 11 |
ce4e655d RH |
239 | my @x; |
240 | print $main::x[1]; | |
14a55f98 RH |
241 | #### |
242 | # 12 | |
243 | my %x; | |
244 | $x{warn()}; | |
ad8caead RGS |
245 | #### |
246 | # 13 | |
247 | my $foo; | |
248 | $_ .= <ARGV> . <$foo>; | |
cef22867 JH |
249 | #### |
250 | # 14 | |
251 | my $foo = "Ab\x{100}\200\x{200}\377Cd\000Ef\x{1000}\cA\x{2000}\cZ"; | |
4ae52e81 RGS |
252 | #### |
253 | # 15 | |
254 | s/x/'y';/e; | |
241416b8 DM |
255 | #### |
256 | # 16 - various lypes of loop | |
257 | { my $x; } | |
258 | #### | |
259 | # 17 | |
260 | while (1) { my $k; } | |
261 | #### | |
262 | # 18 | |
263 | my ($x,@a); | |
264 | $x=1 for @a; | |
265 | >>>> | |
266 | my($x, @a); | |
0bb5f065 | 267 | $x = 1 foreach (@a); |
241416b8 DM |
268 | #### |
269 | # 19 | |
270 | for (my $i = 0; $i < 2;) { | |
271 | my $z = 1; | |
272 | } | |
273 | #### | |
274 | # 20 | |
275 | for (my $i = 0; $i < 2; ++$i) { | |
276 | my $z = 1; | |
277 | } | |
278 | #### | |
279 | # 21 | |
280 | for (my $i = 0; $i < 2; ++$i) { | |
281 | my $z = 1; | |
282 | } | |
283 | #### | |
284 | # 22 | |
285 | my $i; | |
286 | while ($i) { my $z = 1; } continue { $i = 99; } | |
287 | #### | |
288 | # 23 | |
09d856fb | 289 | foreach my $i (1, 2) { |
241416b8 DM |
290 | my $z = 1; |
291 | } | |
292 | #### | |
293 | # 24 | |
294 | my $i; | |
295 | foreach $i (1, 2) { | |
296 | my $z = 1; | |
297 | } | |
298 | #### | |
299 | # 25 | |
300 | my $i; | |
301 | foreach my $i (1, 2) { | |
302 | my $z = 1; | |
303 | } | |
304 | #### | |
305 | # 26 | |
306 | foreach my $i (1, 2) { | |
307 | my $z = 1; | |
308 | } | |
309 | #### | |
310 | # 27 | |
311 | foreach our $i (1, 2) { | |
312 | my $z = 1; | |
313 | } | |
314 | #### | |
315 | # 28 | |
316 | my $i; | |
317 | foreach our $i (1, 2) { | |
318 | my $z = 1; | |
319 | } | |
3ac6e0f9 RGS |
320 | #### |
321 | # 29 | |
322 | my @x; | |
323 | print reverse sort(@x); | |
324 | #### | |
325 | # 30 | |
326 | my @x; | |
327 | print((sort {$b cmp $a} @x)); | |
328 | #### | |
329 | # 31 | |
330 | my @x; | |
331 | print((reverse sort {$b <=> $a} @x)); | |
36d57d93 RGS |
332 | #### |
333 | # 32 | |
334 | our @a; | |
335 | print $_ foreach (reverse @a); | |
aae53c41 | 336 | #### |
579a54dc | 337 | # 33 |
aae53c41 RGS |
338 | our @a; |
339 | print $_ foreach (reverse 1, 2..5); | |
f86ea535 SM |
340 | #### |
341 | # 34 (bug #38684) | |
342 | our @ary; | |
343 | @ary = split(' ', 'foo', 0); | |
31c6271a RD |
344 | #### |
345 | # 35 (bug #40055) | |
346 | do { () }; | |
347 | #### | |
348 | # 36 (ibid.) | |
349 | do { my $x = 1; $x }; | |
d9002312 SM |
350 | #### |
351 | # 37 <20061012113037.GJ25805@c4.convolution.nl> | |
352 | my $f = sub { | |
353 | +{[]}; | |
354 | } ; | |
8b2d6640 FC |
355 | #### |
356 | # 38 (bug #43010) | |
357 | '!@$%'->(); | |
358 | #### | |
359 | # 39 (ibid.) | |
360 | ::(); | |
361 | #### | |
362 | # 40 (ibid.) | |
363 | '::::'->(); | |
364 | #### | |
365 | # 41 (ibid.) | |
366 | &::::; | |
09d856fb CK |
367 | #### |
368 | # 42 | |
369 | my $bar; | |
370 | 'Foo'->$bar('orz'); | |
371 | #### | |
372 | # 43 | |
373 | 'Foo'->bar('orz'); | |
374 | #### | |
375 | # 44 | |
376 | 'Foo'->bar; | |
0ced6c29 | 377 | #### |
e9c69003 | 378 | # SKIP ?$] < 5.010 && "say not implemented on this Perl version" |
7ddd1a01 NC |
379 | # 45 say |
380 | say 'foo'; | |
381 | #### | |
e9c69003 | 382 | # SKIP ?$] < 5.010 && "state vars not implemented on this Perl version" |
7ddd1a01 | 383 | # 46 state vars |
0ced6c29 RGS |
384 | state $x = 42; |
385 | #### | |
e9c69003 | 386 | # SKIP ?$] < 5.010 && "state vars not implemented on this Perl version" |
7ddd1a01 NC |
387 | # 47 state var assignment |
388 | { | |
389 | my $y = (state $x = 42); | |
390 | } | |
391 | #### | |
e9c69003 | 392 | # SKIP ?$] < 5.010 && "state vars not implemented on this Perl version" |
7ddd1a01 NC |
393 | # 48 state vars in anoymous subroutines |
394 | $a = sub { | |
395 | state $x; | |
396 | return $x++; | |
397 | } | |
398 | ; | |
644741fd NC |
399 | #### |
400 | # SKIP ?$] < 5.011 && 'each @array not implemented on this Perl version' | |
401 | # 49 each @array; | |
402 | each @ARGV; | |
403 | each @$a; | |
404 | #### | |
405 | # SKIP ?$] < 5.011 && 'each @array not implemented on this Perl version' | |
406 | # 50 keys @array; values @array | |
407 | keys @$a if keys @ARGV; | |
408 | values @ARGV if values @$a; | |
35925e80 | 409 | #### |
43b09ad7 | 410 | # 51 Anonymous arrays and hashes, and references to them |
35925e80 RGS |
411 | my $a = {}; |
412 | my $b = \{}; | |
413 | my $c = []; | |
414 | my $d = \[]; | |
9210de83 FR |
415 | #### |
416 | # SKIP ?$] < 5.010 && "smartmatch and given/when not implemented on this Perl version" | |
43b09ad7 | 417 | # 52 implicit smartmatch in given/when |
9210de83 FR |
418 | given ('foo') { |
419 | when ('bar') { continue; } | |
420 | when ($_ ~~ 'quux') { continue; } | |
421 | default { 0; } | |
422 | } | |
7ecdd211 PJ |
423 | #### |
424 | # 53 conditions in elsifs (regression in change #33710 which fixed bug #37302) | |
425 | if ($a) { x(); } | |
426 | elsif ($b) { x(); } | |
427 | elsif ($a and $b) { x(); } | |
428 | elsif ($a or $b) { x(); } | |
429 | else { x(); } | |
03b22f1b RGS |
430 | #### |
431 | # 54 interpolation in regexps | |
432 | my($y, $t); | |
433 | /x${y}z$t/; | |
227375e1 | 434 | #### |
b871937f | 435 | # TODO new undocumented cpan-bug #33708" |
227375e1 RU |
436 | # 55 (cpan-bug #33708) |
437 | %{$_ || {}} | |
438 | #### | |
b871937f | 439 | # TODO hash constants not yet fixed" |
227375e1 RU |
440 | # 56 (cpan-bug #33708) |
441 | use constant H => { "#" => 1 }; H->{"#"} | |
442 | #### | |
b871937f | 443 | # TODO optimized away 0 not yet fixed" |
227375e1 RU |
444 | # 57 (cpan-bug #33708) |
445 | foreach my $i (@_) { 0 } | |
edbe35ea VP |
446 | #### |
447 | # 58 tests with not, not optimized | |
07f3cdf5 | 448 | my $c; |
edbe35ea VP |
449 | x() unless $a; |
450 | x() if not $a and $b; | |
451 | x() if $a and not $b; | |
452 | x() unless not $a and $b; | |
453 | x() unless $a and not $b; | |
454 | x() if not $a or $b; | |
455 | x() if $a or not $b; | |
456 | x() unless not $a or $b; | |
457 | x() unless $a or not $b; | |
07f3cdf5 VP |
458 | x() if $a and not $b and $c; |
459 | x() if not $a and $b and not $c; | |
460 | x() unless $a and not $b and $c; | |
461 | x() unless not $a and $b and not $c; | |
462 | x() if $a or not $b or $c; | |
463 | x() if not $a or $b or not $c; | |
464 | x() unless $a or not $b or $c; | |
465 | x() unless not $a or $b or not $c; | |
edbe35ea VP |
466 | #### |
467 | # 59 tests with not, optimized | |
07f3cdf5 | 468 | my $c; |
edbe35ea VP |
469 | x() if not $a; |
470 | x() unless not $a; | |
471 | x() if not $a and not $b; | |
472 | x() unless not $a and not $b; | |
473 | x() if not $a or not $b; | |
474 | x() unless not $a or not $b; | |
07f3cdf5 VP |
475 | x() if not $a and not $b and $c; |
476 | x() unless not $a and not $b and $c; | |
477 | x() if not $a or not $b or $c; | |
478 | x() unless not $a or not $b or $c; | |
479 | x() if not $a and not $b and not $c; | |
480 | x() unless not $a and not $b and not $c; | |
481 | x() if not $a or not $b or not $c; | |
482 | x() unless not $a or not $b or not $c; | |
483 | x() unless not $a or not $b or not $c; | |
edbe35ea | 484 | >>>> |
07f3cdf5 | 485 | my $c; |
edbe35ea VP |
486 | x() unless $a; |
487 | x() if $a; | |
488 | x() unless $a or $b; | |
489 | x() if $a or $b; | |
490 | x() unless $a and $b; | |
07f3cdf5 VP |
491 | x() if $a and $b; |
492 | x() if not $a || $b and $c; | |
493 | x() unless not $a || $b and $c; | |
494 | x() if not $a && $b or $c; | |
495 | x() unless not $a && $b or $c; | |
496 | x() unless $a or $b or $c; | |
497 | x() if $a or $b or $c; | |
498 | x() unless $a and $b and $c; | |
499 | x() if $a and $b and $c; | |
500 | x() unless not $a && $b && $c; | |
71c4dbc3 VP |
501 | #### |
502 | # 60 tests that should be constant folded | |
503 | x() if 1; | |
504 | x() if GLIPP; | |
505 | x() if !GLIPP; | |
506 | x() if GLIPP && GLIPP; | |
507 | x() if !GLIPP || GLIPP; | |
508 | x() if do { GLIPP }; | |
509 | x() if do { no warnings 'void'; 5; GLIPP }; | |
510 | x() if do { !GLIPP }; | |
511 | if (GLIPP) { x() } else { z() } | |
512 | if (!GLIPP) { x() } else { z() } | |
513 | if (GLIPP) { x() } elsif (GLIPP) { z() } | |
514 | if (!GLIPP) { x() } elsif (GLIPP) { z() } | |
515 | if (GLIPP) { x() } elsif (!GLIPP) { z() } | |
516 | if (!GLIPP) { x() } elsif (!GLIPP) { z() } | |
517 | if (!GLIPP) { x() } elsif (!GLIPP) { z() } elsif (GLIPP) { t() } | |
518 | if (!GLIPP) { x() } elsif (!GLIPP) { z() } elsif (!GLIPP) { t() } | |
519 | if (!GLIPP) { x() } elsif (!GLIPP) { z() } elsif (!GLIPP) { t() } | |
520 | >>>> | |
521 | x(); | |
522 | x(); | |
523 | '???'; | |
524 | x(); | |
525 | x(); | |
526 | x(); | |
527 | x(); | |
528 | do { | |
529 | '???' | |
530 | }; | |
531 | do { | |
532 | x() | |
533 | }; | |
534 | do { | |
535 | z() | |
536 | }; | |
537 | do { | |
538 | x() | |
539 | }; | |
540 | do { | |
541 | z() | |
542 | }; | |
543 | do { | |
544 | x() | |
545 | }; | |
546 | '???'; | |
547 | do { | |
548 | t() | |
549 | }; | |
550 | '???'; | |
551 | !1; | |
552 | #### | |
1bb3cfc5 | 553 | # SKIP ? $Config::Config{useithreads} && "TODO doesn't work with threads" |
71c4dbc3 VP |
554 | # 61 tests that shouldn't be constant folded |
555 | x() if $a; | |
556 | if ($a == 1) { x() } elsif ($b == 2) { z() } | |
557 | if (do { foo(); GLIPP }) { x() } | |
558 | if (do { $a++; GLIPP }) { x() } | |
559 | >>>> | |
560 | x() if $a; | |
561 | if ($a == 1) { x(); } elsif ($b == 2) { z(); } | |
2990415a FR |
562 | if (do { foo(); GLIPP }) { x(); } |
563 | if (do { ++$a; GLIPP }) { x(); } | |
564 | #### | |
565 | # 62 tests for deparsing constants | |
566 | warn PI; | |
567 | #### | |
568 | # 63 tests for deparsing imported constants | |
3779476a | 569 | warn O_TRUNC; |
2990415a FR |
570 | #### |
571 | # 64 tests for deparsing re-exported constants | |
572 | warn O_CREAT; | |
573 | #### | |
574 | # 65 tests for deparsing imported constants that got deleted from the original namespace | |
aaf9c2b2 | 575 | warn O_APPEND; |
2990415a | 576 | #### |
1bb3cfc5 | 577 | # SKIP ? $Config::Config{useithreads} && "TODO doesn't work with threads" |
2990415a FR |
578 | # 66 tests for deparsing constants which got turned into full typeglobs |
579 | warn O_EXCL; | |
580 | eval '@Fcntl::O_EXCL = qw/affe tiger/;'; | |
581 | warn O_EXCL; | |
582 | #### | |
583 | # 67 tests for deparsing of blessed constant with overloaded numification | |
584 | warn OVERLOADED_NUMIFICATION; |