Commit 6671089
Do not carry forward any property fetch types into closure scope
Objects are always references in PHP, even when captured by value via
`use`. Properties (both dynamic and declared) can be modified between
closure definition and invocation, so their types should not be frozen
at closure definition time.
Simplify shouldNotCarryForwardPropertyFetchInClosure to skip all
PropertyFetch expressions, not just dynamic properties. Add test case
with declared property class (Foo with list<string> $items). Update
specified-types-closure-use.php expectations accordingly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 25046b7 commit 6671089
3 files changed
Lines changed: 20 additions & 20 deletions
File tree
- src/Analyser
- tests/PHPStan
- Analyser/nsrt
- Rules/Arrays/data
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2224 | 2224 | | |
2225 | 2225 | | |
2226 | 2226 | | |
2227 | | - | |
2228 | | - | |
2229 | | - | |
2230 | | - | |
2231 | | - | |
2232 | | - | |
2233 | | - | |
2234 | | - | |
2235 | | - | |
2236 | | - | |
2237 | | - | |
2238 | | - | |
2239 | | - | |
2240 | | - | |
2241 | | - | |
2242 | | - | |
2243 | | - | |
2244 | | - | |
| 2227 | + | |
2245 | 2228 | | |
2246 | 2229 | | |
2247 | 2230 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
0 commit comments