use strict;
use warnings;
-our $VERSION = '0.61';
+our $VERSION = '0.66';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
our $CALLER;
sub _make_wrapped_sub {
- shift;
+ my $self = shift;
my $fq_name = shift;
my $sub = shift;
my $export_recorder = shift;
return sub {
my $caller = $CALLER;
- my $sub
- = Class::MOP::subname( $fq_name => sub { $sub->( $caller, @_ ) } );
+ my $wrapper = $self->_make_wrapper($caller, $sub, $fq_name);
+
+ my $sub = Class::MOP::subname($fq_name => $wrapper);
$export_recorder->{$sub} = 1;
};
}
+sub _make_wrapper {
+ shift;
+ my $caller = shift;
+ my $sub = shift;
+ my $fq_name = shift;
+
+ return sub { $sub->($caller, @_) };
+}
+
sub _make_import_sub {
shift;
my $exporting_package = shift;
my $did_init_meta;
for my $c ( grep { $_->can('init_meta') } $class, @{$exports_from} ) {
+ # init_meta can apply a role, which when loaded uses
+ # Moose::Exporter, which in turn sets $CALLER, so we need
+ # to protect against that.
+ local $CALLER = $CALLER;
$c->init_meta( for_class => $CALLER );
$did_init_meta = 1;
}
=head1 COPYRIGHT AND LICENSE
-Copyright 2008 by Infinity Interactive, Inc.
+Copyright 2009 by Infinity Interactive, Inc.
L<http://www.iinteractive.com>