Don't require there to be a BUILDARGS method; fix undef warning
Shawn M Moore [Thu, 5 Feb 2009 02:07:30 +0000 (02:07 +0000)]
lib/Mouse/Meta/Method/Constructor.pm
t/040-existing-subclass.t

index 5b8b5d2..a11479d 100644 (file)
@@ -136,7 +136,7 @@ sub _generate_BUILDARGS {
     my $self = shift;
     my $meta = shift;
 
-    if ($meta->name->can('BUILDARGS') != Mouse::Object->can('BUILDARGS')) {
+    if ($meta->name->can('BUILDARGS') && $meta->name->can('BUILDARGS') != Mouse::Object->can('BUILDARGS')) {
         return '$class->BUILDARGS(@_)';
     }
 
index 38f41f8..52a9e5f 100644 (file)
@@ -6,7 +6,7 @@ use Test::More;
 BEGIN {
     eval "use Test::Output;";
     plan skip_all => "Test::Output is required for this test" if $@;
-    plan tests => 2;
+    plan tests => 3;
 }
 
 do {
@@ -45,3 +45,15 @@ stderr_is(
     'Mouse does not warn about inlining a constructor when the superclass inlined a constructor',
 );
 
+do {
+    package Baz;
+
+    package Quux;
+    BEGIN { our @ISA = 'Baz' }
+    use Mouse;
+
+    __PACKAGE__->meta->make_immutable;
+};
+
+ok(Quux->new);
+