Commit | Line | Data |
8748a8e8 |
1 | package # pretend this doesn't exist, because it shouldn't |
2 | Moose::Error::Util; |
3 | |
4 | use strict; |
5 | use warnings; |
6 | |
7 | # this intentionally exists to have a place to put this logic that doesn't |
8 | # involve loading Class::MOP, so... don't do that |
9 | |
10 | use Carp::Heavy; |
11 | |
12 | sub _create_error_carpmess { |
13 | my %args = @_; |
14 | |
15 | my $carp_level = 3 + ( $args{depth} || 0 ); |
16 | local $Carp::MaxArgNums = 20; # default is 8, usually we use named args which gets messier though |
17 | |
18 | my @args = exists $args{message} ? $args{message} : (); |
19 | |
20 | if ( $args{longmess} || $Carp::Verbose ) { |
21 | local $Carp::CarpLevel = ( $Carp::CarpLevel || 0 ) + $carp_level; |
22 | return Carp::longmess(@args); |
23 | } else { |
24 | return Carp::ret_summary($carp_level, @args); |
25 | } |
26 | } |
27 | |
28 | sub create_error_croak { |
29 | _create_error_carpmess(@_); |
30 | } |
31 | |
32 | sub create_error_confess { |
33 | _create_error_carpmess(@_, longmess => 1); |
34 | } |
35 | |
36 | sub create_error { |
37 | if (defined $ENV{MOOSE_ERROR_STYLE} && $ENV{MOOSE_ERROR_STYLE} eq 'croak') { |
38 | create_error_croak(@_); |
39 | } |
40 | else { |
41 | create_error_confess(@_); |
42 | } |
43 | } |
44 | |
45 | 1; |