X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoo%2FObject.pm;h=5012f79e9af029fa8b1c7ca575c46c7ba5686430;hb=ef4ff8da82d5b2c2635da073084ad2a14b4d2050;hp=04d7f7e99a7bd0fb8f4b0951bf961f53f5f0aa11;hpb=31eec6e804b4abb6019b6b0cd3a20113ff97257f;p=gitmo%2FMoo.git diff --git a/lib/Moo/Object.pm b/lib/Moo/Object.pm index 04d7f7e..5012f79 100644 --- a/lib/Moo/Object.pm +++ b/lib/Moo/Object.pm @@ -12,7 +12,7 @@ sub new { unless (exists $NO_DEMOLISH{$class}) { unless ($NO_DEMOLISH{$class} = !$class->can('DEMOLISH')) { ($DEMOLISH_MAKER ||= do { - { local $@; require Method::Generate::DemolishAll; } + require Method::Generate::DemolishAll; Method::Generate::DemolishAll->new })->generate_method($class); } @@ -50,7 +50,7 @@ sub BUILDARGS { sub BUILDALL { my $self = shift; $self->${\(($BUILD_MAKER ||= do { - { local $@; require Method::Generate::BuildAll; } + require Method::Generate::BuildAll; Method::Generate::BuildAll->new })->generate_method(ref($self)))}(@_); } @@ -58,15 +58,22 @@ sub BUILDALL { sub DEMOLISHALL { my $self = shift; $self->${\(($DEMOLISH_MAKER ||= do { - { local $@; require Method::Generate::DemolishAll; } + require Method::Generate::DemolishAll; Method::Generate::DemolishAll->new })->generate_method(ref($self)))}(@_); } sub does { - { local $@; require Role::Tiny; } + require Role::Tiny; { no warnings 'redefine'; *does = \&Role::Tiny::does_role } goto &Role::Tiny::does_role; } +# duplicated in Moo::Role +sub meta { + require Moo::HandleMoose::FakeMetaClass; + my $class = ref($_[0])||$_[0]; + bless({ name => $class }, 'Moo::HandleMoose::FakeMetaClass'); +} + 1;