use hash refs with _new
[gitmo/Class-MOP.git] / lib / Class / MOP / Immutable.pm
index 2318346..0ddc75a 100644 (file)
@@ -31,12 +31,11 @@ sub new {
         $metaclass = $options{metaclass};
     }
 
-    # FIXME make a proper constructor using ->meta->new_object
-    my $self = bless {
+    my $self = $class->_new(
         'metaclass'           => $metaclass,
         'options'             => $options,
         'immutable_metaclass' => undef,
-    } => $class;
+    );
 
     # NOTE:
     # we initialize the immutable
@@ -47,6 +46,13 @@ sub new {
     return $self;
 }
 
+sub _new {
+    my $class = shift;
+    my $options = @_ == 1 ? $_[0] : {@_};
+
+    bless $options, $class;
+}
+
 sub immutable_metaclass { (shift)->{'immutable_metaclass'} }
 sub metaclass           { (shift)->{'metaclass'}           }
 sub options             { (shift)->{'options'}             }