1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-15 02:47:02 +01:00
Commit Graph

4986 Commits

Author SHA1 Message Date
Brown
f4485cc529 Fix #2847 - use fully-qualified function name 2020-02-21 16:44:31 -05:00
Brown
ae08552f40 Add null check 2020-02-21 16:04:18 -05:00
Brown
443558ca49 Fix #2844 - resolve constant offset references 2020-02-21 15:56:30 -05:00
Brown
292a2359b3 Add slash 2020-02-21 15:44:26 -05:00
Brown
b51863fc9b Fix #2848 - allow casting templated types 2020-02-21 15:17:35 -05:00
Brown
f44a0f9f4c Fix #2849 - allow object-like templated array comparison 2020-02-21 15:13:07 -05:00
Matthew Brown
a2fbfc1c9e Fix a couple of bugs 2020-02-21 01:32:22 -05:00
Matthew Brown
d8b6467b1a Fix #2852 - no duplicatearraykey warning for non string-keyed arrays 2020-02-21 01:27:42 -05:00
Matthew Brown
9bdca3c706 Forbid array<mixed, ...> 2020-02-21 01:26:51 -05:00
Matthew Brown
af2ea1732b Fix #2857 - use correct location for byref vars 2020-02-21 00:42:52 -05:00
Matthew Brown
e5c262d7dc Add docblock_start and docblock_end properties to CodeLocation 2020-02-20 22:56:03 -05:00
Matthew Brown
31399b9fd5 Fix dumb errors 2020-02-20 22:48:29 -05:00
Matthew Brown
3b2c9bbce5 Use simple (array) cast 2020-02-20 22:45:14 -05:00
Jared Broughton
86472de160 Correct return type of array_map closure 2020-02-20 22:45:14 -05:00
Jared Broughton
236e4d5e28 Prevent TypeError when generating XML reports
The XML generator currently in use (LSS\Array2XML) expects a nested array structure. However, due to the recent introduction of the IssueData type to replace what was previously shaped arrays, Array2XML was getting an array of objects instead. It then proceeds to crash from (eventually) passing null to DOMNode->appendChild(). This commit maps the IssueData array back into the array of shaped arrays that Array2XML knew and loved.
2020-02-20 22:45:14 -05:00
Teemu Koskinen
1801420305 Most gd functions that output an image accept either a filename or a stream resource as the optional second parameter
The only exception is imagexbm, which only accepts a filename (and which is optional)
2020-02-20 13:47:47 -05:00
Matthew Brown
2e4154d76e Add better defaults and documentation 2020-02-18 20:30:37 -05:00
Matthew Brown
c9494c43a3 Hide mixed issues if totallyTyped="false" 2020-02-18 20:08:09 -05:00
Matthew Brown
23b9331f6d Hide mixed errors if your error level is >= 3 2020-02-18 19:57:38 -05:00
Matthew Brown
aea33824e6 Fix #1555 - allow phantom class constants 2020-02-18 19:46:05 -05:00
Brown
520b646ef6 Add suppressMixedIssues config flag to hide mixed issues 2020-02-18 17:23:48 -05:00
Matthew Brown
87d8947ff3 Fix phpcs 2020-02-18 15:08:32 -05:00
Tyson Andre
eadf2f8492 Improve the reported error when a worker crashes 2020-02-18 15:08:32 -05:00
Brown
0e23fab5d2 Detect bugs similar to that which caused #2832 2020-02-18 12:53:54 -05:00
Brown
9230b425e7 Ors can still be created directly from conditions 2020-02-18 12:12:34 -05:00
Brown
6e8088776d Use better return type for SimpleXMLElement::offsetGet 2020-02-18 10:58:56 -05:00
Brown
38cccb8aaf Fix #2831 - use correct name for mapping 2020-02-18 10:39:24 -05:00
Matthew Brown
201d54f232
Convert to string before comparison 2020-02-18 09:40:21 -05:00
Matthew Brown
9866b292a4 Suppress issue that appears in Windows 2020-02-17 23:19:47 -05:00
Matthew Brown
320f3ec863 Update level config name 2020-02-17 22:43:13 -05:00
Matthew Brown
a55686b6e4 Move to more appropriate location 2020-02-17 22:21:04 -05:00
Matthew Brown
aab8eed219 Fix Phar-scoped issue checks 2020-02-17 22:07:08 -05:00
Matthew Brown
0c2b10709e If no level or totallyTyped is given, use level 2 2020-02-17 22:06:55 -05:00
Matthew Brown
f49c896f94 Allow totallyTyped to control level 2020-02-17 22:06:46 -05:00
Matthew Brown
e48d2aef9c Improve handling when threads cannot be used 2020-02-17 22:06:36 -05:00
Matthew Brown
a2c2a55ae6 Update documentation 2020-02-17 22:06:28 -05:00
Matthew Brown
ced092874a Make config generation smarter 2020-02-17 22:05:58 -05:00
Matthew Brown
00afcda5e0 Fix #2824 - allow unpacking of non-arrays with template params 2020-02-17 19:54:11 -05:00
Matthew Brown
3561c7d5dc Make sure yield from expressions counted as used
Fixes #2823
2020-02-17 19:21:04 -05:00
Matthew Brown
cf977c3542 Don’t convert constant descriptions to lowercase 2020-02-17 18:19:33 -05:00
Matthew Brown
8dd49b1cbf Fix lowercase-string to constant string coercion 2020-02-17 17:58:36 -05:00
Matthew Brown
99a97f4085 Update issue levels 2020-02-17 16:32:16 -05:00
Matthew Brown
a33eac440b Add stdClass reference to file storage for (object) cast
Fixes #2826
2020-02-17 11:33:09 -05:00
Matthew Brown
01d3d9270f Change constant name and meaning 2020-02-17 00:04:46 -05:00
Matthew Brown
39afe9b4ff Add levels to every issue 2020-02-16 20:55:09 -05:00
Matthew Brown
d281a6796b Fix lagging comma 2020-02-16 18:26:24 -05:00
Matthew Brown
196a0a5c4e Replace issue data array with object 2020-02-16 18:24:40 -05:00
Matthew Brown
d3bfb96431 Fix #2808 - improve yield type discernment 2020-02-15 10:47:07 -05:00
Matthew Brown
bacc7f254c Remove unnecessary extension check 2020-02-15 10:42:29 -05:00
Matthew Brown
d0d0c019cd Fix aliasing 2020-02-14 22:39:07 -05:00
Matthew Brown
3feccc1f98 Fix tests 2020-02-14 22:24:39 -05:00
Matthew Brown
653353709a Use MethodIdentifier object instead of string 2020-02-14 20:54:26 -05:00
Matthew Brown
fb5a0c39cb Fix #2819 - improve negated assertions on templates 2020-02-14 11:18:47 -05:00
Matthew Brown
422bd25f04
Maybe fix indentation 2020-02-13 19:33:47 -05:00
Matthew Brown
3efe271819
Remove blank line 2020-02-13 18:36:37 -05:00
Matthew Brown
95e1bc0c48
Fix line breaks 2020-02-13 18:32:40 -05:00
Matthew Brown
477d38e6eb
Suppress issue 2020-02-13 18:20:24 -05:00
Brown
b87161785d Be even more permissive 2020-02-13 17:58:15 -05:00
Brown
210d65d0d6 Add a few lowercase-string types 2020-02-13 17:52:23 -05:00
Brown
8989737e51 Fix #2775 - use lowercase strings in a couple more places 2020-02-13 17:44:16 -05:00
Brown
bba44e5354 Add interpolation support 2020-02-13 17:37:52 -05:00
Brown
bc0ccbda99 Add better inference for lower-cased methods 2020-02-13 17:30:00 -05:00
Brown
1c42875179 Support lowercase-string and warn about unnecessary calls to strtolower 2020-02-13 16:38:58 -05:00
Brown
e934343d7f Fix #2765 - properly fix namespaced @throws self 2020-02-13 13:01:53 -05:00
Matthew Brown
305372e0e1 Add docblock return type as --diff dependency 2020-02-13 10:39:04 -05:00
Philip Hofstetter
395cf587d3 add plugin hook to be called after every function call
compared to AfterFunctionCallAnalysisInterface which gets only called
after a call to a function declared within the project, a plugin
implementing AfterEveryFunctionCallAnalysisInterface will get called for
every function call, including calls of PHP builtins.

