use warnings;
use Carp 'confess';
-use Scalar::Util 'weaken';
+use Scalar::Util 'weaken', 'reftype';
-our $VERSION = '0.84';
+our $VERSION = '0.89';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
my %params = @args;
my $code = $params{body};
- ('CODE' eq ref($code))
+ (ref $code && 'CODE' eq reftype($code))
|| confess "You must supply a CODE reference to bless, not (" . ($code || 'undef') . ")";
($params{package_name} && $params{name})
sub _new {
my $class = shift;
+
+ return Class::MOP::Class->initialize($class)->new_object(@_)
+ if $class ne __PACKAGE__;
+
my $params = @_ == 1 ? $_[0] : {@_};
- my $self = bless {
+ return bless {
'body' => $params->{body},
'associated_metaclass' => $params->{associated_metaclass},
'package_name' => $params->{package_name},
'name' => $params->{name},
+ 'original_method' => $params->{original_method},
} => $class;
}