Open renovate[bot] opened 1 year ago
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠️ Warning: custom changes will be lost.
If existing subclasses extend the ctor, won't they also need to make this change?
__construct
is special: it's not considered by LSP rules :)
<?php
interface A {}
interface B {}
class NeedsA {
function __construct(A $a) {}
}
class NeedsB extends NeedsA {
function __construct(B $b) {}
}
var_dump(new NeedsB(new class implements B {}));
__construct is special: it's not considered by LSP rules :)
🤯
PHP 8.2 failing puzzles me :thinking:
Seems like PHP 8.2 considers a chmod($dir, 0)
to still be an is_readable($dir)
and is_writable($dir)
:thinking:
Thought some more about this: needs to revert the Traversable
support removal.
That's because ArrayObject
is in use most of the time, so the use-case is probably array|(Traversable&Countable)
, which I hadn't thought about before.
Don't have the energy for it though :D
How about skipping that Countable
part completely and simply using [...$path]
to cast whatever iterable
is inside into an array so we can count it? Anyway we are going to exhaust the iterator at some point:
public function __construct(string|iterable $path)
{
$this->path = is_string($path) ? [$path] : [...$path];
}
If [...$path]
is considered too heavy to be in constructor, you can do that in check()
instead.
I don't think it's a heavy cast: we expect this to be configuration, not large data.
If that works for iterable types, I'll just have to add tests for it.
This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.
Is anybody still working on this?
This PR contains the following updates:
^4.29.0
->^5.0.0
Release Notes
vimeo/psalm
### [`v5.2.0`](https://togithub.com/vimeo/psalm/releases/tag/5.2.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.1.0...5.2.0) #### What's Changed ##### Features - Add missing ZipArchive methods to CallMap (PHP 8.2) by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/8869](https://togithub.com/vimeo/psalm/pull/8869) - Add libxml_get_external_entity_loader to CallMap (PHP 8.2) by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/8871](https://togithub.com/vimeo/psalm/pull/8871) - Allow `true` in native types by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8875](https://togithub.com/vimeo/psalm/pull/8875) - Add some missing sodium functions to CallMap by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/8870](https://togithub.com/vimeo/psalm/pull/8870) - Forbid most magic methods on enums by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8890](https://togithub.com/vimeo/psalm/pull/8890) ##### Fixes - Fix crash when using phantom methods as first-class callable by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8814](https://togithub.com/vimeo/psalm/pull/8814) - Don't crash when accessing immutable static property by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8816](https://togithub.com/vimeo/psalm/pull/8816) - Prevent crashes on conditional traits by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8817](https://togithub.com/vimeo/psalm/pull/8817) - Update dictionaries: use more specific boolean types by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/8823](https://togithub.com/vimeo/psalm/pull/8823) - Fix return types for date functions in callmap by [@othercorey](https://togithub.com/othercorey) in [https://github.com/vimeo/psalm/pull/8825](https://togithub.com/vimeo/psalm/pull/8825) - Improve source autodiscovery failure message by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8827](https://togithub.com/vimeo/psalm/pull/8827) - fix missing break handling in loop by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/8828](https://togithub.com/vimeo/psalm/pull/8828) - capitalize properties by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/8831](https://togithub.com/vimeo/psalm/pull/8831) - mysqli_execute_query accepts any type of param by [@kamil-tekiela](https://togithub.com/kamil-tekiela) in [https://github.com/vimeo/psalm/pull/8832](https://togithub.com/vimeo/psalm/pull/8832) - Fix parsing of class string of unions by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/8834](https://togithub.com/vimeo/psalm/pull/8834) - Extend impure_functions list by socket functions by [@lptn](https://togithub.com/lptn) in [https://github.com/vimeo/psalm/pull/8835](https://togithub.com/vimeo/psalm/pull/8835) - Allowed taints to pass through urlencode() by [@mmcev106](https://togithub.com/mmcev106) in [https://github.com/vimeo/psalm/pull/8848](https://togithub.com/vimeo/psalm/pull/8848) - Precise count range by [@VincentLanglet](https://togithub.com/VincentLanglet) in [https://github.com/vimeo/psalm/pull/8861](https://togithub.com/vimeo/psalm/pull/8861) - Fixed dynamic property on LanguageServer by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8876](https://togithub.com/vimeo/psalm/pull/8876) - remove file_get_contents that was incorrectly put in v5 by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/8854](https://togithub.com/vimeo/psalm/pull/8854) - Prevent duplicate (Possibly)UnusedMethod/(Possibly)UnusedProperty by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8883](https://togithub.com/vimeo/psalm/pull/8883) ##### Internal changes - Bump fkirc/skip-duplicate-actions from 4.0.0 to 5.3.0 by [@dependabot](https://togithub.com/dependabot) in [https://github.com/vimeo/psalm/pull/8837](https://togithub.com/vimeo/psalm/pull/8837) - Integrate FidryCpuCoreCounter by [@theofidry](https://togithub.com/theofidry) in [https://github.com/vimeo/psalm/pull/8833](https://togithub.com/vimeo/psalm/pull/8833) - Upgrade CpuCoreCounter by [@theofidry](https://togithub.com/theofidry) in [https://github.com/vimeo/psalm/pull/8882](https://togithub.com/vimeo/psalm/pull/8882) ##### Typos - Fixed typo by [@jrcii](https://togithub.com/jrcii) in [https://github.com/vimeo/psalm/pull/8864](https://togithub.com/vimeo/psalm/pull/8864) #### New Contributors - [@jrcii](https://togithub.com/jrcii) made their first contribution in [https://github.com/vimeo/psalm/pull/8864](https://togithub.com/vimeo/psalm/pull/8864) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.1.0...5.2.0 ### [`v5.1.0`](https://togithub.com/vimeo/psalm/releases/tag/5.1.0) [Compare Source](https://togithub.com/vimeo/psalm/compare/5.0.0...5.1.0) #### What's Changed ##### Deprecations - Defer cache directory creation until it's needed by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/8789](https://togithub.com/vimeo/psalm/pull/8789) ##### Features - check "never" return type more strictly by [@kkmuffme](https://togithub.com/kkmuffme) in [https://github.com/vimeo/psalm/pull/8624](https://togithub.com/vimeo/psalm/pull/8624) - Report by issues grouped by level and type by [@bdsl](https://togithub.com/bdsl) in [https://github.com/vimeo/psalm/pull/8774](https://togithub.com/vimeo/psalm/pull/8774) ##### Fixes - Ignore non-existing classes during initial scan of intersection types by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/8794](https://togithub.com/vimeo/psalm/pull/8794) - handle true/false reconciliation consistently, fix [#8795](https://togithub.com/vimeo/psalm/issues/8795) by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/8796](https://togithub.com/vimeo/psalm/pull/8796) - fix sealed combination by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/8798](https://togithub.com/vimeo/psalm/pull/8798) - Fix [#8806](https://togithub.com/vimeo/psalm/issues/8806) by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/8809](https://togithub.com/vimeo/psalm/pull/8809) ##### Docs - Update installation.md - `5` requires PHP >= 7.4 by [@sasezaki](https://togithub.com/sasezaki) in [https://github.com/vimeo/psalm/pull/8805](https://togithub.com/vimeo/psalm/pull/8805) - Adds documentation for the `forbiddenFunctions` config option by [@p810](https://togithub.com/p810) in [https://github.com/vimeo/psalm/pull/8808](https://togithub.com/vimeo/psalm/pull/8808) #### New Contributors - [@p810](https://togithub.com/p810) made their first contribution in [https://github.com/vimeo/psalm/pull/8808](https://togithub.com/vimeo/psalm/pull/8808) **Full Changelog**: https://github.com/vimeo/psalm/compare/5.0.0...5.1.0 ### [`v5.0.0`](https://togithub.com/vimeo/psalm/releases/tag/5.0.0): Psalm 5 [Compare Source](https://togithub.com/vimeo/psalm/compare/4.30.0...5.0.0) Welcome to Psalm 5! There's an accompanying post on psalm.dev, written by [@muglug](https://togithub.com/muglug) & the current maintainers of Psalm. - [read in English](https://psalm.dev/articles/psalm-5) - [read in Ukrainian](https://psalm.dev/articles/psalm-5-uk) (translated by [@weirdan](https://togithub.com/weirdan)) - [read in French](https://psalm.dev/articles/psalm-5-fr) (translated by [@orklah](https://togithub.com/orklah)) - [read in Italian](https://psalm.dev/articles/psalm-5-it) (translated by [@danog](https://togithub.com/danog)) #### What's Changed ##### Removed - Php version consistency by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/6898](https://togithub.com/vimeo/psalm/pull/6898) - Removed TEmpty by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/6662](https://togithub.com/vimeo/psalm/pull/6662) - remove support for allowPhpstormGenerics by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/6705](https://togithub.com/vimeo/psalm/pull/6705) - remove exitFunctions for Psalm5 by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/6808](https://togithub.com/vimeo/psalm/pull/6808) - Drop legacy procedural files by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7270](https://togithub.com/vimeo/psalm/pull/7270) - Dropped removed config entries by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7272](https://togithub.com/vimeo/psalm/pull/7272) - Dropped legacy plugin API by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7275](https://togithub.com/vimeo/psalm/pull/7275) - Dropped deprecated `CodeIssue` methods by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7276](https://togithub.com/vimeo/psalm/pull/7276) - Dropped deprecated `DocComment` methods by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7278](https://togithub.com/vimeo/psalm/pull/7278) - Dropped `THtmlEscapedString` by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7285](https://togithub.com/vimeo/psalm/pull/7285) - Drop orphaned token by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7290](https://togithub.com/vimeo/psalm/pull/7290) - Bump PHP version to 7.4 by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7291](https://togithub.com/vimeo/psalm/pull/7291) - Remove forbidEcho by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/7420](https://togithub.com/vimeo/psalm/pull/7420) - remove TPositiveInt by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/7473](https://togithub.com/vimeo/psalm/pull/7473) - Lock event classes by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7491](https://togithub.com/vimeo/psalm/pull/7491) - \[TASK] Add AfterFunctionLikeAnalysisEvent::getFunctionlikeStorage by [@ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/7526](https://togithub.com/vimeo/psalm/pull/7526) - Finalize (and internalize) more classes by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7578](https://togithub.com/vimeo/psalm/pull/7578) - Finalize issues by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7595](https://togithub.com/vimeo/psalm/pull/7595) - Finalize storages by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7597](https://togithub.com/vimeo/psalm/pull/7597) - Finalize virtual nodes by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7598](https://togithub.com/vimeo/psalm/pull/7598) - Finalize types nodes by [@weirdan](https://togithub.com/weirdan) in [https://github.com/vimeo/psalm/pull/7623](https://togithub.com/vimeo/psalm/pull/7623) - remove totallyTyped by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/7651](https://togithub.com/vimeo/psalm/pull/7651) ##### Features - Support PHPStan notation for empty-arrays by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/7312](https://togithub.com/vimeo/psalm/pull/7312) - Try to provide literal int types when possible (fixes [#6966](https://togithub.com/vimeo/psalm/issues/6966)) by [@ricardoboss](https://togithub.com/ricardoboss) in [https://github.com/vimeo/psalm/pull/7071](https://togithub.com/vimeo/psalm/pull/7071) - Allow config to define thread count by [@M1ke](https://togithub.com/M1ke) in [https://github.com/vimeo/psalm/pull/7442](https://togithub.com/vimeo/psalm/pull/7442) - Contextual type inference for high order function arg by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/7417](https://togithub.com/vimeo/psalm/pull/7417) - feat: Handle native intersection types by [@petewalker](https://togithub.com/petewalker) in [https://github.com/vimeo/psalm/pull/7454](https://togithub.com/vimeo/psalm/pull/7454) - improve support for enum_exists by [@orklah](https://togithub.com/orklah) in [https://github.com/vimeo/psalm/pull/7404](https://togithub.com/vimeo/psalm/pull/7404) - Support type annotations for class consts (fixes [#942](https://togithub.com/vimeo/psalm/issues/942)). by [@AndrolGenhald](https://togithub.com/AndrolGenhald) in [https://github.com/vimeo/psalm/pull/7123](https://togithub.com/vimeo/psalm/pull/7123) - Improve class constant static analysis by [@AndrolGenhald](https://togithub.com/AndrolGenhald) in [https://github.com/vimeo/psalm/pull/7154](https://togithub.com/vimeo/psalm/pull/7154) - Add support for references and improve UnusedVariable checks (fixes [#7254](https://togithub.com/vimeo/psalm/issues/7254)). by [@AndrolGenhald](https://togithub.com/AndrolGenhald) in [https://github.com/vimeo/psalm/pull/7339](https://togithub.com/vimeo/psalm/pull/7339) - InternalTaintSinkMap: Add `getimagesize` as SSRF sink by [@mal-tee](https://togithub.com/mal-tee) in [https://github.com/vimeo/psalm/pull/7504](https://togithub.com/vimeo/psalm/pull/7504) - Enable extensions based on composer.json instead of those loaded at runtime (fixes [#5482](https://togithub.com/vimeo/psalm/issues/5482)). by [@AndrolGenhald](https://togithub.com/AndrolGenhald) in [https://github.com/vimeo/psalm/pull/7107](https://togithub.com/vimeo/psalm/pull/7107) - Dynamic function storage provider by [@klimick](https://togithub.com/klimick) in [https://github.com/vimeo/psalm/pull/7471](https://togithub.com/vimeo/psalm/pull/7471) - ❗Allow plugins to modify Config::$fileExtensions early by [@ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/6789](https://togithub.com/vimeo/psalm/pull/6789) - \[FEATURE] Introduce BeforeStatementAnalysisEvent by [@ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/7535](https://togithub.com/vimeo/psalm/pull/7535) - \[FEATURE] Allow to intercept adding issue in IssueBuffer by [@ohader](https://togithub.com/ohader) in [https://github.com/vimeo/psalm/pull/7530](https://togithub.com/vimeo/psalm/pull/7530) - Ensure all template parameters are specified in all extended|used classlikes by [@danog](https://togithub.com/danog) in [https://github.com/vimeo/psalm/pull/7492](https://togithub.com/vimeo/psalm/pull/7492) - feat: make key-of/value-of usable with non-const arrays by [@Patrick-Remy](https://togithub.com/Patrick-Remy) in [https://github.com/vimeo/psalm/pull/7396](https://togithub.com/vimeo/psalm/pull/7396) - More class const improvements. by [@AndrolGenhald](https://togithub.com/AndrolGenhald) in [https://github.com/vimeo/psalm/pull/7666](https://togithub.com/vimeo/psalm/pull/7666) - Add `@psalm-check-type` and `@psalm-check-type-exact`. by [@AndrolGenhald](https://togithub.com/AndrolGenhald) in [https://github.com/vimeo/psalm/pull/7686](https://togithub.com/vimeo/psalm/pull/7686) - feat(types): add properties-ofConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
Read more information about the use of Renovate Bot within Laminas.