Use quote_sub for trivial defaults
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Role / Error.pm
1 package SQL::Translator::Role::Error;
2 use Moo::Role;
3 use Sub::Quote qw(quote_sub);
4
5 has _ERROR => (
6     is => 'rw',
7     accessor => 'error',
8     init_arg => undef,
9     default => quote_sub(q{ '' }),
10 );
11
12 around error => sub {
13     my ($orig, $self) = (shift, shift);
14
15     # Emulate horrible Class::Base API
16     unless (ref($self)) {
17         my $errref = do { no strict 'refs'; \${"${self}::ERROR"} };
18         return $$errref unless @_;
19         $$errref = $_[0];
20         return undef;
21     }
22
23     return $self->$orig unless @_;
24     $self->$orig(@_);
25     return undef;
26 };
27
28 1;