X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=44b8fdcb4105e8c6222d8b38874396827044d6d6;hb=95637edb1de318b764f8ec2fc8b5c5c8d4430010;hp=27a48db3433a9a7d15e6845f751f9fb16f674c26;hpb=9293fc9987237cca0e0072c9f9d670ea0ba3e47b;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index 27a48db..44b8fdc 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -93,9 +93,11 @@ sub verify_superclass { sub inherit_from_foreign_class { my($class, $super) = @_; - Carp::carp("You inherit from non-Mouse class ($super)," - . " but it is unlikely to work correctly." - . " Please consider using MouseX::Foreign"); + if($ENV{PERL_MOUSE_STRICT}) { + Carp::carp("You inherit from non-Mouse class ($super)," + . " but it is unlikely to work correctly." + . " Please consider using MouseX::Foreign"); + } return; } @@ -241,7 +243,7 @@ sub add_attribute { # then register the attribute to the metaclass $attr->{insertion_order} = keys %{ $self->{attributes} }; $self->{attributes}{$name} = $attr; - delete $self->{_mouse_cache}; # clears internal cache + $self->_invalidate_metaclass_cache(); if(!$attr->{associated_methods} && ($attr->{is} || '') ne 'bare'){ Carp::carp(qq{Attribute ($name) of class }.$self->name @@ -413,8 +415,7 @@ sub add_override_method_modifier { local $Mouse::SUPER_PACKAGE = $package; local $Mouse::SUPER_BODY = $super_body; local @Mouse::SUPER_ARGS = @_; - - $code->(@_); + &{$code}; }); return; } @@ -431,10 +432,10 @@ sub add_augment_method_modifier { my $super_package = $super->package_name; my $super_body = $super->body; - $self->add_method($name => sub{ + $self->add_method($name => sub { local $Mouse::INNER_BODY{$super_package} = $code; local $Mouse::INNER_ARGS{$super_package} = [@_]; - $super_body->(@_); + &{$super_body}; }); return; } @@ -469,7 +470,7 @@ Mouse::Meta::Class - The Mouse class metaclass =head1 VERSION -This document describes Mouse version 0.76 +This document describes Mouse version 0.90 =head1 DESCRIPTION