1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-11 16:59:45 +01:00
Commit Graph

837 Commits

Author SHA1 Message Date
Bruce Weirdan
19a1005bc3
Forbid most magic methods on enums
Fixes vimeo/psalm#8889

Additionally this fixes case-sensitivity of
MethodSignatureMustOmitReturnType issue

Fixes vimeo/psalm#8888
2022-12-12 03:03:20 -04:00
John Cornell
153f8224d1
Fixed typo 2022-12-08 14:42:56 -05:00
Barney Laurance
d6c7c86362 Remove unecassary subheadings in error levels documentation 2022-12-02 00:07:37 +00:00
Barney Laurance
cd18cdc554 Re-order list of errors in docs
I think it makes more sense to have the errors that almost always appear
(level 7 errors) next to the errors that always appear, instead of
the level 1, least likely to appear errors being next to the ones that
always appear.

This also makes the order more similar to that output by the new
--by-issue-level format report.

Some time it might be nice to see if there's a way to auto generate most
of this docs page from the actual issue class definitions, or have
a test that checks the list of issues for each level is accurate and
complete.
2022-12-02 00:04:43 +00:00
Payton Bice
02329227d8 Adds documentation for the forbiddenFunctions config option 2022-12-01 13:42:02 -05:00
sasezaki
de33d94802
Update installation.md - 5 requires PHP >= 7.4 2022-12-02 00:35:56 +09:00
Maciej Malarz
28188d113a
Remove unfinished sentence 2022-11-29 23:52:27 +01:00
orklah
763556745b improve docs and phrasing about NoValue 2022-11-24 20:56:49 +01:00
orklah
b3fadbc5c1 improve docs and phrasing about NoValue 2022-11-24 20:52:49 +01:00
orklah
4d358c4be9 improve docs and phrasing about NoValue 2022-11-24 20:49:34 +01:00
Matthew Brown
56bc854d8e
Remove value types navigation 2022-11-12 14:58:36 -05:00
Matthew Brown
86c0ec0d01
Remove utility types navigation 2022-11-12 14:58:13 -05:00
Matthew Brown
543d8ab83b
Remove unnecessary navigation 2022-11-12 14:57:28 -05:00
Matthew Brown
1af691c83f
Remove more unnecessary navigation section 2022-11-12 14:53:48 -05:00
Matthew Brown
2771864d27
Remove unnecessary » 2022-11-12 14:52:47 -05:00
98a5dc313d
Cleanup documentation (#8702)
* Cleanup documentation

* Cleanup

* Cleanup
2022-11-12 14:50:46 -05:00
Matthew Brown
a79255cc99
Remove strict- 2022-11-11 20:43:19 -05:00
Matthew Brown
256d9ac1a5
Remove strict-array from docs 2022-11-11 20:42:06 -05:00
Matthew Brown
8d36bdc3ed
Make array shapes strict by default (#8701)
* Make array shapes strict by default

* Fix PSL tests
2022-11-11 20:14:21 -05:00
Bruce Weirdan
0f528d05f7
Update docs/running_psalm/issues/InvalidEnumCaseValue.md 2022-11-10 20:26:37 -04:00
Bruce Weirdan
6effd1bd2d Flag invalid enum case value types
Fixes vimeo/psalm#8267
2022-11-10 19:55:18 -04:00
Thomas Landauer
c51d3665eb
Removing list
see https://github.com/vimeo/psalm/pull/8696#issuecomment-1310677110
2022-11-10 20:19:02 +01:00
Bruce Weirdan
4d53d26f00
Merge pull request #8689 from Nicelocal/fix_formatting 2022-11-10 13:21:37 -04:00
Thomas Landauer
0c102a244e
Fixing code formatting 2022-11-10 16:59:04 +01:00
f8b9e97592 Fix heading indentation 2022-11-09 12:28:57 +01:00
9c23824b08 Try fix formatting 2022-11-09 10:17:38 +01:00
2e04aff60f Fix docs 2022-11-08 20:34:26 +01:00
0d0e965042 Fix typo 2022-11-08 17:54:43 +01:00
a341863db2 Fix typo 2022-11-08 17:54:03 +01:00
c720e41469 Better docs 2022-11-08 16:00:00 +01:00
383cec6863 Add missing docs 2022-11-08 10:29:04 +01:00
1986c8b4a8
Add support for strict arrays, fix type alias intersection, fix array_is_list assertion on non-lists (#8395)
* Immutable CodeLocation

* Remove excess clones

* Remove external clones

* Remove leftover clones

* Fix final clone issue

* Immutable storages

* Refactoring

* Fixes

* Fixes

* Fix

* Fix

* Fixes

* Simplify

* Fixes

* Fix

* Fixes

* Update

* Fix

* Cache global types

* Fix

* Update

* Update

* Fixes

* Fixes

* Refactor

* Fixes

* Fix

* Fix

* More caching

* Fix

* Fix

* Update

* Update

* Fix

* Fixes

* Update

* Refactor

* Update

* Fixes

* Break one more test

* Fix

* FIx

* Fix

* Fix

* Fix

* Fix

* Improve performance and readability

* Equivalent logic

* Fixes

* Revert

* Revert "Revert"

This reverts commit f9175100c8452c80559234200663fd4c4f4dd889.

* Fix

* Fix reference bug

* Make default TypeVisitor immutable

* Bugfix

* Remove clones

* Partial refactoring

* Refactoring

* Fixes

* Fix

* Fixes

* Fixes

* cs-fix

* Fix final bugs

* Add test

* Misc fixes

* Update

* Fixes

* Experiment with removing different property

* revert "Experiment with removing different property"

This reverts commit ac1156e077fc4ea633530d51096d27b6e88bfdf9.

* Uniform naming

* Uniform naming

* Hack hotfix

* Clean up $_FILES ref #8621

* Undo hack, try fixing properly

* Helper method

* Remove redundant call

* Partially fix bugs

* Cleanup

* Change defaults

* Fix bug

* Fix (?, hope this doesn't break anything else)

* cs-fix

* Review fixes

* Bugfix

* Bugfix

* Improve logic

* Add support for list{} and callable-list{} types, properly implement array_is_list assertions (fixes #8389)

* Default to sealed arrays

* Fix array_merge bug

* Fixes

* Fix

* Sealed type checks

* Properly infer properties-of and get_object_vars on final classes

* Fix array_map zipping

* Fix tests

* Fixes

* Fixes

* Fix more stuff

* Recursively resolve type aliases

* Fix typo

* Fixes

* Fix array_is_list assertion on keyed array

* Add BC docs

* Fixes

* fix

* Update

* Update

* Update

* Update

* Seal arrays with count assertions

* Fix #8528

* Fix

* Update

* Improve sealed array foreach logic

* get_object_vars on template properties

* Fix sealed array assertion reconciler logic

* Improved reconciler

* Add tests

* Single source of truth for test types

* Fix tests

* Fixup tests

* Fixup tests

* Fixup tests

* Update

* Fix tests

* Fix tests

* Final fixes

* Fixes

* Use list syntax only when needed

* Fix tests

* Cs-fix

* Update docs

* Update docs

* Update docs

* Update docs

* Update docs

* Document missing types

* Update docs

* Improve class-string-map docs

* Update

* Update

* I love working on psalm :)

* Keep arrays unsealed by default

* Fixup tests

* Fix syntax mistake

* cs-fix

* Fix typo

* Re-import missing types

* Keep strict types only in return types

* argc/argv fixes

* argc/argv fixes

* Fix test

* Comment-out valinor code, pinging @romm pls merge https://github.com/CuyZ/Valinor/pull/246 so we can add valinor to the psalm docs :)
2022-11-05 22:34:42 +01:00
webmaster777
c6c6d083e1
Update PossiblyFalseReference.md
Typo than -> that
2022-10-26 19:52:31 +02:00
Zena Hirsch
459fdcd588
Fix typo: "unitialized" 2022-10-19 14:36:43 -04:00
Pavel Chaplygin
48da8342ad Docs: Fix minor php syntax issues in code examples 2022-10-18 14:57:50 +03:00
cbd1a27ea7
Merge branch 'master' into merge_4.x 2022-10-16 13:49:21 +02:00
748a74bb2c Merge remote-tracking branch 'origin/4.x' into HEAD 2022-10-16 13:41:27 +02:00
ADmad
9bd4d7a740 Fix template param for SplDoublyLinkedList.
It's key is always an integer.
2022-10-14 11:54:53 +05:30
kkmuffme
b68ac865e1 add docs 2022-09-24 10:44:12 +02:00
kkmuffme
7cdad99645 add RiskyCast 2022-09-19 21:54:16 +02:00
orklah
3b7e508c78
Merge pull request #8473 from kkmuffme/detailed-superglobal-types
make superglobals more specific
2022-09-19 10:48:44 +02:00
orklah
89b034acaf
Merge pull request #8492 from HypeMC/consistent-docs-examples
Make template constraints examples in docs consistent
2022-09-18 11:23:21 +02:00
HypeMC
014cddb9dd Document the object with properties syntax 2022-09-17 23:46:19 +02:00
HypeMC
ee16caf596 Make template constraints examples in docs consistent 2022-09-17 22:20:01 +02:00
kkmuffme
5c39e66b15 fix tests 2022-09-15 19:38:51 +02:00
Daniel Schmelz
9c67b85f39
Fix typos 2022-08-20 23:29:03 +02:00
Thomas Landauer
f87becfb3b
Adding note about referencedMethod
Info is taken from https://github.com/vimeo/psalm/issues/2297#issuecomment-549480186
2022-08-13 16:14:51 +02:00
AndrolGenhald
66ebf4a55c Rename TKeyOfArray to TKeyOf. 2022-07-18 14:44:29 -05:00
AndrolGenhald
b51b5ac903 Allow value-of to work with backed enums (fixes #7874). 2022-07-18 14:10:06 -05:00
AndrolGenhald
285740a753 Merge branch '4.x' 2022-07-07 15:01:38 -05:00
Thomas Landauer
3bca297fba
Bringing back <?php 2022-06-21 22:45:45 +02:00
Thomas Landauer
80bcc8b5e3
Improving second link too :-) 2022-06-21 21:55:32 +02:00
Thomas Landauer
7201f0941b
Improving link syntax 2022-06-21 20:56:20 +02:00
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
Barney Laurance
c064edcbb7
use backticks in docs 2022-06-06 18:26:35 +01:00
Barney Laurance
a7c92661fa
Use int<1,max> to define positivity 2022-06-06 17:05:59 +01:00
Barney Laurance
99372a2286
Clarify in docs that zero is not considered a positive-int
I wasn't sure from reading the docs whether or not Psalm consider zero to be positive.
2022-06-06 16:13:30 +01: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
Mathieu Rochette
9b2cf438a5
fix small error in plugins_type_system.md
int-mask → int-mask-of
2022-05-02 11:08:51 +02: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
Jeremiasz Major
ce25b39b5d
Document @psalm-ignore-variable-* 2022-04-08 00:30:23 +02:00
Jeremiasz Major
23ad8d6684
Fix typos 2022-04-07 21:50:19 +02:00
Jeremiasz Major
f4f1a26cf9
Document @psalm-yield 2022-04-07 21:43:12 +02: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
e7ec124ebb
Add documentation for maxStringLength and maxShapedArraySize configs 2022-03-15 11:05:57 +01:00
d4170feb0f
Add documentation for maxStringLength and maxShapedArraySize configs 2022-03-15 10:14:36 +01:00
Patrick Remy
95de0c8dd6
docs: add key-of and value-of to utility types chapter 2022-02-24 18:50:57 +01:00
Patrick Remy
51f3b9869b
docs: add properties-of type to plugins type system 2022-02-24 18:50:35 +01:00
Patrick Remy
8ebc9b599f
docs: describe template support of properties-of<T> 2022-02-23 21:53:02 +01:00
Patrick Remy
5e74445f70
docs: add utility types chapter 2022-02-22 20:51:17 +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