# intersted in are much more limited than the fullblown thing, and
# this is a very hot piece of code
(
- # FIXME - DBI needs fixing to stringify regardless of DBD
- #
# simply using ->can('(""') can leave behind stub methods that
# break actually using the overload later (see L<perldiag/Stub
# found while resolving method "%s" overloading "%s" in package
# either has stringification which DBI SHOULD prefer out of the box
grep { *{ (qq[${_}::(""]) }{CODE} } @{ $_[2] = mro::get_linear_isa( $_[1] ) }
or
- # has nummification and fallback is *not* disabled
+ # has nummification or boolification, AND fallback is *not* disabled
(
- grep { *{"${_}::(0+"}{CODE} } @{ mro::get_linear_isa( $_[1] ) }
+ (
+ grep { *{"${_}::(0+"}{CODE} } @{$_[2]}
+ or
+ grep { *{"${_}::(bool"}{CODE} } @{$_[2]}
+ )
and
(
# no fallback specified at all
{
package # hideee
+ SQLATest::SillyBool;
+
+ use overload
+ # *DELIBERATELY* unspecified
+ #fallback => 1,
+ bool => sub { ${$_[0]} },
+ ;
+
+ package # hideee
+ SQLATest::SillyBool::Subclass;
+
+ our @ISA = 'SQLATest::SillyBool';
+}
+
+{
+ package # hideee
SQLATest::SillyInt;
use overload
}
for my $case (
+ { class => 'SQLATest::SillyBool', can_math => 0, should_str => 1 },
+ { class => 'SQLATest::SillyBool::Subclass', can_math => 0, should_str => 1 },
{ class => 'SQLATest::SillyInt', can_math => 0, should_str => 1 },
{ class => 'SQLATest::SillyInt::Subclass', can_math => 0, should_str => 1 },
{ class => 'SQLATest::SillierInt', can_math => 0, should_str => 0 },