fix $obj->new
Matt S Trout [Mon, 14 Nov 2011 23:53:20 +0000 (23:53 +0000)]
Changes
lib/Method/Generate/Constructor.pm
t/method-generate-constructor.t

diff --git a/Changes b/Changes
index a2aec8d..afaf3d1 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,4 @@
+  - make Method::Generate::Constructor handle $obj->new
   - fix bug where constants containing a reference weren't handled correctly
     (ref(\[]) is 'REF' not 'SCALAR', ref(\v1) is 'VSTRING')
 
index 11f0589..c11cbd2 100644 (file)
@@ -42,7 +42,8 @@ sub generate_method {
     $spec->{$no_init}{init_arg} = $no_init;
   }
   local $self->{captures} = {};
-  my $body = '    my $class = shift;'."\n";
+  my $body = '    my $class = shift;'."\n"
+            .'    $class = ref($class) if ref($class);'."\n";
   $body .= $self->_handle_subconstructor($into, $name);
   my $into_buildargs = $into->can('BUILDARGS');
   if ( $into_buildargs && $into_buildargs != \&Moo::Object::BUILDARGS ) {
index 6a030c8..6299010 100644 (file)
@@ -57,4 +57,10 @@ is(
   'hashrefs also supported'
 );
 
+is(
+  exception { $first->new(one => 1, THREE => 3) },
+  undef,
+  'calling ->new on an object works'
+);
+
 done_testing;