BEGIN {
chdir
't'
if
-d
't'
;
@INC
=
'../lib'
;
require
'./test.pl'
;
plan(
tests
=> 4);
}
use
overload
'""'
=>
sub
{
'stringvalue'
},
fallback
=> 1;
BEGIN {
my
$x
=
bless
{},
'main'
;
ok (
$x
eq
'stringvalue'
,
'fallback worked'
);
}
use
overload
'+'
=>
sub
{
die
"unused"
; };
my
$x
=
bless
{},
'main'
;
ok (
eval
{
$x
eq
'stringvalue'
},
'fallback worked again'
);
TODO: {
local
$::TODO =
'RT #43356: Autogeneration of ++ is incorrect'
;
fresh_perl_is(
<<'EOC', '2', {}, 'RT #43356: Autogeneration of ++');
use overload
"0+" => sub { ${$_[0]} },
"=" => sub { ${$_[0]} },
fallback => 1;
my $value = bless \(my $dummy = 1), __PACKAGE__;
print ++$value;
EOC
}
{
my
$warned
= 0;
local
$SIG
{__WARN__} =
sub
{
$warned
++; };
eval
q{
use overload '${}
',
'fallback'
;
no
overload
'${}'
,
'fallback'
;
};
ok(
$warned
== 0,
'no overload should not warn'
);
}