On the other hand, this interface doesn't allow modification of the code
nor tweaking the return type, but it's still useful for accounting
purposes and for depreacting calls to PHP builtins

this fixes #2804
2020-02-13 09:10:24 -05:00
Matthew Brown
7d88100ad3 Docblock-provided type is not inferred 2020-02-12 11:34:54 -05:00
Claas Augner
ba94c8cea8 Fix #2799 - DOMNode::$parentNode is nullable 2020-02-12 09:20:01 -05:00
Matthew Brown
f64cdd2ca2 Fix #2798 - strip out trailing commas in object-like @return types 2020-02-12 09:18:43 -05:00
Matthew Brown
07a53f6b81 Fix #2789 - Numeric should not be a reserved class name 2020-02-11 22:34:34 -05:00
Bruce Weirdan
a23dd9f97d Fixed vimeo/psalm#2792 2020-02-11 22:21:54 -05:00
Brown
f141f7c526 Improve --diff checks by including trait-using classes in dependents 2020-02-11 16:39:33 -05:00
Matthew Brown
7639e179c4 Fix return type for Ds\Vector::map 2020-02-10 21:09:07 -05:00
Brown
2abe76d3c2 Fix assertion generation 2020-02-10 17:27:46 -05:00
Brown
d8f5ad190b Improve invalidation of inherited properties 2020-02-10 17:03:51 -05:00
Brown
41af71556d Fix #2785 - parse wildcards in variables better 2020-02-10 15:30:06 -05:00
Brown
89a0b101e4 Fix #2784 - no crash when get_class arg is mixed 2020-02-10 14:44:33 -05:00
Matthew Brown
074780547d Fix #2780 - filter int on more values 2020-02-09 23:58:37 -05:00
Matthew Brown
47ffb59241 Fix #2764 - iterate through all possible template types where necessary 2020-02-09 18:11:50 -05:00
Markus Staab
45468d801f Dont corrupt checkstyle xml 2020-02-09 15:54:37 -05:00
Matthew Brown
d0ac709b70 Use more robust, if slower, mechanism that’s intersection-safe 2020-02-09 15:34:50 -05:00
Matthew Brown
14f8fb8ecd Fix two redundant asserts 2020-02-09 11:45:43 -05:00
Matthew Brown
3559fdd6b3 Fix #2742 - prevent paradoxes in assert calls 2020-02-09 11:42:41 -05:00
Matthew Brown
4de6f5c4ec Fix #2442 - using asserting after a MixedAssignment removes that error 2020-02-08 23:01:45 -05:00
Matthew Brown
5f4d797fe1 Fix #2772 - add support for multiple array_map function param inference 2020-02-08 12:17:57 -05:00
Matthew Brown
b439a573ce Empty is also the bottom type 2020-02-08 11:40:22 -05:00
Matthew Brown
b26deb434d Fix #2771 - replace empty params with generic equivalents
Ref #2755
2020-02-08 11:17:24 -05:00
Bruce Weirdan
d99f23eb45 Fix #2761 2020-02-07 12:51:40 -05:00
Brown
dcc855de95 Fix #2739 - specify wildcards in constants 2020-02-07 10:54:57 -05:00
Matthew Brown
4e36f6caf5 Add explicit paths for included files
Fixes #2757
2020-02-07 09:06:15 -05:00
Matthew Brown
966336a475 Improve byref array handling 2020-02-06 23:52:27 -05:00
Matthew Brown
da541dbb51 Remove some unnecessary errors 2020-02-06 23:10:18 -05:00
Brown
e567f8c728 Fix #2752 - string casts can be implicit method calls, don’t remove automatically 2020-02-06 21:05:16 -05:00
Brown
23f8967fb5 Fix conditional class-string template replacement 2020-02-06 19:40:18 -05:00
Brown
2a0dd48dcd Fix bad type 2020-02-06 17:31:17 -05:00
Brown
d5f71bf529 Localise template checks to class being tested 2020-02-06 16:38:45 -05:00
Brown
54efbbe831 Fix bad assertion 2020-02-06 16:32:26 -05:00
Brown
9af12932b5 Add slash 2020-02-06 15:09:34 -05:00
Brown
6116b457ed Port over more fixes from template match refactor 2020-02-06 15:07:57 -05:00
Brown
0fd0d01d2b Improve class-string templating 2020-02-06 14:35:36 -05:00
Brown
638e90356a Add slash 2020-02-06 11:58:39 -05:00
Brown
a16e03d992 Fix #2756 - narrow assertion templated type 2020-02-06 11:49:15 -05:00
Brown
ffd04132ce Fix #2754 - use ext-ds stubs from PHPStan 2020-02-06 10:38:10 -05:00
Benjamin Morel
b486bd4c78 PDOStatement::fetchColumn() can return any scalar 2020-02-05 11:46:01 -05:00
Brown
50fc50fab0 Fix #2751 - allow static methods to inherit class templates 2020-02-05 11:19:40 -05:00
Matthew Brown
bbdb1254ad Add line break 2020-02-05 08:51:11 -05:00
Lars Moelleken
759cfe4555 add more impure function calls 2020-02-05 08:51:11 -05:00
Brown
8fb810350a Don’t cache no-effects hashes when checking for initialisations 2020-02-04 17:53:26 -05:00
Brown
4c83ca75b3 Fix #2738 - clear out property issues when modifying constructors 2020-02-03 16:43:25 -05:00
Matthew Brown
b3f6b56f9c Add support for @psalm-readonly-allow-private-mutation 2020-02-02 15:56:08 -05:00
Matthew Brown
93fc1b1cc7 Fix #2729 - allow mutation of otherwise-readonly properties 2020-02-02 15:35:12 -05:00
Matthew Brown
8d7fb2b415 Add config flag to support properties without a magic getter 2020-02-02 14:23:38 -05:00
Thomas Gerbet
6f6e26580a Remove non-existent $serverctrls parameter for \ldap_bind()
In a8e58b0ba0 a `$serverctrls` parameter
was incorrectly added to the \ldap_bind() function.

