implement inlined access to the mop slot, to fix immutable anon classes
[gitmo/Class-MOP.git] / lib / Class / MOP / Method / Constructor.pm
index ac2803c..9a95e9e 100644 (file)
@@ -114,6 +114,9 @@ sub _generate_constructor_method_inline {
     $source .= ";\n" . (join ";\n" => map {
         $self->_generate_slot_initializer($_, $idx++)
     } @{ $self->_attributes });
+    if (Class::MOP::metaclass_is_weak($self->associated_metaclass->name)) {
+        $source .= ";\n" . $self->associated_metaclass->_inline_set_mop_slot('$instance', 'Class::MOP::class_of($class)');
+    }
     $source .= ";\n" . 'return $instance';
     $source .= ";\n" . '}';
     warn $source if $self->options->{debug};