#! /usr/bin/env perl
BEGIN {
unshift
@INC
,
't'
;
}
my
$name
=
'ccode251i'
;
my
$todo
= (
$B::C::VERSION
ge
'1.43_06'
) ?
""
:
"TODO "
;
ctestok(1,
'C,-O3'
,
$name
,
<<'EOF', $todo.'#251 simple predeclaration');
sub f;$e=exists &f;$d=defined &f;print "ok" if "-$e-$d-" eq "-1--";
EOF
ctestok(2,
'C,-O3'
,
$name
,
<<'EOF', ($] >= 5.018 ? "TODO 5.18 " : "").$todo.'#251 lvalue predeclaration');
sub f :lvalue;$e=exists &f;$d=defined &f;print "ok" if "-$e-$d-" eq "-1--";
EOF
ctestok(3,
'C,-O3'
,
$name
,
<<'EOF', $todo.'#251 empty proto predeclaration');
sub f ();$e=exists &f;$d=defined &f;print "ok" if "-$e-$d-" eq "-1--";
EOF
ctestok(4,
'C,-O3'
,
$name
,
<<'EOF', $todo.'#251 proto predeclaration');
sub f ($);$e=exists &f;$d=defined &f;print "ok" if "-$e-$d-" eq "-1--";
EOF
ctestok(5,
'C,-O3'
,
$name
,
<<'EOF', '#251 regular cv definition');
sub f{1};$e=exists &f;$d=defined &f;print "ok" if "-$e-$d-" eq "-1-1-";
EOF
my
$todo6
= ($] < 5.008009 or !
$Config
{useithreads}) ?
"TODO "
:
""
;
ctestok(6,
'C,-O3'
,
'ccode290i'
,
<<'EOF', $todo6.'#290 empty sub exists && not defined');
sub f; print "ok" if exists &f && not defined &f;
EOF
ctestok(7,
'C,-O3'
,
'ccode290i'
,<<
'EOF'
,
'#290 empty sub not defined && exists'
);
sub
f;
print
"ok"
if
not
defined
&f
&&
exists
&f
;
EOF