avoid uninitialized warning on ->new(nonref)
Yuval Kogman [Thu, 26 Jun 2008 15:26:10 +0000 (15:26 +0000)]
lib/Moose/Meta/Method/Constructor.pm
lib/Moose/Object.pm

index 6c37c14..c0ae6a9 100644 (file)
@@ -128,6 +128,7 @@ sub _generate_BUILDARGS {
     if ( $args eq '@_' and ( !$buildargs or $buildargs->body == \&Moose::Object::BUILDARGS ) ) {
         return join("\n",
             'do {',
+            'no warnings "uninitialized";',
             'confess "Single parameters to new() must be a HASH ref"',
             '    if scalar @_ == 1 && defined $_[0] && ref($_[0]) ne q{HASH};',
             '(scalar @_ == 1) ? {%{$_[0]}} : {@_};',
index 7fc09a7..15a6536 100644 (file)
@@ -25,12 +25,13 @@ sub BUILDARGS {
 
     if (scalar @_ == 1) {
         if (defined $_[0]) {
+            no warnings 'uninitialized';
             (ref($_[0]) eq 'HASH')
                 || confess "Single parameters to new() must be a HASH ref";
             return {%{$_[0]}};
+        } else {
+            return {}; # FIXME this is compat behavior, but is it correct?
         }
-
-        return {}; # FIXME this is compat behavior, but is it correct?
     } else {
         return {@_};
     }