1*eac174f2Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1 3b8851fccSafresh1# Math::BigFloat->new had a bug where it would assume any object is a 4b8851fccSafresh1# Math::BigInt which broke overloaded non-Math::BigInt objects. 5b8851fccSafresh1 6b8851fccSafresh1use strict; 7b8851fccSafresh1use warnings; 8b8851fccSafresh1 9b8851fccSafresh1use Test::More tests => 4; 10b8851fccSafresh1 11b8851fccSafresh1############################################################################## 12b8851fccSafresh1 13b8851fccSafresh1package Overloaded::Num; 14b8851fccSafresh1 15b8851fccSafresh1use overload 16b8851fccSafresh1 '0+' => sub { ${$_[0]} }, 17b8851fccSafresh1 fallback => 1; 18b8851fccSafresh1 19b8851fccSafresh1sub new { 20b8851fccSafresh1 my ($class, $num) = @_; 21b8851fccSafresh1 return bless \$num, $class; 22b8851fccSafresh1} 23b8851fccSafresh1 24b8851fccSafresh1package main; 25b8851fccSafresh1 26b8851fccSafresh1use Math::BigFloat; 27b8851fccSafresh1 28b8851fccSafresh1my $overloaded_num = Overloaded::Num->new(2.23); 29b8851fccSafresh1is($overloaded_num, 2.23, 'Overloaded::Num->new(2.23)'); 30b8851fccSafresh1 31b8851fccSafresh1my $bigfloat = Math::BigFloat->new($overloaded_num); 32b8851fccSafresh1is($bigfloat, 2.23, 'Math::BigFloat->new() accepts overloaded numbers'); 33b8851fccSafresh1 34b8851fccSafresh1my $bigint = Math::BigInt->new(Overloaded::Num->new(3)); 35b8851fccSafresh1is($bigint, 3, 'Math::BigInt->new() accepts overloaded numbers'); 36b8851fccSafresh1 37b8851fccSafresh1is(Math::BigFloat->new($bigint), 3, 38b8851fccSafresh1 'Math::BigFloat->new() accepts a Math::BigInt'); 39