X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FError%2FDefault.pm;h=d3673f034c2c256d955945edd498fcf3acddab54;hb=bcc04ae144478d804246a90cbccc5f2b857935b3;hp=47c0024387aad908a9574c5b673f57190ba75cd5;hpb=aa5bb362a4a2abe803c486688d7fca62a46c89ab;p=gitmo%2FMoose.git diff --git a/lib/Moose/Error/Default.pm b/lib/Moose/Error/Default.pm index 47c0024..d3673f0 100644 --- a/lib/Moose/Error/Default.pm +++ b/lib/Moose/Error/Default.pm @@ -20,6 +20,16 @@ sub new { } } +sub _inline_new { + my ( $self, @args ) = @_; + + return '(do { ' + . '(defined $ENV{MOOSE_ERROR_STYLE} && $ENV{MOOSE_ERROR_STYLE} eq "croak"' + . ' ? ' . $self->_inline_create_error_carpmess(@args) + . ' : ' . $self->_inline_create_error_carpmess(@args, longmess => 1) + . ')})'; +} + sub create_error_croak { my ( $self, @args ) = @_; $self->_create_error_carpmess( @args ); @@ -46,6 +56,31 @@ sub _create_error_carpmess { } } +sub _inline_create_error_carpmess { + my ( $self, %args ) = @_; + + my $carp_level = $args{depth} || 0; + + my $create_message = 'Carp::longmess(' . $args{message} . ')'; + + if (!$args{longmess}) { + $create_message = + '($Carp::Verbose ' + . '? ' . $create_message . ' ' + . ': Carp::ret_summary(' + . $carp_level . ', ' . $args{message} + . '))'; + } + + return + '(do { ' + . 'local $Carp::MaxArgNums = 20; ' + . 'local $Carp::CarpLevel = ($Carp::CarpLevel || 0) + ' + . $carp_level . '; ' + . $create_message + . '})'; +} + 1; # ABSTRACT: L based error generation for Moose.