1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-27 12:55:26 +01:00
Commit Graph

328 Commits

Author SHA1 Message Date
Thomas Landauer
fd2683fcc6
Adding common problem cases and possible solutions
See https://github.com/vimeo/psalm/issues/8133#issuecomment-1162010190

Don't know if this is the best way to explain this, but it's a start :-)

Is there a better way to add the link to https://psalm.dev/docs/annotating_code/supported_annotations/#psalm-mutation-free ?

I also removed the `<?php` tag from the code block.
2022-06-21 20:23:23 +02:00
orklah
ec9a9994f5
Merge pull request #8022 from AndrolGenhald/bugfix/8018-improve-failure-case-for-references
Improve handling of unsupported references (fixes #8018).
2022-05-27 19:09:05 +02:00
Rudolph Gottesheim
6f00a72446
Fix a typo in MissingConstructor.md 2022-05-27 11:04:00 +02:00
AndrolGenhald
31b4dceaf4 Improve handling of unsupported references (fixes #8018). 2022-05-26 18:28:23 -05:00
Matt Brown
2ef993928c Document @psalm-ignore-variable-* 2022-04-27 01:46:13 -04:00
Matt Brown
20351c6667 Avoid json_encode when serializing non-UTF8 literals
`\Psalm\Internal\Clause::$hash` basically holds a hash on
arbitrary input literals, used for later comparison. Using
`json_encode` fails when dealing with non-UTF8 literals,
which has been replaced by plain PHP `serialize`.

Resolves: #7771
2022-04-27 01:42:37 -04:00
Mark McEver
6e3c305dc0
Documented the allowMissingFiles attribute for ignoreFiles 2022-04-14 10:03:21 -05:00
Mark McEver
ea424d79a6
Merge branch 'master' into master 2022-04-13 12:30:37 -05:00
Mark McEver
d28ead12e0
Documented the allowMissingFiles attribute for ignoreFiles 2022-04-13 12:29:06 -05:00
Jordi Boggiano
1eb8b5a853
without with 2022-03-23 14:49:51 +01:00
Jordi Boggiano
88a93294b4
Fix int-mask-of doc example 2022-03-23 12:19:07 +01:00
Patrick Remy
51f3b9869b
docs: add properties-of type to plugins type system 2022-02-24 18:50:35 +01:00
Bruce Weirdan
d7d846edc8
Merge branch '4.x' into upstream-master 2022-02-20 02:31:15 +02:00
AndrolGenhald
c1077f32d3 Improve documentation for InvalidGlobal to explain that it's sometimes valid. 2022-02-18 11:36:25 -06:00
AndrolGenhald
bd963e4baa Fix issue documentation links. 2022-02-17 13:04:25 -06:00
AndrolGenhald
d09e420939 Add @psalm-check-type and @psalm-check-type-exact.
I initially added these as part of my TryAnalyzer rewrite to allow testing complicated `finally` types like this:
```
$foo = 1;
try {
        $foo = 2;
} catch (Exception $_) {
        $foo = 3;
} finally {
        $bar = $foo;
        /** @psalm-check-type-exact $bar = 1|2|3 */;
}
/** @psalm-check-type-exact $bar = 2|3 */;
```
Using the `'assertions'` in tests doesn't work since the type is different inside the `finally`.

I decided to extract the new annotation from the rest of my changes and do a separate pull request since I think others may find it useful, and it should be much easier to review than the entire TryAnalyzer rewrite.
2022-02-17 10:37:13 -06:00
eb3df40fbb
Add option to disable @var parsing everywhere except for properties. 2022-02-15 10:04:56 +01:00
AndrolGenhald
cc2334f40d More class const improvements.
Add InvalidClassConstType issue as alternative to LessSpecificClassConstType when type isn't contravariant.
Handle final class consts (#6395).
Use double quotes for types in class const issues.
2022-02-13 17:19:25 -06:00
orklah
85fca56850 remove totallyTyped 2022-02-12 10:19:14 +01:00
m1ke
810880c71b Alter order of precedence and upated docs to match 2022-02-11 11:12:36 +00:00
Bruce Weirdan
11e60fa261
Merge branch '4.x' into upstream-master 2022-02-11 03:51:48 +02:00
Bruce Weirdan
8a41d61925
Apply suggestions from code review
Co-authored-by: AndrolGenhald <AndrolGenhald@users.noreply.github.com>
2022-02-06 00:49:27 +02:00
orklah
e40bcc2d29 doc about property initialization 2022-02-05 12:27:53 +01:00
AndrolGenhald
94eda1a9f9 Fix bullet indentation in documentation. 2022-02-02 14:48:24 -06:00
AndrolGenhald
9429010fda Fix documentation for <globals> config. 2022-02-02 14:38:01 -06:00
Bruce Weirdan
f61193b798
Reinstate MethodSignatureMustProvideReturnType
It's never emitted, but is there for BC.
2022-01-31 23:38:15 +02:00
orklah
2e01e9b7cd
Merge pull request #7396 from Patrick-Remy/feat/key-of-value-of-improvements
feat: make key-of/value-of usable with non-const arrays
2022-01-31 21:39:01 +01:00
Bruce Weirdan
603714518b
Revert "PHP 8.1: Report missing typehints in overridden native methods" 2022-01-31 14:37:42 +02:00
8d0c1c62e8
Ensure all template parameters are specified in classes, interfaces, traits 2022-01-31 10:06:31 +01:00
Bruce Weirdan
997592de64
Merge pull request #7530 from ohader/issue-7528 2022-01-31 10:36:47 +02:00
Oliver Hader
f5986950a2
[FEATURE] Introduce BeforeStatementAnalysisEvent
As counterpart to existing `AfterStatementAnalysisEvent` - invoked in
`\Psalm\Internal\Analyzer\StatementsAnalyzer` - this changed introcued
a corresponding `BeforeStatementAnalysisEvent`.

Resolves: #7534
2022-01-30 19:27:19 +01:00
Oliver Hader
e3602bbfe1
[FEATURE] Allow to intercept adding issue in IssueBuffer
This change introduces new `BeforeAddIssueEvent` which is invoked
from `IssueBuffer::add`, which allows to collect and intercept code
issue in a generic way.

Resolves: #7528
2022-01-30 17:46:08 +01:00
Oliver Hader
62a0ece035
!!! Allow plugins to modify Config::$fileExtensions early
ProjectAnalyzer consumed Config::$fileExtensions early in its
constructor - without having processed plugins' modifications,
registering their custom scanners or analyzer implementations.

This change
* adds new specific interface \Psalm\Plugin\FileExtensionsInterface
  to be used by plugin implementations
* extracts file extension handling from \Psalm\PluginRegistrationSocket
  and interface \Psalm\Plugin\RegistrationInterface to a new dedicated
  \Psalm\PluginFileExtensionsSocket and new interface
  \Psalm\Plugin\FileExtensionsInterface
  !!! this is a breaking change in PluginRegistrationSocket !!!
* adds runtime in-memory cache for Config::$plugins
* calls new method Config::processPluginFileExtensions(), providing
  modifications to file extension only early in ProjectAnalyzer
* adjusts documentation
2022-01-30 13:06:00 +01:00
orklah
4609bc4e25
Merge pull request #7471 from klimick/function-dynamic-storage-provider
Function dynamic storage provider
2022-01-28 18:46:26 +01:00
adrew
5b78125d11 Add doc for DynamicFunctionStorageProviderInterface 2022-01-28 15:18:30 +03:00
AndrolGenhald
5c01913456 Remove deprecated loadXdebugStub attribute. 2022-01-27 16:55:20 -06:00
AndrolGenhald
5cd3b68ab3 Add documentation for enableExtensions and disableExtensions. 2022-01-27 16:31:09 -06:00
Patrick Remy
8cd5ccd076
feat: make value-of<T> capable for template types 2022-01-27 22:28:40 +01:00
Patrick Remy
2880d046ce
feat: make key-of/value-of usable with non-const arrays 2022-01-27 22:22:14 +01:00
orklah
9168cef2d4 Merge remote-tracking branch 'upstream/4.x' into upstream-master6 2022-01-26 21:06:25 +01:00
AndrolGenhald
e268a05307 Minor fixes after rebasing. 2022-01-26 12:57:19 -06:00
AndrolGenhald
f9450656e1 Add support for references and improve UnusedVariable checks (fixes #7254). 2022-01-26 12:55:47 -06:00
AndrolGenhald
b68c6116d8 Use PHP 8.1 when testing AmbiguousConstantInheritance. 2022-01-25 15:49:09 -06:00
AndrolGenhald
0b81f46bb1 Fixes after rebasing. 2022-01-25 15:31:09 -06:00
AndrolGenhald
0edf260d8b Improve class constant static analysis.
Add class const covariance support (fixes #5589).
Add check for overriding const from interface in PHP < 8.1 (fixes #7108).
Add check for ambiguous const inheritance.
2022-01-25 15:20:17 -06:00
orklah
7c8441baec
Merge pull request #7123 from AndrolGenhald/feature/942-type-annotate-class-constants
Support type annotations for class consts (fixes #942).
2022-01-25 20:54:40 +01:00
Bruce Weirdan
3a6dc9b458
Merge pull request #7431 from zoonru/disable_suppress_all 2022-01-24 11:25:32 +02:00
orklah
63b802bff4 remove TPositiveInt 2022-01-23 23:49:23 +01:00
AndrolGenhald
7d256975e4 Fix cs/psalm errors after rebase. 2022-01-22 17:06:54 -06:00
AndrolGenhald
558208e44e Add type checking for class const assignments, fix several other const issues. 2022-01-22 17:06:54 -06:00