This makes
package Foo;
use overload fallback => 0;
and
package Bar;
use overload '+' => \&add, fallback => 0;
behave identically when an operator other than '+' is used.
NOOP; /* Equivalent to !SvTRUE and !SvOK */
}
#endif
- else if (SvTRUE(sv))
+ else if (SvTRUE(sv)) {
amt.fallback=AMGfallYES;
- else if (SvOK(sv))
+ filled = 1;
+ have_ovl = 1;
+ }
+ else if (SvOK(sv)) {
amt.fallback=AMGfallNEVER;
+ filled = 1;
+ have_ovl = 1;
+ }
for (i = 1; i < lim; i++)
amt.table[i] = NULL;
$| = 1;
BEGIN { require './test.pl' }
-plan tests => 5184;
+plan tests => 5186;
use Scalar::Util qw(tainted);
is($obj->val, 7, "correct result (add incr void)");
}
+# [perl #113010]
+{
+ {
+ package OnlyFallback;
+ use overload fallback => 0;
+ }
+ my $obj = bless {}, 'OnlyFallback';
+ my $died = !eval { "".$obj; 1 };
+ my $err = $@;
+ ok($died, "fallback of 0 causes error");
+ like($err, qr/"\.": no method found/, "correct error");
+}
{ # undefining the overload stash -- KEEP THIS TEST LAST
package ant;