# The metaclass of $super is not initialized.
# i.e. it might be Mouse::Object, a mixin package (e.g. Exporter),
# or a foreign class including Moose classes.
-
- # checks if $super is a foreign class (i.e. non-Mouse class)
- # see also Mouse::Foreign::Meta::Role::Class
+ # See also Mouse::Foreign::Meta::Role::Class.
my $mm = $super->can('meta');
if(!($mm && $mm == \&Mouse::Util::meta)) {
if($super->can('new') or $super->can('DESTROY')) {
local $Mouse::SUPER_PACKAGE = $package;
local $Mouse::SUPER_BODY = $super_body;
local @Mouse::SUPER_ARGS = @_;
-
- $code->(@_);
+ &{$code};
});
return;
}
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;
}