File tree Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -491,9 +491,11 @@ sub coercion_export_generator {
491491 my ($value ) = @_ ;
492492
493493 # we need a type object
494- my $tobj = find_type_constraint($full ) or croak $undef_msg ;
494+ my $tobj = find_type_constraint($full );
495495
496496 return sub {
497+ croak $undef_msg unless $tobj ;
498+
497499 my $return = $tobj -> coerce($_ [0]);
498500
499501 # non-successful coercion returns false
@@ -517,11 +519,15 @@ sub check_export_generator {
517519 my ($value ) = @_ ;
518520
519521 # we need a type object
520- my $tobj = find_type_constraint($full ) or croak $undef_msg ;
522+ my $tobj = find_type_constraint($full );
521523
522524 # This method will actually compile an inlined sub if possible. If
523525 # not, it will return something like sub { $tobj->check($_[0]) }
524- return $tobj -> _compiled_type_constraint;
526+ #
527+ # If $tobj is undef, we delay the croaking until the check is
528+ # actually used for backward compatibility reasons. See
529+ # RT #119534.
530+ return $tobj ? $tobj -> _compiled_type_constraint : sub { croak $undef_msg };
525531 }
526532}
527533
Original file line number Diff line number Diff line change @@ -25,4 +25,17 @@ unlike(
2525 ' is_Int sub is now undeferred'
2626);
2727
28+ {
29+ package MyTypes ;
30+
31+ use MooseX::Types -declare => [' Unused' ];
32+
33+ }
34+
35+ is(
36+ exception { undefer_all() },
37+ undef ,
38+ ' Sub::Defer::undefer_all does not throw an exception with unused type declaration'
39+ );
40+
2841done_testing();
You can’t perform that action at this time.
0 commit comments