diff options
-rw-r--r-- | lib/Bread/Board/Declare/Role/Object.pm | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm index b1f5fbd..b4f509d 100644 --- a/lib/Bread/Board/Declare/Role/Object.pm +++ b/lib/Bread/Board/Declare/Role/Object.pm @@ -53,19 +53,31 @@ after BUILD => sub { my $container; if ($attr->has_value($self) || $attr->has_default || $attr->has_builder) { $container = $attr->get_value($self); + $container->name($attr->name); } else { + my $dependencies = $attr->has_dependencies + ? $attr->dependencies + : {}; + + if (!exists $dependencies->{name}) { + my $name_dep = Bread::Board::Dependency->new( + service => Bread::Board::Literal->new( + name => '__ANON__', + value => $attr->name, + ), + ); + $dependencies->{name} = $name_dep; + } + my $s = Bread::Board::ConstructorInjection->new( name => '__ANON__', parent => $self, class => $attr->type_constraint->class, - ($attr->has_dependencies - ? (dependencies => $attr->dependencies) - : ()), + dependencies => $dependencies, ); $container = $s->get; } - $container->name($attr->name); $self->add_sub_container($container); } }; |