See php/doc-en#20.
2020-02-02 12:34:28 -05:00
Matthew Brown
43c7b00cd0 Fix #2734 - allow is_a to operate on templated class-strings 2020-02-02 12:26:28 -05:00
Matthew Brown
8db4bc7691 Improve formatting of intersection error messages
Also reduce false positives on intersections of templates
2020-02-02 12:25:24 -05:00
Matthew Brown
f981c61990 Add slashes 2020-02-02 11:04:29 -05:00
Matthew Brown
b67f661604 Fix #2735 - interpret template check in context of class-string generation 2020-02-02 10:51:18 -05:00
Matthew Brown
f0fc9cce5f Fix missing param doc 2020-02-01 18:24:09 -05:00
Matthew Brown
d0b87b6cb0 Fix #2723 - use magic method return type where necessary 2020-02-01 18:21:32 -05:00
Matthew Brown
6dbb911da1 Fix templating class-string unions 2020-02-01 15:02:44 -05:00
Orklah
e48dc2d158 small stubs changes for reflection 2020-02-01 12:54:43 -05:00
Matthew Brown
292f6e797f Only make directly-assertable things possibly-undefined
Ref #2724
2020-02-01 10:58:13 -05:00
Brown
3b6f53a356 Revert "Fix #2724 - make sure behaviour is not dependent on array type"
This reverts commit 1df03b0ff2.
2020-01-31 17:25:15 -05:00
Brown
1df03b0ff2 Fix #2724 - make sure behaviour is not dependent on array type 2020-01-31 16:46:05 -05:00
Brown
97343c3eb8 Fix unnecessary param 2020-01-31 16:36:46 -05:00
Brown
adbe44d7bb Revert countable checks 2020-01-31 15:24:44 -05:00
Brown
66227f9b7f Fix #2727 - callable arg checks should obey ignore_falsable_return 2020-01-31 13:58:56 -05:00
Brown
34408a892c Support has-at-least type in negation 2020-01-31 13:13:50 -05:00
Brown
37765098e9 Fix #2725 - allow empty checks on objects that implement countable 2020-01-31 12:55:33 -05:00
Brown
8f95c5679e Fix #2720 - allow throwing self 2020-01-30 18:00:31 -05:00
Brown
b46f219c51 Do better inference for array_map return type 2020-01-30 17:43:13 -05:00
Brown
9405314222 Always Be Cloning 2020-01-30 17:22:40 -05:00
Brown
216d9256a1 Allow templated array_map callable inference
Fixes #2719
2020-01-30 17:13:46 -05:00
Philip Hofstetter
f6983fd883 allow setting php version from config or composer.json
if a composer.json is present and a PHP version requirement is
configured, we set the php version to the minimal PHP version that
satisfies the composer requirement.

