generate_method checks if default is a coderef
[gitmo/Moo.git] / lib / Method / Generate / Accessor.pm
index 10040e9..64bb881 100644 (file)
@@ -43,6 +43,16 @@ sub generate_method {
   if (($spec->{trigger}||0) eq 1) {
     $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 %methods;
   if (my $reader = $spec->{reader}) {
     if (our $CAN_HAZ_XS && $self->is_simple_get($name, $spec)) {