From: Dave Rolsky Date: Tue, 17 Mar 2009 16:13:37 +0000 (-0500) Subject: Make the new method in CMOP::Method::Generated throw an error. This is an abstract... X-Git-Tag: 0.78_01~11 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0242e3f969677ca7ad9e88c8832a884ff6f78f7d;p=gitmo%2FClass-MOP.git Make the new method in CMOP::Method::Generated throw an error. This is an abstract base class, and the subclasses really need to implement their own constructor. --- diff --git a/Changes b/Changes index 8ee1179..e4f1df0 100644 --- a/Changes +++ b/Changes @@ -13,6 +13,11 @@ Revision history for Perl extension Class-MOP. exists (and will stick around for a few releases), but it warns that calling the public method is deprecated. + * Class::MOP::Method::Generated + - Removed the new and _new methods, since this is an abstract + base class, and all existing subclasses implement their own + constructors. + * MOP.xs - Stop is_class_loaded from thinking a class is loaded if it only has an empty GV (Florian Ragwitz). diff --git a/lib/Class/MOP/Method/Generated.pm b/lib/Class/MOP/Method/Generated.pm index f3032da..1e35f76 100644 --- a/lib/Class/MOP/Method/Generated.pm +++ b/lib/Class/MOP/Method/Generated.pm @@ -12,32 +12,12 @@ our $AUTHORITY = 'cpan:STEVAN'; use base 'Class::MOP::Method'; -sub new { - my $class = shift; - my %options = @_; - - ($options{package_name} && $options{name}) - || confess "You must supply the package_name and name parameters $Class::MOP::Method::UPGRADE_ERROR_TEXT"; - - my $self = $class->_new(\%options); - - $self->initialize_body; - - return $self; -} - -sub _new { - my $class = shift; - my $options = @_ == 1 ? $_[0] : {@_}; - - $options->{is_inline} ||= 0; - $options->{body} ||= undef; +## accessors - bless $options, $class; +sub new { + confess __PACKAGE__ . " is an abstract base class, you must provide a constructor."; } -## accessors - sub is_inline { $_[0]{is_inline} } sub definition_context { $_[0]{definition_context} }