die in Attribute::_process_options if the attr is required but there is no way to...
Yuval Kogman [Sun, 27 Jan 2008 00:20:14 +0000 (00:20 +0000)]
lib/Moose/Meta/Attribute.pm

index 39036f4..0d5b2a0 100644 (file)
@@ -195,10 +195,14 @@ sub _process_options {
     }
 
     if (exists $options->{lazy} && $options->{lazy}) {
-        (exists $options->{default} || exists $options->{builder} )
+        (exists $options->{default} || defined $options->{builder} )
             || confess "You cannot have lazy attribute without specifying a default value for it";
     }
 
+    if ( $options->{required} && !( ( !exists $options->{init_arg} || defined $options->{init_arg} ) || exists $options->{default} || defined $options->{builder} ) ) {
+        confess "You cannot have a required attribute without a default, builder, or an init_arg";
+    }
+
 }
 
 sub initialize_instance_slot {