1b39c5158Smillertuse warnings; 2b39c5158Smillertuse strict; 3*5759b3d2Safresh1 4*5759b3d2Safresh1BEGIN { 5*5759b3d2Safresh1 chdir 't' if -d 't'; 6*5759b3d2Safresh1 @INC = '../lib'; 7*5759b3d2Safresh1 require './test.pl'; 8*5759b3d2Safresh1 plan(tests => 4); 9*5759b3d2Safresh1} 10b39c5158Smillert 11b39c5158Smillertuse overload '""' => sub { 'stringvalue' }, fallback => 1; 12b39c5158Smillert 13b39c5158SmillertBEGIN { 14b39c5158Smillertmy $x = bless {}, 'main'; 15b39c5158Smillertok ($x eq 'stringvalue', 'fallback worked'); 16b39c5158Smillert} 17b39c5158Smillert 18b39c5158Smillert 19b39c5158Smillert# NOTE: delete the next line and this test script will pass 20b39c5158Smillertuse overload '+' => sub { die "unused"; }; 21b39c5158Smillert 22b39c5158Smillertmy $x = bless {}, 'main'; 23b39c5158Smillertok (eval {$x eq 'stringvalue'}, 'fallback worked again'); 24b39c5158Smillert 25*5759b3d2Safresh1TODO: { 26*5759b3d2Safresh1 local $::TODO = 'RT #43356: Autogeneration of ++ is incorrect'; 27*5759b3d2Safresh1 fresh_perl_is(<<'EOC', '2', {}, 'RT #43356: Autogeneration of ++'); 28*5759b3d2Safresh1use overload 29*5759b3d2Safresh1 "0+" => sub { ${$_[0]} }, 30*5759b3d2Safresh1 "=" => sub { ${$_[0]} }, 31*5759b3d2Safresh1 fallback => 1; 32*5759b3d2Safresh1my $value = bless \(my $dummy = 1), __PACKAGE__; 33*5759b3d2Safresh1print ++$value; 34*5759b3d2Safresh1EOC 35*5759b3d2Safresh1} 36*5759b3d2Safresh1 37*5759b3d2Safresh1{ 38*5759b3d2Safresh1 my $warned = 0; 39*5759b3d2Safresh1 local $SIG{__WARN__} = sub { $warned++; }; 40*5759b3d2Safresh1 41*5759b3d2Safresh1 eval q{ 42*5759b3d2Safresh1 use overload '${}', 'fallback'; 43*5759b3d2Safresh1 no overload '${}', 'fallback'; 44*5759b3d2Safresh1 }; 45*5759b3d2Safresh1 46*5759b3d2Safresh1 ok($warned == 0, 'no overload should not warn'); 47*5759b3d2Safresh1} 48*5759b3d2Safresh1 49