use Class::Inspector ();
use Scalar::Util ();
use MRO::Compat;
+use Sub::Name ();
-our $VERSION = '0.08001';
+our $VERSION = '0.08004';
=head1 NAME
($name, $field) = @$field if ref $field;
my $accessor = $self->$maker($group, $field);
+ my $alias_accessor = $self->$maker($group, $field);
+
my $alias = "_${name}_accessor";
+ my $full_name = join('::', $class, $name);
+ my $full_alias = join('::', $class, $alias);
- *{$class."\:\:$name"} = $accessor;
+ *$full_name = Sub::Name::subname($full_name, $accessor);
#unless defined &{$class."\:\:$field"}
-
- *{$class."\:\:$alias"} = $accessor;
+ *$full_alias = Sub::Name::subname($full_alias, $alias_accessor);
#unless defined &{$class."\:\:$alias"}
}
}
=cut
sub get_simple {
- my ($self, $get) = @_;
- return $self->{$get};
return $_[0]->{$_[1]};
}
};
no strict 'refs';
+ no warnings qw/uninitialized/;
return ${$class.'::__cag_'.$_[1]} if defined(${$class.'::__cag_'.$_[1]});
- if (!@{$class.'::__cag_supers'}) {
+ # we need to be smarter about recalculation, as @ISA (thus supers) can very well change in-flight
+ my $pkg_gen = mro::get_pkg_gen ($class);
+ if ( ${$class.'::__cag_pkg_gen'} != $pkg_gen ) {
@{$class.'::__cag_supers'} = $_[0]->get_super_paths;
+ ${$class.'::__cag_pkg_gen'} = $pkg_gen;
};
foreach (@{$class.'::__cag_supers'}) {
Matt S. Trout <mst@shadowcatsystems.co.uk>
Christopher H. Laco <claco@chrislaco.com>
+With contributions from:
+
+Guillermo Roditi <groditi@cpan.org>
+
=head1 LICENSE
You may distribute this code under the same terms as Perl itself.