44
55namespace Bug10345 ;
66
7+ use function PHPStan \Testing \assertType ;
8+
79$ container = new \stdClass ();
810$ container ->items = [];
911
12+ assertType ('stdClass ' , $ container );
13+ assertType ('array{} ' , $ container ->items );
1014$ func = function () use ($ container ): int {
11- foreach ($ container ->items as $ item ) {}
15+ assertType ('stdClass ' , $ container );
16+ assertType ('mixed ' , $ container ->items );
17+ foreach ($ container ->items as $ item ) {
18+ }
1219 return 1 ;
1320};
1421
@@ -24,7 +31,11 @@ class Foo {
2431$ container2 = new Foo ();
2532$ container2 ->items = [];
2633
34+ assertType ('Bug10345\Foo ' , $ container2 );
35+ assertType ('array{} ' , $ container2 ->items );
2736$ func2 = function () use ($ container2 ): int {
37+ assertType ('Bug10345\Foo ' , $ container2 );
38+ assertType ('list<string> ' , $ container2 ->items );
2839 foreach ($ container2 ->items as $ item ) {}
2940 return 1 ;
3041};
@@ -52,7 +63,11 @@ public function setItems(array $items): void
5263
5364$ container3 = new Bar ();
5465if ($ container3 ->getItems () === []) {
66+ assertType ('Bug10345\Bar ' , $ container3 );
67+ assertType ('array{} ' , $ container3 ->getItems ());
5568 $ func3 = function () use ($ container3 ): int {
69+ assertType ('Bug10345\Bar ' , $ container3 );
70+ assertType ('list<string> ' , $ container3 ->getItems ());
5671 foreach ($ container3 ->getItems () as $ item ) {}
5772 return 1 ;
5873 };
@@ -66,7 +81,11 @@ public function setItems(array $items): void
6681$ container4 = new Foo ();
6782$ container4 ->items = [];
6883
84+ assertType ('Bug10345\Foo ' , $ container4 );
85+ assertType ('array{} ' , $ container4 ->items );
6986$ func4 = function () use ($ container4 ): int {
87+ assertType ('Bug10345\Foo ' , $ container4 );
88+ assertType ('list<string> ' , $ container4 ->items );
7089 foreach ($ container4 ?->items as $ item ) {}
7190 return 1 ;
7291};
@@ -95,7 +114,9 @@ public static function setItems(array $items): void
95114
96115Baz::$ items = [];
97116
117+ assertType ('array{} ' , Baz::$ items );
98118$ func5 = function (): int {
119+ assertType ('list<string> ' , Baz::$ items );
99120 foreach (Baz::$ items as $ item ) {}
100121 return 1 ;
101122};
@@ -107,7 +128,9 @@ public static function setItems(array $items): void
107128// Static method call
108129Baz::setItems ([]);
109130if (Baz::getItems () === []) {
131+ assertType ('array{} ' , Baz::getItems ());
110132 $ func6 = function (): int {
133+ assertType ('list<string> ' , Baz::getItems ());
111134 foreach (Baz::getItems () as $ item ) {}
112135 return 1 ;
113136 };
0 commit comments