*check_package_cache_flag = \&mro::get_pkg_gen;
}
-our $VERSION = '0.87';
+our $VERSION = '0.89';
our $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
# there is no need to worry about destruction though
# because they should die only when the program dies.
# After all, do package definitions even get reaped?
+ # Anonymous classes manage their own destruction.
my %METAS;
- # means of accessing all the metaclasses that have
- # been initialized thus far (for mugwumps obj browser)
sub get_all_metaclasses { %METAS }
sub get_all_metaclass_instances { values %METAS }
sub get_all_metaclass_names { keys %METAS }
sub store_metaclass_by_name { $METAS{$_[0]} = $_[1] }
sub weaken_metaclass { weaken($METAS{$_[0]}) }
sub does_metaclass_exist { exists $METAS{$_[0]} && defined $METAS{$_[0]} }
- sub remove_metaclass_by_name { $METAS{$_[0]} = undef }
+ sub remove_metaclass_by_name { delete $METAS{$_[0]}; return }
# This handles instances as well as class names
sub class_of {
my $found;
my %exceptions;
for my $class (@classes) {
- my $pmfile = _class_to_pmfile($class);
my $e = _try_load_one_class($class);
if ($e) {
+ my $pmfile = _class_to_pmfile($class);
$exceptions{$class} = $e;
last if $e !~ /^Can't locate \Q$pmfile\E in \@INC/;
}
# NOTE: we don't need to inline the the accessors this only lengthens
# the compile time of the MOP, and gives us no actual benefits.
-# this is just nitpicking to ensure Class::MOP::Class->meta == ->meta->meta
-Class::MOP::Class->meta->_immutable_metaclass;
-$Class::MOP::Class::immutable_metaclass_cache{"Class::MOP::Class"}{"Class::MOP::Class::Immutable::Trait"} = Class::MOP::Class::Immutable::Class::MOP::Class->meta;
-
$_->meta->make_immutable(
- inline_constructor => 1,
- replace_constructor => 1,
+ inline_constructor => 0,
constructor_name => "_new",
inline_accessors => 0,
) for qw/
Class::MOP::Package
Class::MOP::Module
Class::MOP::Class
- Class::MOP::Class::Immutable::Class::MOP::Class
Class::MOP::Attribute
Class::MOP::Method