1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-12 09:19:40 +01:00
Commit Graph

2521 Commits

Author SHA1 Message Date
Brown
3fc67782a9 Fix #1055 - improve reconciliation of class-strings 2018-11-02 17:38:20 -04:00
Brown
07934b8333 Fix isString check for class strings 2018-11-02 17:03:49 -04:00
Brown
f7a37d05b9 Improve handling of generic params in intersection types
Ref #1053
2018-11-02 13:09:04 -04:00
Matthew Brown
f592e54a4e Add hover info for extends and implements 2018-11-01 23:40:36 -04:00
Matthew Brown
ccf5de0418 Improve array coercion checks 2018-11-01 23:31:40 -04:00
Matthew Brown
1152aa953f Fix #1026 - warn about bad docblock in @property annotation 2018-11-01 23:04:00 -04:00
Matthew Brown
b1c704da4d Fix #1050 - don’t check stubbed classes for property initialisation 2018-11-01 22:46:14 -04:00
Matthew Brown
7d12bfd2d1 Cache errors as well as info issues 2018-11-01 21:52:39 -04:00
Brown
ef671a14cc Fix issue in file diff offset 2018-11-01 19:11:00 -04:00
Brown
df8b0a1fc5 Bust cache when config changes, don’t rely on > modified time 2018-11-01 17:42:48 -04:00
Brown
f017599b3f Fix how InvalidDocblock is treated
Fixes #1051 (hopefully)
2018-11-01 17:03:08 -04:00
Brown
019404d198 Fix resolving of classes after change 2018-11-01 16:04:37 -04:00
Brown
bd3250f52b Bust caches when config changes 2018-11-01 16:02:44 -04:00
Brown
0ba8a51cbe Deduplicate issues from threads 2018-11-01 13:22:38 -04:00
Brown
1d7ea1292e Add Psalm\Config::locateConfigFile method for easier path fetching 2018-11-01 13:05:33 -04:00
Brown
5eca4a8b27 Properly escape slashes in issue text 2018-11-01 12:39:48 -04:00
Erik Booij
635410ea41 Introduce issue baseline with --set-baseline and --with-baseline 2018-11-01 11:16:08 -04:00
Matthew Brown
1a08b69d9c Only do partial parsing if there are few changes 2018-10-30 22:25:31 -04:00
Matthew Brown
cd9e9321fd Remove error logging 2018-10-30 20:55:25 -04:00
Matthew Brown
8071465e8e Fix performance regression introduced with fix to #1039 2018-10-30 20:51:52 -04:00
Brown
727b0d3221 Add --disable-on-change option 2018-10-30 18:58:22 -04:00
Brown
6732c5f5c2 Add scanning of generic classes 2018-10-30 13:01:01 -04:00
Brown
aef9fecaa3 Fix #1045 - check intersection classes exist 2018-10-30 10:34:02 -04:00
Matthew Brown
d1baff4b92 Fix #1044 - allow templated params in assert 2018-10-30 09:20:34 -04:00
sji
2eb0122549 Fixed the type of 1st parameter in odbc_fetch_object() 2018-10-30 09:17:48 -04:00
Brown
55b29e71a8 Fix issue where diffs span multiple functions 2018-10-29 17:12:20 -04:00
Brown
0bebcd06ce Prevent possibly false return from enterNode
Don’t quite understand how this could be false tbh
2018-10-29 15:01:05 -04:00
Brown
d6392fbcba Added an HTML-escaped-string meta-type for functions to return
And a sample echo checker
2018-10-29 11:54:25 -04:00
Matthew Brown
0d7661dd3f Clone all comments, not just docs 2018-10-27 21:22:09 -04:00
Matthew Brown
750ef3e443 Rename OffsetMapCheckerVisitor to PartialParserVisitor and add description 2018-10-27 12:27:21 -04:00
Matthew Brown
aff6844c62 Fix #1035 - ignore issues where method is in a custom library 2018-10-27 11:47:27 -04:00
Matthew Brown
1d77b61ff9 Fix #1039 by invalidating all use users 2018-10-26 23:04:38 -04:00
Brown
00b51627cc Fix tests 2018-10-26 16:29:16 -04:00
Brown
e286089eaa Add onchange events and symbol lookup with disabled completion 2018-10-26 16:17:15 -04:00
Brown
303d3ee6a2 Fix issue adjusting offsets after multiple file changes 2018-10-26 13:22:41 -04:00
Brown
89e91f6ae2 Force a rescan if adding an extra method 2018-10-26 11:48:21 -04:00
Brown
dbb155f18d Shift all comments, not just docblocks 2018-10-26 11:22:43 -04:00
Matthew Brown
addaea2c1c Improve performance when parsing large files with few changes 2018-10-26 00:59:14 -04:00
François Kooman
a27ab52be7 DateTime*::getTimestamp can return false
When the represented date is before 1970-01-01 00:00:00, or after
2038-01-19 03:14:07 on 32 bit systems
2018-10-25 08:12:26 -04:00
Brown
dfda8c0760 Fix Ds\Set signatures cc @mleczakm 2018-10-24 13:14:19 -04:00
Brown
d9cf8cb1be Update callmap 2018-10-24 11:13:08 -04:00
Brown
496018f84a Fix #1024 - add support for filter_var 2018-10-23 14:38:36 -04:00
Brown
d3cd81078f Suppress UnusedParam again 2018-10-23 13:39:10 -04:00
Brown
6ac6aece89 Add coverage of differ, having fixed Psalm bug 2018-10-23 13:38:12 -04:00
Brown
85b64227f7 Be more lenient with objectlike array offset values
Assume mixed key is accurate
2018-10-23 13:14:14 -04:00
Brown
447739ede1 Fix #1033 - coerce -0 to a general int 2018-10-23 13:00:15 -04:00
Brown
d6a6e6a16c Remove error_logs 2018-10-19 13:13:55 -04:00
Brown
4da1fd0e40 Change psalm --server to psalm-language-server 2018-10-18 14:34:46 -04:00
Brown
2b6df3658c Only repopulate the storage we care about
Big reduction on population time for single file edits
2018-10-18 10:42:37 -04:00
Brown
a41c5c8a39 Fix code quality issues 2018-10-18 09:57:13 -04:00
Brown
4ed5c4bcc6 Speed up analysis phase 2018-10-18 09:51:28 -04:00
Brown
b7c438bf97 Fix slowness when invalidating heavily-used files 2018-10-17 18:11:02 -04:00
Brown
54fdda651b Add server mode support with error reporting only 2018-10-17 15:54:31 -04:00
Brown
47e987ccf8 Check to see if process is still running before killing 2018-10-17 15:53:54 -04:00
Brown
5938fd1bb9 Fix too-long-line 2018-10-17 14:37:32 -04:00
Brown
a38d2f809b Fix #1017 - add non-docblock return type as a referenced class 2018-10-17 14:10:16 -04:00
Brown
6a7148204b Add checks elsewhere too 2018-10-17 13:25:09 -04:00
Brown
e6cf9e96df Add support for class concats when checking for callables 2018-10-17 13:22:57 -04:00
Brown
1d5759a35c Improve test coverage of ProjectChecker 2018-10-17 11:03:32 -04:00
Brown
5a484901cd Improve the way that files are reloaded (server only) 2018-10-16 15:59:11 -04:00
Tyson Andre
f53c4fa978 Fix some call map signatures (postgres, etc.) 2018-10-15 18:40:25 -04:00
Brown
6990914f1b Assume missing classes are traits and treat related methods accordingly 2018-10-15 18:35:57 -04:00
Brown
93a422d2d9 Add alarms for recalcitrant processes 2018-10-15 17:41:10 -04:00
Brown
13cc3b4751 Improve file hash reloading 2018-10-15 11:34:51 -04:00
Brown
67b114f3f7 Skip test broken by new scanning system 2018-10-15 09:16:11 -04:00
Brown
f9cca5e597 Add support for forking at the scanning step 2018-10-15 09:16:11 -04:00
Matthew Brown
edc219facb Add test for #1017 2018-10-11 23:00:32 -04:00
Brown
d6e1c95aff Simplify file scanner filtering 2018-10-11 13:58:04 -04:00
Matthew Brown
03ed1a5135 Fix #1016 - load stdClass info when an object cast comes along 2018-10-11 09:14:34 -04:00
Brown
7278feb811 Split up scanning into specific steps 2018-10-10 16:59:03 -04:00
Brown
ccc92d7709 Fix microtime types 2018-10-10 16:05:06 -04:00
Brown
a2e7a65f3a Add better types for microtime 2018-10-10 16:03:00 -04:00
Brown
792144def4 Fix a couple of callmap issues 2018-10-10 14:22:06 -04:00
Brown
f56c76a8be Fix #1015 with maybe slightly hacky solution? It’s an edge case, though 2018-10-10 11:45:56 -04:00
Brown
8e73b34469 Fix #1009 - improve handling of print_r 2018-10-10 10:58:47 -04:00
Matthew Brown
96768ffd48 Fix wrong redundant condition converting scalar to string 2018-10-10 01:57:11 -04:00
Matthew Brown
2564abde85 Remove unused var 2018-10-10 01:02:02 -04:00
Matthew Brown
3b8e82cca1 Fix hydration of property types in property map 2018-10-10 00:54:50 -04:00
Greg Roach
3050e9eccb Update signature for various xml functions
FYI, I made the same change to phan https://github.com/phan/phan/pull/2031
2018-10-09 22:43:23 -04:00
Brown
13b6868ab0 Add references to $this-> properties for method invalidation 2018-10-09 14:24:55 -04:00
Matthew Brown
43c5e9dd4c Fix unnecessary file reparsing 2018-10-08 22:42:45 -04:00
Brown
55bb896868 Fix bugs Psalm found 2018-10-08 20:04:05 -04:00
Brown
e4e92ebd32 Don’t complain when encountering string templated builtin type 2018-10-08 19:57:18 -04:00
Brown
d0840b04b5 Improve debug output for diff runs 2018-10-08 19:42:24 -04:00
Brown
6a2add9398 Don’t skip correct methods in non-diff mode 2018-10-08 19:41:32 -04:00
Brown
99eb903b0d Don’t do last-minute checks for classes 2018-10-08 19:39:36 -04:00
Brown
29e78c5df1 Avoid not checking classes where possible 2018-10-08 13:08:03 -04:00
Brown
540f22de40 Only substitute param types in function analysis if none present 2018-10-08 13:07:28 -04:00
Matthew Brown
afebefba19 Switch from --cache-results to --diff-methods flag 2018-10-07 00:42:25 -04:00
Matthew Brown
7e01576653 Fix #1011 - don’t re-analyse constructors if we can help it 2018-10-06 22:58:21 -04:00
Matthew Brown
92e11fd51b Port over cleanup from server branch 2018-10-06 20:11:19 -04:00
Matthew Brown
99c9be34e1 Type according to parent param types, if no type is given 2018-10-06 14:00:45 -04:00
Matthew Brown
08d8ff5d70 Allow automatic inheritance from overriding param type definitions 2018-10-06 13:46:35 -04:00
Brown
289f5046b2 Don’t disable class checks if extension is loaded 2018-10-04 16:58:11 -04:00
Brown
9ea2009cd2 Add a closure in scope just in time for analysis 2018-10-04 16:42:40 -04:00
Brown
0352babece Fix buggy handling of class with __toString being passed to string|object 2018-10-04 15:29:01 -04:00
Matthew Brown
ea3eada2d6 Still invalidate methods whose bodies have changed 2018-10-03 23:52:09 -04:00
Brown
80bfc168df Skip if storage cannot be found 2018-10-03 18:26:36 -04:00
Brown
6707672528 Improve handling of traits further 2018-10-03 18:16:33 -04:00
Brown
f2cea0325f Slightly improve trait handling 2018-10-03 17:11:08 -04:00
Brown
33254c43cc Fix #1010 - track changes to traits and trait uses 2018-10-03 13:58:32 -04:00
Brown
d6952b5f46 Remove unused var 2018-10-02 17:22:30 -04:00
Brown
4ff851f536 Add test for re-analysis after no change 2018-10-02 15:49:27 -04:00
Brown
14fb95ae97 Fix invalidly inferred return type 2018-10-01 15:14:39 -04:00
Brown
f1bfde5dd7 Improve resolution of include paths 2018-10-01 13:50:55 -04:00
Matthew Brown
80d56cde15 Respect property flag changes 2018-09-30 11:34:51 -04:00
Matthew Brown
e9070b7c4a Improve file updating in same thread 2018-09-30 11:34:51 -04:00
Matthew Brown
890412b557 Add support back for parser errors 2018-09-30 11:34:51 -04:00
Brown
d0bd10d143 Improve provider architecture, upping test coverage 2018-09-30 11:34:51 -04:00
Brown
05a0bdc93b Remove PHP7 types 2018-09-30 11:34:51 -04:00
Brown
7bf63e09f5 Don’t delete issues when ignoring them in command line 2018-09-30 11:34:51 -04:00
Brown
1d26332d77 Track more changes and invalidate more methods 2018-09-30 11:34:51 -04:00
Brown
89c04ec1ae Cache issue data and adjust issue offsets where applicable 2018-09-30 11:34:51 -04:00
Brown
67c90edadf Don’t check methods we’ve already checked 2018-09-30 11:34:51 -04:00
Brown
71b7c70eb1 Add way of getting changes in a given file 2018-09-30 11:34:51 -04:00
Brown
ff893a3fb2 Fix #1005 - resolve /./ to / 2018-09-27 17:59:46 -04:00
Brown
679f4894a9 Fill in PHP4 constructor where necessary 2018-09-25 17:23:19 -04:00
Matt Brown
e323d15174 Fix #972 - allow type aliases to be used within functions 2018-09-24 13:08:23 -04:00
Matt Brown
db3ddaa42c Allow InvalidCatch and InvalidThrow to be suppressed per-class
Ref #411
2018-09-21 11:35:51 -04:00
Matthew Brown
1ed61f42b9
Check outer scope for loop changes on break/continue (#1002)
* test

* Fix #1000 - check outer scope for loop changes on break/continue
2018-09-20 19:19:00 -04:00
Matthew Brown
350afe3e7f Fix #998 - use lowercase comparison for method signature checks 2018-09-19 23:12:35 -04:00
Matt Brown
3187b5723d Ignore method deprecation until it breaks 2018-09-18 18:21:12 -04:00
Matt Brown
4d4e84e6e9 Add specific ForbiddenEcho issue if a config flag is set 2018-09-18 17:08:32 -04:00
Matt Brown
414057e281 Fix #938 - allow forbiddenFunctions to be specified in the config 2018-09-18 16:42:51 -04:00
Matthew Brown
447bd147e1 Fix interface return type regression 2018-09-14 00:07:56 -04:00
Matthew Brown
4efb8c2cf1 Include method return descriptions 2018-09-13 23:55:03 -04:00
Matthew Brown
36bb8ae213 Fix #996 - improve handling of return type comments 2018-09-13 23:39:24 -04:00
Matthew Brown
68ac4020a1 Fix #995 - allow callables to be expressed in docblocks when namespacing things 2018-09-13 21:52:07 -04:00
Erik Booij
dac8530741 Add mysqli::escape_string and mysqli_escape_string to CallMap (#994) 2018-09-11 16:04:42 -04:00
François Kooman
cea7459b5c fix return value of ldap_get_entries (#990) 2018-09-11 16:04:03 -04:00
Matthew Brown
1b7f215406 Fix #993 - create class string from reconciled assertions where necessary 2018-09-10 21:55:22 -04:00
Matt Brown
661087d445 Allow float to be empty (0.00) 2018-09-10 15:38:31 -04:00
Matthew Brown
334c463e08 Fix #977 - improve handling of orred expressions 2018-09-10 00:13:59 -04:00
Matthew Brown
1d3e66c798 Fix #982 - treat intersection types of traversables as first-order citizens 2018-09-09 20:10:50 -04:00
Matthew Brown
80cd77832b Fix #980 - allow literal int types to be coerced from mixed 2018-09-09 13:01:16 -04:00
Matthew Brown
2c3244e93b Fix #981 - allow interfaces to be equal 2018-09-09 12:20:49 -04:00
Matthew Brown
53e265e963 Fix #984 - allow magic methods to be invoked on $this->xxx 2018-09-09 11:45:52 -04:00
Matthew Brown
046025576e Fix issue merging class constants and inherited interface ones 2018-09-09 11:18:20 -04:00
Matt Brown
bafd3cde1f Fix #983 - allow more than two types to be intersected 2018-09-07 11:09:07 -04:00
Matt Brown
4d676afaef Fix #985 - strip null from object type where possible 2018-09-07 11:01:10 -04:00
Matt Brown
6e5a9bf076 Fix #986 - use better return type for array_slice 2018-09-07 10:53:56 -04:00
Matthew Brown
44c742c849 Fix #976 - make sure misplaced { doesn’t halt execution 2018-09-06 00:41:07 -04:00
Matthew Brown
3e920b1227 Fix unexpected method with return type 2018-09-05 22:40:52 -04:00
Matthew Brown
e6d1a44a59 Fix #974 - fix handling of brackets 2018-09-05 22:36:32 -04:00
Matthew Brown
84459286ac Fix #973 - allow types to reference other new types in a given docblock 2018-09-04 22:27:55 -04:00
Matthew Brown
7c274431f0 Fix #975 - don’t check things at all when there’s a duplicate class 2018-09-04 21:22:05 -04:00
Matt Brown
add7c14b44 Fix #965 - invalidate cache when changing plugins 2018-09-04 15:28:03 -04:00
Matt Brown
b97972ebb3 Fix Psalm-found issues 2018-09-04 14:37:33 -04:00
Matt Brown
cbfebb7a69 Fix #971 - be more robust in face of duplicate classes 2018-09-04 14:34:14 -04:00
Matt Brown
5d6fb4efdf Copy inferred type when suppressing errors 2018-09-04 13:57:05 -04:00
Matt Brown
681b5fb4a5 Fix #970 - improve handling of yield from statements 2018-09-04 13:29:35 -04:00
Matt Brown
e1bc9c65fc Add ksort to list of no-op by ref functions (vis-a-vis their argument shape 2018-09-04 13:14:44 -04:00
Matthew Brown
84d7504036 Fix #834 - warn about __toString in array offset 2018-08-31 20:24:50 -04:00
Matthew Brown
d5b0d5a996 Fix #964 - warn about imposible offsets 2018-08-31 20:02:36 -04:00
Matthew Brown
3e69a333c9 Prevent fatal error with function_exists after autoloading 2018-08-29 20:54:48 -04:00
Matt Brown
7dd3273a62 Fix #959 - allow nullable followed by parentheses 2018-08-29 16:03:16 -04:00
Matt Brown
17ea48eda4 Add ability to pretend that a file has declare(strict_types=1) 2018-08-29 15:10:56 -04:00
Matt Brown
956a7c749b Improve handling of array_search and strstr, and restrict ini_set types 2018-08-29 13:58:07 -04:00
Matt Brown
f844f86a6c Improve type coercion checks in strict mode 2018-08-28 17:42:39 -04:00
Matt Brown
1037485a60 Convert InvalidScalarArgument to InvalidArgument when declare(strict_types=1) is set 2018-08-28 12:37:25 -04:00
Matt Brown
2599d8bd62 Allow some folders to be excluded from type stats collection 2018-08-24 17:46:13 -04:00
Matt Brown
caf65ca8a9 Fix #957 - allow assertions on $_GET, $_POST, $_SERVER etc 2018-08-24 16:48:14 -04:00
Matt Brown
4ef2aafdd8 Fix #955 - always check third argument of array_splice 2018-08-24 16:12:07 -04:00
Matt Brown
0691763803 Fix issue reconciling class strings 2018-08-23 11:43:53 -04:00
Matthew Brown
867ebd4441 Fix #953 - support spaces either side of | 2018-08-22 22:53:44 -04:00
Matt Brown
ebc65baa91 Fix issues with coerced class-string 2018-08-21 17:59:06 -04:00
Matt Brown
91100edcc9 Fix issue mixing class strings and class string constants 2018-08-21 14:47:28 -04:00
Matt Brown
699a34fc9d Fix #952 - improve checks for string array offsets 2018-08-21 11:40:29 -04:00
Matthew Brown
bf79169a1d Fix #914 - check for correct character when setting calculated field 2018-08-21 00:43:45 -04:00
Matthew Brown
4ad3522448 Fix #918 - improve handling of associative array offsets 2018-08-21 00:28:39 -04:00
Matthew Brown
36e2b1dd67 Fix #925 - set correct flag when coercing class-like string to specific 2018-08-20 22:25:10 -04:00
Matthew Brown
8814dff3c1 Fix #947 - interpret type hints of unpacked args 2018-08-20 22:11:01 -04:00
Pieter De Schepper
14e336e69a Fix for not suppressing MethodSignatureMismatch and InvalidReturnType (#939)
* Fix for not suppressing MethodSignatureMismatch

If you have an inherited class that overrides a method with a different return type, you can now suppress it with
@psalm-suppress MethodSignatureMismatch

* Fix for non-suppressable InvalidReturnType
2018-08-20 21:37:21 -04:00
François Kooman
53ddb893e2 various DateTime/DateInterval argument type fixes (#949) 2018-08-18 16:18:55 -04:00
Matt Brown
070e7903df Allow suppression of TooManyArguments by function/method id 2018-08-16 16:49:33 -04:00
Bruce Weirdan
3b3863f3a8 Scan entire file/dir list at once (#944)
fixes vimeo/psalm#943
2018-08-15 11:57:40 -04:00
Matt Brown
366f625c83 Improve handling of coerced-to-array strings in array_splice 2018-08-14 11:51:17 -04:00
Matt Brown
cb63f4f70f Add support for checking DeprecatedTrait and DeprecatedConstant 2018-08-10 13:25:25 -04:00
Matthew Brown
2fee699d25 Fix #908 - dont’t emit UnresolvableInclude after file_exists check 2018-08-09 23:29:30 -04:00
Matthew Brown
abc19d7136 Fix #915 - never care about falsable/nullable issues when matching functions from callmap 2018-08-08 23:28:30 -04:00
Matthew Brown
b9018a4a03 Fix #936 - add support for class constants in enums 2018-08-08 23:12:12 -04:00
Matthew Brown
7c10a09ead Fix #911 - properly substitute alias types
Also improve handling of array_splice
2018-08-08 22:33:31 -04:00
Matthew Brown
9880e2bede Prevent leading-number constants in docblocks 2018-08-08 21:36:33 -04:00
Matthew Brown
6670dd31e1 Fix #927 - improve typing of object-like arrays containing class like strings 2018-08-08 21:31:13 -04:00
Matthew Brown
d9af167e38 Fix #931 - replace self in enum declaration where possible 2018-08-08 20:59:21 -04:00
Matthew Brown
55be2c3ce4 Fix #934 - allow numbers in class constant enums 2018-08-08 20:36:16 -04:00
Matt Brown
226aa27686 Fix issue resolving namespaced constants 2018-08-08 16:13:37 -04:00
Matt Brown
2636b194db Fix #920 - support @var self properties in static method calls 2018-08-07 14:43:05 -04:00
Matt Brown
0304201d91 Fix #932 - allow obvious string vars to be used for includes 2018-08-07 13:17:23 -04:00
François Kooman
c54534c640 fix return values of imagettfbbox and imagettftext (#929) 2018-08-03 11:01:45 -05:00
Matthew Brown
37be70a465 Fix issue calling possibly magic method 2018-08-02 16:14:53 -05:00
Matthew Brown
c9a2ca9321 Allow output of get_parent_class to be used in new without check 2018-08-02 13:43:13 -05:00
François Kooman
b1e81c2c25 fix ldap_bind parameters, allow null for bind_rdn and bind_password 2018-08-02 13:14:41 -05:00
Tyson Andre
06abf52d94 Fix typos detected by misspell (#924)
Both of initiali[sz]e were used, z was more common.
2018-08-02 00:40:51 -04:00
François Kooman
9ebf748eb9 fix return value of headers_list (#919) 2018-08-02 00:40:10 -04:00
Matthew Brown
d3fc9a51e0 Improve callmap with PHPStan’s additions
cc @TysonAndre
2018-07-22 19:15:40 -04:00
Matthew Brown
b6372f8342 Analyse SimpleNameResolver too 2018-07-22 18:00:08 -04:00
Matthew Brown
4de33e509b Fix linting issues 2018-07-21 22:55:16 -04:00
Matthew Brown
cc28ff7ad6 Fix #904 - scan all docblocks for possible @psalm-type annotations 2018-07-21 22:24:33 -04:00
Matthew Brown
200ea70334 Check that non-user-defined abstract methods are implemented, too 2018-07-21 20:50:42 -04:00