check default using \&{}
Vyacheslav Matyukhin [Wed, 6 Jun 2012 20:26:12 +0000 (00:26 +0400)]
lib/Method/Generate/Accessor.pm

index 87f70eb..7056200 100644 (file)
@@ -45,16 +45,14 @@ sub generate_method {
   }
   if (exists $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('(&{}')
-      )
-    ) {
+    unless (ref $default) {
       die "Invalid default $default";
     }
+    if (ref $default ne 'CODE') {
+      unless (eval { \&$default }) {
+        die "Invalid default $default";
+      }
+    }
   }
 
   my %methods;