Make the new method in CMOP::Method::Generated throw an error. This is an abstract...
Dave Rolsky [Tue, 17 Mar 2009 16:13:37 +0000 (11:13 -0500)]
Changes
lib/Class/MOP/Method/Generated.pm

diff --git a/Changes b/Changes
index 8ee1179..e4f1df0 100644 (file)
--- 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).
index f3032da..1e35f76 100644 (file)
@@ -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} }