subname( $full_method_name => $body );
}
- $self->add_package_symbol(
- { sigil => '&', type => 'CODE', name => $method_name },
- $body,
- );
+ $self->add_package_symbol("&$method_name", $body);
+
+ # if we added the actual method object to the method map, we're still valid
+ $self->update_package_cache_flag
+ if blessed($method);
}
sub _code_is_mine {
my $map_entry = $self->_method_map->{$method_name};
return $map_entry if defined $map_entry;
- my $code = $self->get_package_symbol(
- {
- name => $method_name,
- sigil => '&',
- type => 'CODE',
- }
- );
+ my $code = $self->get_package_symbol("&$method_name");
unless ($map_entry) {
return unless $code && $self->_code_is_mine($code);
my $removed_method = delete $self->_method_map->{$method_name};
- $self->remove_package_symbol(
- { sigil => '&', type => 'CODE', name => $method_name } );
+ $self->remove_package_symbol("&$method_name");
$removed_method->detach_from_class
if $removed_method && blessed $removed_method;