diff options
Diffstat (limited to 't/bugs/overloading_edge_cases.t')
-rw-r--r-- | t/bugs/overloading_edge_cases.t | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/t/bugs/overloading_edge_cases.t b/t/bugs/overloading_edge_cases.t new file mode 100644 index 0000000..af2abfc --- /dev/null +++ b/t/bugs/overloading_edge_cases.t @@ -0,0 +1,43 @@ +use strict; +use warnings; + +use Test::More; + +{ + package Role::Overloads; + use Moose::Role; + use overload q{""} => 'as_string'; + requires 'as_string'; +} + +{ + package Class::Overloads; + use Moose; + with 'Role::Overloads'; + sub as_string { 'foo' } +} + +is( + Class::Overloads->new() . q{}, 'foo', + 'Class::Overloads overloads stringification with overloading defined in role and method defined in class' +); + +{ + package Parent::NoOverloads; + use Moose; + sub name { ref $_[0] } +} + +{ + package Child::Overloads; + use Moose; + use overload q{""} => 'name'; + extends 'Parent::NoOverloads'; +} + +is( + Child::Overloads->new() . q{}, 'Child::Overloads', + 'Child::Overloads overloads stringification with method inherited from parent' +); + +done_testing; |