File tree Expand file tree Collapse file tree 2 files changed +83
-0
lines changed
tests/PHPStan/Rules/Variables Expand file tree Collapse file tree 2 files changed +83
-0
lines changed Original file line number Diff line number Diff line change @@ -169,6 +169,54 @@ public function testUnsetHookedProperty(): void
169169 'Cannot unset property UnsetHookedProperty\NonFinalClass::$publicProperty because it might have hooks in a subclass. ' ,
170170 13 ,
171171 ],
172+ [
173+ 'Cannot unset property UnsetHookedProperty\ContainerClass::$finalClass because it might have hooks in a subclass. ' ,
174+ 83 ,
175+ ],
176+ [
177+ 'Cannot unset property UnsetHookedProperty\ContainerClass::$nonFinalClass because it might have hooks in a subclass. ' ,
178+ 87 ,
179+ ],
180+ [
181+ 'Cannot unset hooked UnsetHookedProperty\Foo::$iii property. ' ,
182+ 89 ,
183+ ],
184+ [
185+ 'Cannot unset property UnsetHookedProperty\ContainerClass::$foo because it might have hooks in a subclass. ' ,
186+ 90 ,
187+ ],
188+ [
189+ 'Cannot unset hooked UnsetHookedProperty\User::$name property. ' ,
190+ 92 ,
191+ ],
192+ [
193+ 'Cannot unset hooked UnsetHookedProperty\User::$fullName property. ' ,
194+ 93 ,
195+ ],
196+ [
197+ 'Cannot unset property UnsetHookedProperty\ContainerClass::$user because it might have hooks in a subclass. ' ,
198+ 94 ,
199+ ],
200+ [
201+ 'Cannot unset hooked UnsetHookedProperty\User::$name property. ' ,
202+ 96 ,
203+ ],
204+ [
205+ 'Cannot unset hooked UnsetHookedProperty\User::$name property. ' ,
206+ 97 ,
207+ ],
208+ [
209+ 'Cannot unset hooked UnsetHookedProperty\User::$fullName property. ' ,
210+ 98 ,
211+ ],
212+ [
213+ 'Cannot unset hooked UnsetHookedProperty\User::$fullName property. ' ,
214+ 99 ,
215+ ],
216+ [
217+ 'Cannot unset property UnsetHookedProperty\ContainerClass::$arrayOfUsers because it might have hooks in a subclass. ' ,
218+ 100 ,
219+ ],
172220 ]);
173221 }
174222
Original file line number Diff line number Diff line change @@ -65,6 +65,41 @@ function doFoo() {
6565 }
6666}
6767
68+ class ContainerClass {
69+ public FinalClass $ finalClass ;
70+ public FinalClass $ nonFinalClass ;
71+
72+ public Foo $ foo ;
73+
74+ public User $ user ;
75+
76+ /** @var array<User> */
77+ public array $ arrayOfUsers ;
78+ }
79+
80+ function dooNestedUnset (ContainerClass $ containerClass ) {
81+ unset($ containerClass ->finalClass ->publicFinalProperty );
82+ unset($ containerClass ->finalClass ->publicProperty );
83+ unset($ containerClass ->finalClass );
84+
85+ unset($ containerClass ->nonFinalClass ->publicFinalProperty );
86+ unset($ containerClass ->nonFinalClass ->publicProperty );
87+ unset($ containerClass ->nonFinalClass );
88+
89+ unset($ containerClass ->foo ->iii );
90+ unset($ containerClass ->foo );
91+
92+ unset($ containerClass ->user ->name );
93+ unset($ containerClass ->user ->fullName );
94+ unset($ containerClass ->user );
95+
96+ unset($ containerClass ->arrayOfUsers [0 ]->name );
97+ unset($ containerClass ->arrayOfUsers [0 ]->name );
98+ unset($ containerClass ->arrayOfUsers ['hans ' ]->fullName );
99+ unset($ containerClass ->arrayOfUsers ['hans ' ]->fullName );
100+ unset($ containerClass ->arrayOfUsers );
101+ }
102+
68103class Bug12695
69104{
70105 /** @var int[] */
You can’t perform that action at this time.
0 commit comments