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 {
491
491
my ($value ) = @_ ;
492
492
493
493
# we need a type object
494
- my $tobj = find_type_constraint($full ) or croak $undef_msg ;
494
+ my $tobj = find_type_constraint($full );
495
495
496
496
return sub {
497
+ croak $undef_msg unless $tobj ;
498
+
497
499
my $return = $tobj -> coerce($_ [0]);
498
500
499
501
# non-successful coercion returns false
@@ -517,11 +519,15 @@ sub check_export_generator {
517
519
my ($value ) = @_ ;
518
520
519
521
# we need a type object
520
- my $tobj = find_type_constraint($full ) or croak $undef_msg ;
522
+ my $tobj = find_type_constraint($full );
521
523
522
524
# This method will actually compile an inlined sub if possible. If
523
525
# 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 };
525
531
}
526
532
}
527
533
Original file line number Diff line number Diff line change @@ -25,4 +25,17 @@ unlike(
25
25
' is_Int sub is now undeferred'
26
26
);
27
27
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
+
28
41
done_testing();
You can’t perform that action at this time.
0 commit comments