use Sub::Name 'subname';
use B 'svref_2object';
-our $VERSION = '0.22';
+our $VERSION = '0.23';
our $AUTHORITY = 'cpan:STEVAN';
use base 'Class::MOP::Module';
my $package_name = shift;
(defined $package_name && $package_name && !blessed($package_name))
|| confess "You must pass a package name and it cannot be blessed";
+ if (defined(my $meta = Class::MOP::get_metaclass_by_name($package_name))) {
+ return $meta;
+ }
$class->construct_class_instance('package' => $package_name, @_);
}
# and it is still defined (it has not been
# reaped by DESTROY yet, which can happen
# annoyingly enough during global destruction)
- return Class::MOP::get_metaclass_by_name($package_name)
- if Class::MOP::does_metaclass_exist($package_name);
+
+ if (defined(my $meta = Class::MOP::get_metaclass_by_name($package_name))) {
+ return $meta;
+ }
# NOTE:
# we need to deal with the possibility
my $self = shift;
return if $self->is_mutable;
my $options = delete $IMMUTABLE_OPTIONS{$self->name};
- confess "unable to find immutabilizing options" unless $options;
+ confess "unable to find immutabilizing options" unless ref $options;
my $transformer = delete $options->{IMMUTABLE_TRANSFORMER};
$transformer->make_metaclass_mutable($self, %$options);
}