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

2249 Commits

Author SHA1 Message Date
Matthew Brown
8e90334428 Allow assignment to numeric string via assertion 2018-05-12 19:56:17 -04:00
Matthew Brown
dbc0e6dfcb Use arrays instead of strings for assertions 2018-05-12 19:38:43 -04:00
Matthew Brown
7dd86efa13 Add support for checking negative values 2018-05-12 18:46:47 -04:00
Matthew Brown
759516d01f Fall back to $method_id if no defining method id found 2018-05-12 13:19:19 -04:00
Matthew Brown
313a010355 Add workaround for Closure::__invoke 2018-05-12 13:02:53 -04:00
Matthew Brown
4fe5ac87b6 Fix #712 - rewrite switch statement fallthroughs to understand logic better 2018-05-12 12:55:24 -04:00
Matthew Brown
8de8ce2ef4 Only assign new offset types when it’s safe to do so 2018-05-12 11:19:31 -04:00
Matthew Brown
5589aa89be Fix #736 - only remove offset type when it doesn’t contain const array type 2018-05-12 11:17:41 -04:00
Matthew Brown
56a1f744a0 Fix #734 - allow DOMDocument::appendChild to mirror its first arg 2018-05-12 00:28:21 -04:00
Matthew Brown
1b8fd75a77 Suppress possibly-invalid key issue 2018-05-11 23:24:50 -04:00
Matthew Brown
071558ec83 Fix #733 - DomNodeList implements ArrayAccess 2018-05-11 23:21:53 -04:00
Matthew Brown
b9b2a909a1 Fix #729 and prevent impossible const array access 2018-05-11 23:14:44 -04:00
Matt Brown
5c0f4a999c Move a bunch of classes to better places 2018-05-11 18:35:02 -04:00
Matt Brown
ef519ade72 Don’t adjust vars unless they’re passed by ref 2018-05-11 18:09:11 -04:00
Matt Brown
64b8603ee4 Remove further ?? 2018-05-11 17:57:18 -04:00
Matt Brown
87a11bd86a Remove PHP7-only language 2018-05-11 17:34:10 -04:00
Matt Brown
e9411eec76 Fix #730 - improve handling of templated closure params 2018-05-11 16:17:21 -04:00
Matt Brown
e3b6b9c273 Fix #724 - ignore any return types after return/throw/break/continue 2018-05-11 11:26:32 -04:00
Matthew Brown
a33d52d935 Add support for referencedProperty error restrictions 2018-05-11 00:07:41 -04:00
Matt Brown
92bb22ccca Fix misfire with similarly named class constants 2018-05-10 14:12:50 -04:00
Matt Brown
444dd33118 Fix issue with undefined class constant keys 2018-05-10 13:01:55 -04:00
Matt Brown
ad94761e15 Fix undefined property fetch redundant condition 2018-05-09 12:54:31 -04:00
Matthew Brown
318220a1bf Fix #728 - remove statement return type when re-analysing 2018-05-09 09:30:23 -04:00
Matthew Brown
31121cfc6d Fix substr return in Union::__toString 2018-05-09 01:13:25 -04:00
Jay Klehr
242f46ac35 Updating stubs for several string functions (#727) 2018-05-09 00:40:06 -04:00
Matthew Brown
b4c0ffbe9d Also match substr_replace 2018-05-09 00:39:45 -04:00
Matthew Brown
8149573754 Treat str_ireplace like str_replace 2018-05-09 00:34:44 -04:00
Matthew Brown
3380de16a2 Fix #709 - detect intersection template matches a bit better 2018-05-08 23:17:11 -04:00
Matthew Brown
77d4629896 Fix #714 - fix trait class constants 2018-05-08 22:32:57 -04:00
Matthew Brown
8f9b4098bc Allow scalar to work with false
Fixes #718
2018-05-08 22:18:58 -04:00
Jay Klehr
21c1f54af2 Updating zlib function stubs to match php.net docs (#725) 2018-05-08 22:14:11 -04:00
Matthew Brown
bfa21e1108 Fix #721 by allowing @property annotations to be inheritable 2018-05-08 22:13:26 -04:00
Matthew Brown
2c0dd36035 Fix get type return types 2018-05-08 22:01:05 -04:00
Matthew Brown
5c39fb5ab1 Fix #716 - uss string inference to inform property names 2018-05-08 21:21:22 -04:00
Matthew Brown
c1440c11dc Create separate file for magic properties 2018-05-08 20:25:39 -04:00
Matthew Brown
e50ef8bf03 Support __invoke return types 2018-05-08 19:49:25 -04:00
Tyson Andre
9a9f6d1856 Make the string concatenation of two known values into a known value (#717)
* Make the string concatenation of two known values into a known value

address review comments

* Add vim temporary files to .gitignore
2018-05-08 19:11:18 -04:00
Matt Brown
6e259bed03 Always evaluate closures, even when passed as mixed call args 2018-05-08 18:11:10 -04:00
Matt Brown
53ff05783c Clean up code slightly 2018-05-08 17:43:26 -04:00
Matt Brown
4f678f5f99 Fix bad comparisons 2018-05-08 17:42:02 -04:00
Matt Brown
03ea65cff8 Don’t complain about false values on properties when we don’t care 2018-05-08 16:57:16 -04:00
Matt Brown
bc17d23788 Fix mixed empty checks 2018-05-08 16:34:08 -04:00
Bruce Weirdan
2afe364ee0 simplexml callmap update (#723)
* simplexml callmap update

fixes vimeo/psalm#722 and includes a number of manual updates to
simplexml function/method signatures (based on php.net docs)

* minor fixes

- s/qname/name/
- explicit void return type for `SimpleXMLElement::addAttribute()`
2018-05-08 13:50:32 -04:00
Matt Brown
0eda76b742 Fix strict reconciliation of bools 2018-05-07 18:09:40 -04:00
Matt Brown
3c9e42f884 Fix string assertion for ternaries 2018-05-07 17:52:18 -04:00
Matt Brown
f858924b60 Fix erroneous string matching after oring 2018-05-07 17:40:16 -04:00
Matt Brown
2299cecd23 Fix strict isset reconciliation 2018-05-07 17:15:27 -04:00
Matt Brown
6460d907f9 Improve array handling when offsets hard to define 2018-05-07 16:22:04 -04:00
Matt Brown
091d13b73f Fix reconciliation of non-isset array vars 2018-05-07 16:00:56 -04:00
Matt Brown
c6ed1b0458 Fix bad offset 2018-05-07 15:47:04 -04:00
Matt Brown
c0729a02cd Fix remaining issues with logic checks 2018-05-07 14:52:45 -04:00
Matthew Brown
61aeea6375 Fix whole bunches of things 2018-05-07 01:26:06 -04:00
Matthew Brown
3b9b4a8a6f Improve binary op function layout 2018-05-06 12:11:40 -04:00
Matthew Brown
c31f787f7c Convert DNF conditions to CNF 2018-05-06 12:11:40 -04:00
Matthew Brown
00838d19b5 Fix #534 - fix bug in type simplification 2018-05-06 12:05:55 -04:00
Matthew Brown
04bd492360 Fix erroneous scope resolution 2018-05-05 20:52:10 -04:00
Matthew Brown
8d8fdad924 Always set array offset type 2018-05-05 17:50:19 -04:00
Matthew Brown
21261172a8 Fix #713 - support offsets of known array types 2018-05-05 17:30:18 -04:00
Matthew Brown
0181fce46f Fix #711 - concat ops contribute to loop map 2018-05-05 16:17:54 -04:00
Matthew Brown
85c69f1335 Make sure div operations return GMP too 2018-05-05 13:14:59 -04:00
Matthew Brown
c39af03a01 Allow GMP to be converted to string 2018-05-05 13:04:27 -04:00
Matthew Brown
3718bd5c61 Fix GMP arithmetic operations 2018-05-05 12:59:30 -04:00
Matthew Brown
1a4ddc7cdd
Support value types (#707)
* Add first idea

* Add initial count experiments

* Remove false positives

* Fix getId to support changes in conditionals

* Add better tests

* Strip types when not exists

* Fix array offsets

* More fixes

* Add class constant value types

* Clone constants everywhere

* Don’t complain unnecessarily

* Be more lenient with possibly invalid __sets

* Fix mixed issues

* Fix bug concerning orred string equality

* Remove unnecessary casts
2018-05-03 13:56:30 -04:00
Matt Brown
521237dc56 Fix #705 - don’t be so strict about undefined constants 2018-05-03 13:20:42 -04:00
Matt Brown
f2ff727649 Fix #706 - don’t namespace & 2018-05-03 13:15:16 -04:00
Matt Brown
ae49558de6 Ignore MissingConstructor a little less 2018-05-03 11:38:27 -04:00
Matthew Brown
7ccc17cd98 Fix #324 - improve undefined array handling 2018-05-02 20:10:08 -04:00
Matthew Brown
fa95dede08 Fix #455 - allow unset to alter object-like arrays 2018-05-02 19:39:11 -04:00
Matt Brown
4513d24b7d If there’s any overlap in types use PossiblyInvalidArgument 2018-05-01 14:27:05 -04:00
Matthew Brown
b36b50784d Fix #703 - prevent undefined param offset 2018-04-30 22:18:41 -04:00
Matthew Brown
15e1003c37 Warn about impossible empty 2018-04-30 22:13:13 -04:00
Matt Brown
6e67030925 Fix #702 - prevent bad array to iterable cast 2018-04-30 13:17:09 -04:00
Matthew Brown
acacde173e Fix highlight_string return type default 2018-04-30 01:49:55 -04:00
Matthew Brown
59bbf6f896 Allow Exception::getPrevious to return null 2018-04-30 00:44:43 -04:00
Matthew Brown
6ad2184b7e Improve highlight_string/highlight_file signatures 2018-04-30 00:31:27 -04:00
Matthew Brown
1946bc0085 Allow resource to be cast to string 2018-04-30 00:19:35 -04:00
Matthew Brown
99da371ac4 Move memoisation after callmap branch 2018-04-28 13:49:27 -04:00
Matthew Brown
496256c2a5 Make memoisation more universal 2018-04-28 13:49:21 -04:00
Matthew Brown
da6209276f Allow ability to memoize empty method calls based on config 2018-04-28 13:05:43 -04:00
Matt Brown
a0984cdaf1 Fix #697 - make missing objectlike fields an InvalidArgument 2018-04-27 17:10:57 -04:00
Matt Brown
6b3759a266 Fix #699 - prevent stubs from overriding known functions 2018-04-27 15:00:22 -04:00
Matt Brown
4507962883 Fix possibly undefined issue 2018-04-25 14:45:51 -04:00
Matt Brown
8ec34ed4ed Only cache effects hashes when there’s no change 2018-04-25 14:33:39 -04:00
Matt Brown
0c24c0cb20 Remove unused code 2018-04-25 13:12:42 -04:00
Matt Brown
a409b3c32a Remove unnecessary echo 2018-04-25 11:53:10 -04:00
Matt Brown
9a1674bd0e Remove checker cache optimisation (v2 only) 2018-04-25 11:52:24 -04:00
Matt Brown
d09d547718 Trigger InvalidDocblock when @return missing type 2018-04-25 11:18:05 -04:00
Matt Brown
37620ce2e5 Bump memory limit 2018-04-25 10:33:15 -04:00
Matthew Brown
048a32e7b6 Also check incremental overflows ref #691 2018-04-24 23:12:01 -04:00
Matthew Brown
35725267f9 Fix #691 - Allow comparisons to float for integer results 2018-04-24 23:02:20 -04:00
Matthew Brown
e2400920b9 Fix #693 - add @TysonAndre’s fix for atomic type checks 2018-04-24 21:27:31 -04:00
Matthew Brown
19ccdbc08b Remove unnecessary foreach 2018-04-24 21:15:33 -04:00
Matthew Brown
3e7e1b3020 Fix #694 - remove descendent vars when possibly reassigning 2018-04-24 21:02:07 -04:00
Matthew Brown
21871bd8d4 Remove PHP 5 dead code cc @TysonAndre 2018-04-24 07:08:14 -04:00
Matthew Brown
09082ddf52 Fix #695 - fix PHP parser cache version 2018-04-24 07:07:04 -04:00
Matthew Brown
668cf2c0be Fix #692 - remove text after the end of a method 2018-04-23 09:52:40 -04:00
Matthew Brown
2fabdf3353 Fix #314 - add a way to indicate @method list is comprehensive 2018-04-22 00:40:30 -04:00
Matthew Brown
1c7568e612 Fix #642 - allow @method to override existing methods
behind usePhpDocMethodsWithoutMagicCall="true"
2018-04-21 23:08:08 -04:00
Matthew Brown
8b50cdf315 Fix #632 - add support for @method annotations when method can’t be found 2018-04-21 22:44:54 -04:00
Matthew Brown
d02b148820 Fix #633 - support @method for magic __call methods 2018-04-21 22:13:10 -04:00
Matthew Brown
da69e60cf3 Don’t error on existing Psalm configs cc @ostrolucky 2018-04-21 19:05:26 -04:00
Gabriel Ostrolucký
2295756793 fix xsd path replacement in --init 2018-04-21 18:55:42 -04:00
rightfold
10a90d2270 Use less obscure method for checking a string against many other strings 2018-04-21 16:04:03 -04:00
rightfold
5c908da55a Check that __clone, __construct, __destruct signatures omit return types
PHP complains when you have a return type declared for these three methods.
2018-04-21 16:04:03 -04:00
Matt Brown
0882b9c0f9 Fix #687 - interpret unpacked arguments in array_push and array_unshift 2018-04-20 17:14:38 -04:00
Matt Brown
131cab2528 Remove bad var_dump 2018-04-20 15:53:19 -04:00
Matt Brown
8b9753a235 Fix parsing of nested callable without args 2018-04-20 15:22:48 -04:00
Matt Brown
8d7c365e5f Fix #679 - improve template param type checks 2018-04-20 10:52:23 -04:00
Matt Brown
a25a989c12 Prepare v2 dev release 2018-04-19 17:29:07 -04:00
Matt Brown
1f3837d972 Fix #686 - allow undefined class inside class_exists call 2018-04-19 12:16:00 -04:00
Matt Brown
f3b579b06a Fix #685 - ignore assignment in conditional 2018-04-19 11:58:51 -04:00
Matthew Brown
2b34c1d315 Add extra level 8 containing PHP autoload landmines 2018-04-19 01:03:28 -04:00
Matthew Brown
a5f639d879 Fix array type conversion 2018-04-18 23:49:09 -04:00
Matthew Brown
392f3194c0 Fix #684 - use getIterator return type for IteratorAggregate functions 2018-04-18 23:47:21 -04:00
Matt Brown
41e2d9ef58 Bind callable ): stronger than | 2018-04-18 19:00:08 -04:00
Matt Brown
4c84f88668 Bump allowable config 2018-04-18 15:38:24 -04:00
Matt Brown
aa3ea9c14c Add a 7th level with even more permissive checks 2018-04-18 15:31:00 -04:00
Matt Brown
6a8fcaef56 Break compatibility with EventBuffer <= 1.5 (5+ years old) 2018-04-18 14:56:33 -04:00
Matt Brown
8c34c3d653 Support empty callable returning callable 2018-04-18 13:23:48 -04:00
Matt Brown
9099a0972b Remove bad variable check 2018-04-18 12:10:49 -04:00
Matt Brown
4ee0298558 Always panic when two types can never be the same 2018-04-18 12:01:13 -04:00
Matt Brown
b9f55b7b8b Fix #680 - add intersection to cloned type 2018-04-18 10:59:46 -04:00
Matt Brown
5b7d190640 Emit RedundantCondition when asserting two variables can never be equal 2018-04-17 15:39:09 -04:00
Matt Brown
5a2f6ff0e0 Fix #624 - change some innaccurate issue names 2018-04-17 14:07:02 -04:00
Matt Brown
6afaf5aae9 Make Psalm compatible with PHP Parser 4 2018-04-17 13:06:02 -04:00
Matt Brown
87be0b5863 Change die($message) to explicit exit(1) 2018-04-17 11:48:29 -04:00
Matt Brown
df5d369443 Fix #677 - handle get_class checks more accurately 2018-04-17 10:28:49 -04:00
Matt Brown
b28cc19fd2 Fix bitwise operations on strings 2018-04-16 18:19:18 -04:00
Matt Brown
55153f9542 Fix #676 - bitwise operators didn’t have int return type 2018-04-16 16:36:06 -04:00
Matt Brown
3cc549384f Type explode more accurately 2018-04-16 16:03:04 -04:00
Matt Brown
02a5d22449 Fix #674 - remove summary for full Psalm run if not in console mode 2018-04-16 14:05:46 -04:00
François Kooman
0c815c7bf4 fix return type of Sodium\crypto_sign_open (sync with sodium_crypto_sign_open) 2018-04-16 14:00:43 -04:00
Matthew Brown
7345a44494 Fix callable parse issue 2018-04-15 18:16:31 -04:00
Matthew Brown
50f4ee95e8 Set from docblock before queuing params for scanning 2018-04-14 13:41:25 -04:00
Matthew Brown
8e07119e57 Fix #673 - don’t store hydration failures when exhuming 2018-04-14 13:39:30 -04:00
Radosław Kowalewski
eab7f7b68b Suppress MixedArgument 2018-04-14 10:45:05 -04:00
Radosław Kowalewski
88bf8e284c Configuration fallback to psalm.xml.dist file
Closes vimeo/psalm#644
2018-04-14 10:45:05 -04:00
Matt Brown
21b74ae725 Turn useAssertForType on by default (was off) 2018-04-13 17:35:56 -04:00
Matt Brown
3cf5345728 Improve codebase mixed coverage calculation by ignoring initial loops 2018-04-13 17:26:07 -04:00
Bruce Weirdan
11f239f6cb dropped $link params that shouldn't be there for OO interface 2018-04-13 14:55:34 -04:00
Bruce Weirdan
ea748c5e83 dropped mysqli properties (these should not be in the CallMap) 2018-04-13 14:55:34 -04:00
Matt Brown
6ae39c84fc Use more locals 2018-04-13 11:28:15 -04:00
Matt Brown
6502eba658 Don’t invalidate object vars after callmap functions 2018-04-13 11:24:59 -04:00
Matt Brown
564cebbaad Fix #669 - improve signatures of mysql 2018-04-13 10:51:18 -04:00
Matt Brown
8fdd827e0d Fix scope leaking from autoloader 2018-04-13 10:32:08 -04:00
Radosław Kowalewski
15c1a82d8c Few fixes to make tests pass on windows
* changed / to DIRECTORY_SEPARATOR in expected messages
* cahnged most occurences PHP_EOL to "\n" in tests and src
* added output buffering in test to avoid marking test as risky
2018-04-12 22:41:13 -04:00
Radosław Kowalewski
0ea053bda1 Fix detecting relative paths on windows
Fixes vimeo/psalm#655
2018-04-12 16:08:50 -04:00
Matthew Brown
f9b6027bbc Fix relative path includes on windows 2018-04-11 20:56:11 -04:00
Matthew Brown
1d6e75b06e Fix #662 - allow callable void return types to be widened 2018-04-11 20:29:16 -04:00
Matt Brown
e58274acaa Fix #665 - callmap for SplFileObject::fgetcsv 2018-04-11 15:11:14 -04:00