Skip to content

Commit 4675b62

Browse files
committed
more tests
1 parent d23a555 commit 4675b62

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

tests/PHPStan/Rules/Variables/UnsetRuleTest.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff 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

tests/PHPStan/Rules/Variables/data/unset-hooked-property.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
68103
class Bug12695
69104
{
70105
/** @var int[] */

0 commit comments

Comments
 (0)