Commit 6d73f01
Extend trait context detection to cover self-typed variables and fix multiple method names
- Add isExpressionDependentOnTraitContext() that checks both AST-level
($this, self::, static::) and type-level (object type matches using class)
dependency on trait context
- Fix method_exists handling to support multiple constant method names
(e.g. 'foo'|'bar') instead of requiring exactly one
- Add null check for getTraitReflection()
- Update ConstantConditionRuleHelper with same type-level check
- Fix testBug7599: method_exists($enum, 'barMethod') where $enum is
typed as self in a trait should not report errors
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 4f8d0b3 commit 6d73f01
3 files changed
Lines changed: 48 additions & 17 deletions
File tree
- src/Rules/Comparison
- tests/PHPStan/Rules/Comparison
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
70 | 80 | | |
71 | 81 | | |
72 | 82 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
199 | 199 | | |
200 | 200 | | |
201 | 201 | | |
202 | | - | |
| 202 | + | |
203 | 203 | | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
204 | 207 | | |
205 | 208 | | |
206 | 209 | | |
207 | | - | |
208 | | - | |
209 | | - | |
210 | | - | |
| 210 | + | |
211 | 211 | | |
212 | 212 | | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
213 | 218 | | |
214 | 219 | | |
215 | 220 | | |
| |||
323 | 328 | | |
324 | 329 | | |
325 | 330 | | |
326 | | - | |
| 331 | + | |
327 | 332 | | |
328 | 333 | | |
329 | 334 | | |
| |||
354 | 359 | | |
355 | 360 | | |
356 | 361 | | |
357 | | - | |
| 362 | + | |
358 | 363 | | |
359 | 364 | | |
360 | 365 | | |
| |||
379 | 384 | | |
380 | 385 | | |
381 | 386 | | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
382 | 412 | | |
383 | 413 | | |
384 | 414 | | |
| |||
Lines changed: 1 addition & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1208 | 1208 | | |
1209 | 1209 | | |
1210 | 1210 | | |
1211 | | - | |
1212 | | - | |
1213 | | - | |
1214 | | - | |
1215 | | - | |
1216 | | - | |
1217 | | - | |
1218 | | - | |
1219 | | - | |
1220 | | - | |
| 1211 | + | |
1221 | 1212 | | |
1222 | 1213 | | |
1223 | 1214 | | |
| |||
0 commit comments