remove multi-populate code to fix exists/defined new() bug
[gitmo/Moo.git] / lib / Method / Generate / Accessor.pm
index 10040e9..fe268ba 100644 (file)
@@ -43,6 +43,18 @@ sub generate_method {
   if (($spec->{trigger}||0) eq 1) {
     $spec->{trigger} = quote_sub('shift->_trigger_'.$name.'(@_)');
   }
+  if (exists $spec->{default}) {
+    my $default = $spec->{default};
+    unless (ref $default) {
+      die "Invalid default $default";
+    }
+    if (ref $default ne 'CODE') {
+      unless (eval { \&$default }) {
+        die "Invalid default $default";
+      }
+    }
+  }
+
   my %methods;
   if (my $reader = $spec->{reader}) {
     if (our $CAN_HAZ_XS && $self->is_simple_get($name, $spec)) {
@@ -386,11 +398,6 @@ sub _generate_populate_set {
   }
 }
 
-sub generate_multi_set {
-  my ($self, $me, $to_set, $from) = @_;
-  "\@{${me}}{qw(${\join ' ', @$to_set})} = $from";
-}
-
 sub _generate_core_set {
   my ($self, $me, $name, $spec, $value) = @_;
   my $name_str = perlstring $name;