1515use  Illuminate \Container \Attributes \CurrentUser ;
1616use  Illuminate \Container \Attributes \Database ;
1717use  Illuminate \Container \Attributes \Log ;
18+ use  Illuminate \Container \Attributes \Give ;
1819use  Illuminate \Container \Attributes \RouteParameter ;
1920use  Illuminate \Container \Attributes \Storage ;
2021use  Illuminate \Container \Attributes \Tag ;
@@ -46,7 +47,7 @@ public function testDependencyCanBeResolvedFromAttributeBinding()
4647    {
4748        $ containernew  Container ;
4849
49-         $ containerbind (ContainerTestContract::class, fn  () => new  ContainerTestImplB );
50+         $ containerbind (ContainerTestContract::class, fn  ():  ContainerTestImplB new  ContainerTestImplB );
5051        $ containerwhenHasAttribute (ContainerTestAttributeThatResolvesContractImpl::class, function  (ContainerTestAttributeThatResolvesContractImpl $ attribute
5152            return  match  ($ attributename ) {
5253                'A '  => new  ContainerTestImplA ,
@@ -65,6 +66,30 @@ public function testDependencyCanBeResolvedFromAttributeBinding()
6566        $ this assertInstanceOf (ContainerTestImplB::class, $ classBproperty );
6667    }
6768
69+     public  function  testSimpleDependencyCanBeResolvedCorrectlyFromGiveAttributeBinding ()
70+     {
71+         $ containernew  Container ;
72+ 
73+         $ containerbind (ContainerTestContract::class, concrete: ContainerTestImplA::class);
74+ 
75+         $ resolution$ containermake (GiveTestSimple::class);
76+ 
77+         $ this assertInstanceOf (SimpleDependency::class, $ resolutiondependency );
78+     }
79+ 
80+ 
81+     public  function  testComplexDependencyCanBeResolvedCorrectlyFromGiveAttributeBinding ()
82+     {
83+         $ containernew  Container ;
84+ 
85+         $ containerbind (ContainerTestContract::class, concrete: ContainerTestImplA::class);
86+ 
87+         $ resolution$ containermake (GiveTestComplex::class);
88+ 
89+         $ this assertInstanceOf (ComplexDependency::class, $ resolutiondependency );
90+         $ this assertTrue ($ resolutiondependency ->param );
91+     }
92+ 
6893    public  function  testScalarDependencyCanBeResolvedFromAttributeBinding ()
6994    {
7095        $ containernew  Container ;
@@ -161,6 +186,7 @@ public function testConfigAttribute()
161186        $ containermake (ConfigTest::class);
162187    }
163188
189+ 
164190    public  function  testDatabaseAttribute ()
165191    {
166192        $ containernew  Container ;
@@ -435,6 +461,13 @@ public function __construct(
435461    }
436462}
437463
464+ final  class  SimpleDependency implements  ContainerTestContract {}
465+ 
466+ final  class  ComplexDependency implements  ContainerTestContract
467+ {
468+     public  function  __construct (public  bool  $ param
469+ }   
470+ 
438471final  class  AuthedTest
439472{
440473    public  function  __construct (#[Authenticated('foo ' )] AuthenticatableContract $ foo'bar ' )] AuthenticatableContract $ bar
@@ -505,6 +538,24 @@ public function __construct(#[Storage('foo')] Filesystem $foo, #[Storage('bar')]
505538    }
506539}
507540
541+ final  class  GiveTestSimple
542+ {
543+     public  function  __construct (
544+         #[Give(SimpleDependency::class)]
545+         public  readonly  ContainerTestContract $ dependency
546+     ) {
547+     }
548+ }
549+ 
550+ final  class  GiveTestComplex
551+ {
552+     public  function  __construct (
553+         #[Give(ComplexDependency::class, ['param '  => true ])]
554+         public  readonly  ContainerTestContract $ dependency
555+     ) {
556+     }
557+ }
558+ 
508559final  class  TimezoneObject
509560{
510561    public  function  __construct (
0 commit comments