use Moose qw(confess);
use Sub::Exporter ();
use Sub::Name ();
-use Reaction::Types::Core;
+use Reaction::Types::Core ':all';
use Reaction::Object;
sub exporter_for_package {
my ($self, $package) = @_;
my %exports_proto = $self->exports_for_package($package);
+ no warnings 'uninitialized'; # XXX fix this
my %exports = (
map { my $cr = $exports_proto{$_}; ($_, sub { Sub::Name::subname "${self}::$_" => $cr; }) }
keys %exports_proto
#print STDERR "$package \n";
#print STDERR $package->meta->blessed, " \n";
$package->meta->make_immutable;
-# (inline_accessor => 0, inline_destructor => 0,inline_constructor => 0,);
+ # (inline_accessor => 0, inline_destructor => 0,inline_constructor => 0,);
}
sub setup_and_cleanup {
eval "package ${package}; no $unimport_class;";
confess "$unimport_class unimport from ${package} failed: $@" if $@;
foreach my $m (@methods) {
- $package->meta->add_method(@$m);
+ $self->add_method_to_target($package, $m);
}
foreach my $a (@apply_after) {
my $call = shift(@$a);
}
}
+sub add_method_to_target {
+ my ($self, $target, $method) = @_;
+ $target->meta->add_method(@$method);
+}
+
sub delayed_methods {
return (qw/has with extends before after around override augment/);
}