Additionally, this adds a `phpVersion` attribute to the <psalm> tag. If
that's set, it takes precedence over what has been detected in
composer.json.

And finally, the --php-version command line flag continues to work and
takes precedence over the setting in the <psalm> tag

this fixes #2628
2020-01-30 08:48:53 -05:00
Matthew Brown
6c7d1b4e64 Ignore nullable return DomNodeList/DomNameNodeMap::item 2020-01-29 23:53:47 -05:00
Matthew Brown
5eb2ebc508 Add more type-system protections for bad array args 2020-01-29 23:41:17 -05:00
Matthew Brown
2829530ea6 Fix #2713 - allow interface with __invoke to be called 2020-01-29 22:33:28 -05:00
Matthew Brown
989123f82e Fix line length 2020-01-29 22:31:23 -05:00
Matthew Brown
933dff9e20 Fix #2712 - allow __toString to have more specific type 2020-01-29 22:28:40 -05:00
Matthew Brown
4b7780905e Improve reconciliation logic once more 2020-01-29 22:00:20 -05:00
Matthew Brown
06ffa24c26 Fix assertions to be better 2020-01-29 21:46:44 -05:00
Matthew Brown
2aebc522f1 Fix #2705 - mark by-ref args as used if not variables already 2020-01-29 21:46:30 -05:00
Matthew Brown
e92656c4cb Fix #2707 - reconcile object equality properly 2020-01-29 21:25:44 -05:00
Matthew Brown
ce0298acc4 Fix #2704 - array_merge should ignore possibly-false issues where applicable 2020-01-29 21:09:33 -05:00
Matthew Brown
4489b7169d Allow possibly-false return for DOMDocument::saveXML
Fixes #2714
2020-01-29 21:03:34 -05:00
Matthew Brown
c2f1b3b700 Use slightly cleaner way of sorting file issues 2020-01-29 09:00:13 -05:00
Philip Hofstetter
8f8672dd6b
do not corrupt internal state when a baseline is present (#2710)
this fixes #2709
2020-01-29 08:53:58 -05:00
Pavel Batečko
ecf85aef12
Add generic definition of DOMNamedNodeMap (#2703)
* Fix #2638 - propagate phantom classes to recursive calls to Scanner::queueClassLikeForScanning()

* Add generic definition of DOMNamedNodeMap
2020-01-29 08:39:07 -05:00
Matthew Brown
1dc1ebe23a Remove unused variable 2020-01-27 23:19:03 -05:00
Matthew Brown
ff01f41b44 Allow strings in assert annotation 2020-01-27 23:15:50 -05:00