What's Changed
Features
- ⭐️ Let plugins declare the issues Psalter can fix by @alies-dev in #13515
Fixes
- [7.x] Keep statements of inlined constructor callees: ~15% less wall time and CPU on Laravel (arrayCache=false) by @jarstelfox in #13495
- Fix: crash when a class is named only in a template's bound by @alies-dev in #13503
- ✨ Fix param-conditional return taking both branches for
$this/staticparam types by @alies-dev in #13494 - Fix: crash of multi-threaded runs without posix by @alies-dev in #13517
- Fix: NoInterfaceProperties on a hooked interface property of an intersection type by @alies-dev in #13452
- Fix: whitespace around
|in docblock types drops union members or invalidates@methodby @alies-dev in #13457 - Fix Psalter ignoring the type of static property fetches by @alies-dev in #13529
- Fix: hooked interface properties on intersections with a generic interface or a class by @alies-dev in #13530
- Fix crash when scope summaries contain non-UTF-8 strings by @MohannadElemary in #13518
- Fix: class property checks lost on intersections with a hooked interface by @alies-dev in #13532
- Fix: Psalter rewrites self/static/parent in static property references when renaming a class by @alies-dev in #13533
Internal changes
- Perf: Avoid quadratic copying when closing dependent classlikes in Populator (~2.5% faster on a big app) by @alies-dev in #13508
- chore(baseline): drop the ImplicitToStringCast entry that #11798 made unused by @jirkace in #13507
- Fix PHPUnit plugin diagnostics in self-analysis by @orklah in #13524
- Perf: Skip building code use edges that are not recorded when consolidating analysed data (~2% faster on a big app) by @alies-dev in #13509
Other changes
- Fix method name casing in
MissingOverrideAttributecheck by @maximal in #11798 - Fix CI Windows path by @orklah in #13525
Full Changelog: 7.2.1...7.3.0