sub _generate_isa_check {
my ($self, $name, $value, $check) = @_;
- $self->_generate_call_code($name, 'isa_check', $value, $check);
+ "{\n"
+ .' my $sig_die = $SIG{__DIE__} || sub { die $_[0] };'."\n"
+ .' local $SIG{__DIE__} = sub {'."\n"
+ .' $sig_die->(ref($_[0]) ? $_[0] : q{isa check for '.perlstring($name).' failed: }.$_[0]);'."\n"
+ .' };'."\n"
+ .$self->_generate_call_code($name, 'isa_check', $value, $check)
+ ."}\n"
}
sub _generate_call_code {