Skip to content

Latest commit

 

History

History
30 lines (20 loc) · 1.2 KB

README.md

File metadata and controls

30 lines (20 loc) · 1.2 KB

psalm-type-setters-param

A Psalm plugin that use property type to fix param in the setter

Installation:

$ composer require --dev orklah/psalm-type-setters-param
$ vendor/bin/psalm-plugin enable orklah/psalm-type-setters-param

Usage:

To automatically fix code, run:

$ vendor/bin/psalm --alter --plugin=vendor\orklah\psalm-type-setters-param\src\Plugin.php

Explanation:

When a property has a type, we can deduce that any setter should not take a type that is wider than the property. When this plugin detect such a case, it adds the type to the param.

Warning: if the class of the setter does not have a strict_type declaration and the file that call the setter does, this plugin may create a TypeError if there was an implicit cast. Please use orklah\psalm-strict-types to avoid such cases. (If someone is interested, it may be possible to check that specific case and prevent the replacement, please create an issue)

This idea was first implemented by Rector for PHPStan: https://github.com/rectorphp/rector Please read their article and the rest of rectors in the set: https://getrector.org/blog/2021/02/15/how-much-does-single-type-declaration-know