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