What's Changed
Fixes
- fix(baseline): merge duplicated files and issue types when reading a baseline by @jirkace in #13098
- fix(visibility): drop the empty context from the inaccessible method message by @jirkace in #13094
- fix(psalter): replace the whole union return type by @jirkace in #13116
- fix(arithmetic): don't fold a shift by a negative number or zero to a negative power by @jirkace in #13103
- fix(int-range): an int range without bounds is int by @jirkace in #13091
- fix(types): a negated instanceof narrows the bound of a template param by @jirkace in #12906
- fix(types): keep named objects and other shapes next to an object with properties by @jirkace in #13101
- Perf: skip recording code use edges that nothing reads (2–32% less memory when unused code detection is off) by @alies-dev in #13250
- Evaluate the keys of array items passed by reference once by @alies-dev in #13297
- Fix: constants defined in Psalm's process turn into mixed on warm runs by @alies-dev in #13302
- fix(int-range): a negative int to the power of 0 is 1 by @jirkace in #13186
- fix(stubs): SplDoublyLinkedList::offsetSet accepts null to append by @jirkace in #13207
- fix(parser): as, of and is are keys of a shape where a colon follows by @jirkace in #13075
- fix(types): $_COOKIE can have int keys by @jirkace in #12868
- fix(config): count referencedFunction issue handler suppressions by @jirkace in #12854
- fix(scanner): an and/or condition of unknown parts defines both branches by @jirkace in #12814
- Keep the type of the elements array_splice() returns by @jirkace in #12615
- fix(param-out): do not check the @param-out of a method without a body by @jirkace in #12681
- Ask whether the package of an unknown plugin class is installed by @danog in #13326
Internal changes
- Perf: speed up warm runs and the consolidated cache with one file per cache entry by @alies-dev in #13249
Full Changelog: 7.0.3...7.0.4