refactoring nested ifs
[gitmo/Moo.git] / lib / Method / Generate / Accessor.pm
index 64bb881..87f70eb 100644 (file)
@@ -44,12 +44,16 @@ sub generate_method {
     $spec->{trigger} = quote_sub('shift->_trigger_'.$name.'(@_)');
   }
   if (exists $spec->{default}) {
-    if (not ref $spec->{default}) {
-      die "Invalid default $spec->{default}";
-    }
-    elsif (ref $spec->{default} ne 'CODE') {
-      require Scalar::Util;
-      die "Invalid default $spec->{default}" unless Scalar::Util::blessed $spec->{default};
+    my $default = $spec->{default};
+    require Scalar::Util;
+    unless (
+      ref $default
+      and (
+        Scalar::Util::reftype $default eq 'CODE'
+        or Scalar::Util::blessed $default and $default->can('(&{}')
+      )
+    ) {
+      die "Invalid default $default";
     }
   }