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

2593 Commits

Author SHA1 Message Date
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
Matthew Brown
bc23f732a4 Fix #905 - ignore interface case when checking for extended interfaces 2018-07-21 20:38:55 -04:00
Matthew Brown
79d547d0a0 Add support for second dirname arg
Fixes #900
2018-07-21 20:22:42 -04:00
Matthew Brown
c97329da06 Fix #903 - make sure parent::foo is executed in context of method’s class
and not immediate parent
2018-07-21 20:01:58 -04:00
Matt Brown
ad3e449982 Allow rescanning of classes when we need more info 2018-07-18 11:44:01 -04:00
Matthew Brown
2af7ea05da Fix #897 - understand static class comparisons in is_a 2018-07-17 22:50:30 -04:00
Matt Brown
6a06f06044 Improve API for disabling extensions and disable apc as well 2018-07-17 16:40:03 -04:00
Matt Brown
516b2eea5d Fix SoapClient::__call param type 2018-07-17 14:16:22 -04:00
Matt Brown
73aa0df08a Restart without grpc if running in threaded mode 2018-07-17 14:08:40 -04:00
Matthew Brown
9a9adf897d Fix #896 - improve ReflectionParameter::getType return 2018-07-17 08:45:42 -04:00
Matthew Brown
0fa7cbeb02 Fix #895 - check __call magic method args 2018-07-16 22:48:53 -04:00
Matthew Brown
39870f97c4 Fix #894 - check magic methods with given return types 2018-07-16 20:32:16 -04:00
Matt Brown
92aa3f8117 Fix dumb regression 2018-07-16 16:07:18 -04:00
Matt Brown
b80440f1e3 Fix #893 - improve error message for missing intersection type method 2018-07-16 11:52:38 -04:00
Matthew Brown
95b9b8b51e Remove PHP 5-incompatible things from SimpleNameResolver 2018-07-16 00:03:03 -04:00
Matthew Brown
e836f69ca2 Fix #502 - check for bad generator return in more places 2018-07-15 17:47:58 -04:00
Matthew Brown
1e54c61fde Fix #18 - add support for @psalm-type 2018-07-15 17:23:17 -04:00
Matthew Brown
f9ba8d7167 Fix #573 - improve required param message 2018-07-13 20:17:29 -04:00
Matthew Brown
fee705f90c Fix #489 - support @psalm-template 2018-07-13 19:09:35 -04:00
Matthew Brown
91f7cdf134 Fix #890 - improve reporting site for some method issues 2018-07-13 18:47:21 -04:00
Matthew Brown
1589b2a01e Fix #269 - allow trigger_error to count as exit statement 2018-07-13 18:36:25 -04:00
Matthew Brown
4172952e8b Fix #306 - add support for typing generators 2018-07-13 17:34:44 -04:00
Matthew Brown
a8a504c3b9 Fix #889 - allow variables defined in try to avoid isset issues 2018-07-13 14:06:01 -04:00
Matthew Brown
677e6edcb1 Fix nullref 2018-07-13 09:58:35 -04:00
Matthew Brown
3a235ad757 Fix #887 - resolve get_class($c) === self::class to current class name 2018-07-13 09:52:15 -04:00
Matthew Brown
d41a9a8dcc Fix #806 - allow specification of functions and static methods that exit 2018-07-12 23:26:08 -04:00
Matthew Brown
5ea8b86b7c Resolve as many names as possible in the parsing stage 2018-07-12 21:25:06 -04:00
Matt Brown
7713c7a8d6 Use continue 2 in place of continue 2018-07-12 18:04:05 -04:00
Matt Brown
f6b15a4a5a Fix #847 - only warn about LessSpecificReturnType when method is not overridden 2018-07-12 16:57:24 -04:00
Matt Brown
4f9d4b7094 Fix #885 - allow suppression of UndefinedMethod at method level 2018-07-12 12:12:28 -04:00
Matt Brown
c2bc8bde55 Fix #866 - prevent false positive inside do 2018-07-12 12:08:15 -04:00
Matt Brown
c498356f9d Fix property map for static call prop 2018-07-11 13:01:03 -04:00
Matt Brown
8b3fa21b41 Fix #884 - don’t error on static calls that aren’t user defined 2018-07-11 12:05:50 -04:00
Matt Brown
42e1090647 Add support for static method call assertions 2018-07-11 11:32:12 -04:00
Matt Brown
661803a020 Fix #883 - add @psalm-assert-if-true support to methods 2018-07-11 11:22:07 -04:00
Matt Brown
0ef71a49cb Fix #882 - allow STDOUT and STDERR as constants 2018-07-10 17:40:34 -04:00
Tyson Andre
66f6d4b1ea Allow empty default of 0 for optional parameter in magic method (#880)
Fixes #879

`!= ''` will reject both null and '', but not `0`
2018-07-10 16:01:44 -04:00
Matt Brown
5bb5bb2476 Check this properties for redundant conditions 2018-07-10 12:32:53 -04:00
Matthew Brown
21001668df Don’t double-quote string 2018-07-10 00:39:33 -04:00
SignpostMarv
3eb027d371 875 addendum (#876)
* testing port

* testing return values with port

* removing redundant assertions

* forgot to return ¬_¬

* Fix build
2018-07-10 00:08:53 -04:00
Matt Brown
166706a35d Fix #875 - improve return types for parse_url 2018-07-09 14:37:14 -04:00
Matt Brown
bbf48bbdfe Fix #873 - allow unpacking of all iterables 2018-07-09 09:59:51 -04:00
Matthew Brown
3b12ce4a31 Fix #874 - add support for is_iterable 2018-07-09 08:31:43 -04:00
Matthew Brown
cd4bb75d80 Fix #871 - handle gettimeofday args 2018-07-07 20:35:24 -04:00
Matthew Brown
0d62431cfb Fix #870 - improve magic method type handling 2018-07-07 00:06:05 -04:00
Tyson Andre
a3b1bebb5b Fix misuse of preg_quote (#869)
1. Variable ids can contain slashes or dots, e.g. for `${'my/var'} = 2`
   or psalm's local representation of properties or array indexes
   (I forget which)
2. preg_quote's escape character should **always** be the same as the
   pattern starting character.
   Using DIRECTORY_SEPARATOR will fail to escape '/' on windows.
2018-07-06 19:16:31 -04:00
Matt Brown
e62b711c36 Fix docblock 2018-07-06 14:14:24 -04:00
Matt Brown
a887d09ca9 Fix #867 - make some system constant types more broad 2018-07-06 13:35:36 -04:00
Matt Brown
7e09f59825 Fix #868 - improve return type of version_compare 2018-07-06 13:09:05 -04:00
Matthew Brown
ced0aef34d Clean out assertions before re-examining loop 2018-07-06 00:36:11 -04:00
Matthew Brown
8a4d7e12bd Fix issues found by scanning PHPCS 2018-07-05 23:02:09 -04:00
Matthew Brown
c4fd6aa18d Allow break/continue inside do 2018-07-05 21:03:44 -04:00
Matthew Brown
8bdeb5ed65 Fix #864 - only create intersection types when dealing with classes & interfaces 2018-07-05 19:46:33 -04:00
Matt Brown
71b2420c83 Fix #865 - support literals in return types 2018-07-05 17:25:26 -04:00
Matt Brown
af14d6982f Fix #863 - MixedTypeCoercion is more appropriate in many cases 2018-07-05 10:11:04 -04:00
Matthew Brown
5cb23b7f47 Always scan class if autoloaded from same location 2018-07-04 15:33:48 -04:00
Matthew Brown
6090355241 Add possible fix for unevaluated classlikes 2018-07-04 14:32:58 -04:00
Matthew Brown
7d747be5d5 Fix checks for possibly null right part of binary op 2018-07-03 19:52:40 -04:00
Matt Brown
b8636eb326 Improve memoisation of chained calls 2018-07-03 12:45:29 -04:00
Matt Brown
534876085d Fix #857 - improve handling of hard-to-reconcile while conditionals 2018-07-03 12:27:14 -04:00
Matt Brown
4a4d091c02 Fix #858 - scan files before autoloading them 2018-07-03 11:17:52 -04:00
Matthew Brown
ec1f7ba7be Add exception for case that shouldn’t appear 2018-07-03 08:09:00 -04:00
Matthew Brown
5623aa1c19 Don’t memoise assertions - it messes with trait analysis 2018-07-03 00:51:57 -04:00
Matthew Brown
5860fcf59d We can reason about ORed conditions in while loops now 2018-07-02 23:46:51 -04:00
Matthew Brown
76e369d330 Allow multiple matching types to be captured in if 2018-07-02 22:53:17 -04:00
Matthew Brown
c354a024d8 Fix #856 - perform better class filtering based on parent classes 2018-07-02 21:59:40 -04:00
Matt Brown
6287f52dd5 Fix loop analysis for byref vars, likely performance hit 2018-07-02 16:44:32 -04:00
Matthew Brown
16e270f0ee Improve loading of stub file and autoload file information
Ref #849
2018-06-30 15:29:37 -04:00
Matthew Brown
745acaea71 Allow bracketing as part of union type
Ref #854
2018-06-30 13:09:05 -04:00
Matthew Brown
bca3b1797c Fix #852 - improve handling of variables updated in do conditional 2018-06-30 12:56:42 -04:00
Matthew Brown
5ed062257b Allow dead code detection to capture last do checks 2018-06-30 11:08:51 -04:00
Matthew Brown
6267fa7d1d Fix #850 - allow is_numeric to refine scalar type 2018-06-30 10:52:45 -04:00
Matthew Brown
b5c89084fc Fix #851 - prevent null being removed in simplifyUnionType 2018-06-30 10:38:37 -04:00
Matt Brown
1ca5ef9bf7 Prevent duplicate classes in same file 2018-06-29 15:39:17 -04:00
Matt Brown
7dc982138d Fix possibly null DuplicateClass issue 2018-06-29 15:31:17 -04:00
Matt Brown
89cc63846f Improve handling of autoloaded files
Fixes #848
2018-06-29 15:28:45 -04:00
Matthew Brown
c1052c0a6a Only create intersections for types that don’t contain each other 2018-06-29 00:49:46 -04:00
Matt Brown
5f251a9d88 Allow intersection creation of interface then class 2018-06-28 18:13:06 -04:00
Matt Brown
c872f9179e Remove mixed in @method param types 2018-06-28 17:39:25 -04:00
Matt Brown
2fc816a6e1 Fix repeated use of spread operator 2018-06-28 17:05:50 -04:00
Matt Brown
376c3c54c0 Add better checks for array_reduce
Fixes #846
2018-06-28 16:01:53 -04:00
Matthew Brown
ce1fda46a6 Fix hard-to-resolve constant values 2018-06-27 21:53:25 -04:00
Matt Brown
2c4b8e8ce3 Fix division-by-zero error
Fixes #844
2018-06-27 13:41:50 -04:00
Matt Brown
192d7769bd Fix #843 - make FilesystemIterator::current more general 2018-06-27 12:04:24 -04:00
Matt Brown
72b110af3f Analyse RHS of instanceof expressions if expression 2018-06-27 10:07:40 -04:00
Matthew Brown
685ae67435 Fix #839 - check args for __call methods 2018-06-26 23:11:16 -04:00
Matthew Brown
5867ef45ff Check method args even if the methods themselves cannot be checked 2018-06-25 19:38:15 -04:00
Matt Brown
ffda44c3ba Fix #838 - check assertions, even outside conditionals 2018-06-25 18:02:05 -04:00
Matt Brown
f2d96eefe7 Fix #837 - detect issues with constants 2018-06-25 15:03:45 -04:00
François Kooman
83dd5a9418 fix return value of ldap_explode_dn (#835) 2018-06-25 14:53:09 -04:00
Matthew Brown
23e90edc50 Fix SplFixedArray::__construct first arg can be left out 2018-06-25 00:03:09 -04:00
Matthew Brown
e1d922e9df Add support for ignoredExceptions 2018-06-22 01:26:10 -04:00
Matthew Brown
e3ae1bf26f Fix #15 - check for uncaught throws if config flag is set 2018-06-22 01:13:49 -04:00
Matt Brown
dcc2c7671e Fix callmap regressions cc @jaydiablo 2018-06-20 15:41:09 -04:00
Matt Brown
ae5ff1abad Improve callmap from Phan thanks to @ondrejmirtes 2018-06-20 13:55:14 -04:00
Matt Brown
740279352e Fix #830 - unpack template param args appropriately 2018-06-20 10:40:50 -04:00
Matthew Brown
4688cf7a92 Fix #831 - ignore falsable issues when getting callmap function params 2018-06-20 09:09:03 -04:00
Matt Brown
e10b2c0fd4 Fix #805 - allow dead code detection from methods just called internally 2018-06-19 16:14:51 -04:00
Matt Brown
f7845616b6 Allow SplFileObject::current to return false 2018-06-19 14:06:20 -04:00
Matt Brown
11240eb193 Fix #826 allow better template replacements 2018-06-19 13:19:41 -04:00
François Kooman
89f78befa7 glob can return false (#828) 2018-06-19 10:15:05 -04:00
Matt Brown
2be0f68d87 Add better checks on increment/decrement operators 2018-06-18 13:16:51 -04:00
Matt Brown
75e2be8aec Fix #825 - ignore falsable issues on builtin *methods* 2018-06-18 10:07:05 -04:00
Matthew Brown
d4107f9e5e Fix issue erasing nullability of boolean 2018-06-17 13:47:31 -04:00
Matthew Brown
2c245b0a08 Fix #823 - trigger redundant condition on impossible assertions 2018-06-17 13:20:37 -04:00
Matthew Brown
5ddd74e7d2 Catch unused foreach key when it’s already in scope 2018-06-17 00:52:32 -04:00
Matthew Brown
805bfa6f2d Improve handling of switch statement assignments 2018-06-17 00:12:26 -04:00
Matthew Brown
89affb6c2c Fix #822 - improve dead code detection on assignop expressions 2018-06-16 23:40:25 -04:00
Matthew Brown
fa51c39902 Improve dead code analysis of switch statements 2018-06-16 21:54:44 -04:00
Matthew Brown
f38da967dd Fix a few issues with dead code detection 2018-06-16 21:14:19 -04:00
Matthew Brown
3670f066bb Improve dead code detection 2018-06-16 20:01:41 -04:00
Matt Brown
3afd6053fd Fix #819 - only add is_a assertion if static::class known 2018-06-15 10:51:30 -04:00
François Kooman
1d8799ce70 fix PDOStatement::fetchColumn, can also return false (#821) 2018-06-15 10:51:00 -04:00
Matt Brown
47a40b2ffc Fix #817 - allow methods named "global" in @method annotations 2018-06-14 17:20:02 -04:00
Matt Brown
7fb4c4acad Allow 0 in type 2018-06-14 15:58:49 -04:00
Matt Brown
d56dd6bed6 Fix #818 - prevent class of 0 2018-06-14 13:49:16 -04:00
Matthew Brown
dc02ca8a7a Fix - #816 - check we’re not just replacing a key with itself 2018-06-13 08:38:07 -04:00
Matt Brown
45a94af015 Fix #814 - remove literal types when removing base key 2018-06-12 11:19:35 -04:00
Matthew Brown
3891b08fc2 Fix #812 - deal with errant colon without crashing 2018-06-12 09:11:13 -04:00
Matt Brown
54893fdd55 Fix #808 - detect badly-placed ampersand early 2018-06-11 17:23:28 -04:00
Matt Brown
6542a0a784 Fix #810 - convert void array map return to null 2018-06-11 17:00:26 -04:00
Matt Brown
d35a3996fa Fix #811 - improve handling of closure vars 2018-06-11 16:54:20 -04:00
Matthew Brown
26fa003fe2 Revert "Convert mixed return types to empty string for compactness"
This reverts commit 94ecbc113a to maintain compatibility with Phan cc @TysonAndre
2018-06-10 15:41:04 -04:00
Matthew Brown
58f16f0d58 Add changes from Phan 2018-06-10 11:31:59 -04:00
Matthew Brown
94ecbc113a Convert mixed return types to empty string for compactness 2018-06-10 11:30:31 -04:00
Matthew Brown
04758a48c6 Remove never-used function 2018-06-10 10:49:51 -04:00
Matthew Brown
3a2fa99969 Improve coverage of Reconciler and fix issues with float type comparison 2018-06-10 10:48:19 -04:00
Matthew Brown
82715a03ea Improve test coverage of PropertyAssignmentChecker 2018-06-10 10:02:46 -04:00
Matthew Brown
d47980df13 Fix #416 - make sure trait methods are treated better by dead code detection 2018-06-09 23:10:42 -04:00
Matthew Brown
04cc920101 Fix #378 - improve handling of InvalidScope 2018-06-09 11:50:17 -04:00
Matthew Brown
eae563e9e4 Fix space after function 2018-06-09 10:51:02 -04:00
Matthew Brown
7a02d300d6 Fix closure return type 2018-06-09 10:23:04 -04:00
Matthew Brown
6d4d0cf825 Fix #794 - use template types to restrict input 2018-06-09 10:14:18 -04:00
Matthew Brown
3a3c10d044 Improve handling of ? before type 2018-06-08 23:54:07 -04:00
Matthew Brown
068dc50b21 Fix #792 - allow docblock array form of variadic arg 2018-06-08 21:18:49 -04:00
Matthew Brown
a2b1838e23 Fix #803 - trait methods are evaluated correctly now 2018-06-08 20:06:05 -04:00
Matt Brown
29a971d40e Fix #793 - make sure in_array informs literal types 2018-06-08 13:53:42 -04:00
Matt Brown
091fa53c72 Fix #798 - update magic property handling so it corresponds to PHP behaviour 2018-06-08 11:08:57 -04:00
Matthew Brown
dfc32216b3 Fix #800 - treat array access offsets as mixed for reconciliation purposes 2018-06-08 09:31:21 -04:00
Matthew Brown
c1586ee347 Remove union types in magic methods for now 2018-06-07 19:56:28 -04:00
Matt Brown
6873e60847 Optimise flow of if evaluation 2018-06-07 15:04:22 -04:00
Matt Brown
5819ba2b67 Fix #801 - bust assertions on assignment in || op 2018-06-07 15:04:22 -04:00
Matt Brown
f030f4f40d Allow docblock types to be merged with param default ones 2018-06-07 12:23:21 -04:00
Matthew Brown
fb3bc2661e Fix #797 - check backup included file for defined function 2018-06-06 21:47:26 -04:00
Matt Brown
7c2ec06de8 Fix #795 - don’t use colons in generated anonymous class name 2018-06-06 15:32:03 -04:00
Matthew Brown
ea4dc9f2b8 Improve simplexml function inference 2018-06-05 23:42:02 -04:00
Matthew Brown
952bc9bdfd Fix #84 - add pattern matching for files as well as directories 2018-06-05 20:15:18 -04:00
Matt Brown
51e7042022 Fix #789 - allow union types in @method params 2018-06-05 17:59:32 -04:00
Matt Brown
e53783f8f4 Add an option to hide code snippets 2018-06-04 10:19:20 -04:00
Matthew Brown
53bfafa02a Make sure that ignoreFiles files never appear in errors 2018-06-04 00:15:28 -04:00
Matthew Brown
5ea7196d3f Skip bad param type in @method docblock 2018-06-03 22:13:19 -04:00
Matthew Brown
a20bdaef45 Fix issue evaluating negated assertion 2018-06-03 20:24:23 -04:00
Matthew Brown
b5cb2b34a2 Fix #380 - don’t complain about legitimate (if archaic) self calls 2018-06-03 19:11:07 -04:00
Matthew Brown
e18b3699a6 Fix return type 2018-06-03 18:34:25 -04:00
Matthew Brown
6bfde90db4 Improve Psalm type inference summary to include required files 2018-06-03 18:31:43 -04:00
Matthew Brown
b47d732993 Fix to support PHP Parser 4.0.2 2018-06-03 10:05:50 -04:00
Matthew Brown
8107587929 Always hoist constants if in config 2018-06-03 09:13:14 -04:00
Matt Brown
033bf3db16 Add IssetTest 2018-06-01 11:16:42 -04:00
Matt Brown
9bbe437f22 Fix issue with initially undefined variable in isset 2018-06-01 10:52:26 -04:00
Matthew Brown
55fdef250e Add config to allow hoisting constants to the top of a file 2018-06-01 09:07:22 -04:00
Matthew Brown
ccc0c3f7d8 Fix negation of @psalm-assert-if-true/false 2018-05-31 22:46:22 -04:00
Matthew Brown
4ab15067de Speed up unnecessary else checks 2018-05-31 22:20:38 -04:00
Matthew Brown
ee9fef050a Add support for function checking plugins 2018-05-31 22:00:11 -04:00
Matthew Brown
dda9b4e48c Fix #783 - allow ternarys to declare vars 2018-05-31 22:00:11 -04:00
Bruce Weirdan
6ecea35837 array_column return type inference (#787)
* Exception message typo fixed

* array_column return type inference

It takes a safe approach and only tries to be smart when array row type
is definite single shape

* cs fix
2018-05-31 21:14:06 -04:00
Matt Brown
c31d963918 Allow constants in array offsets to be reasoned about 2018-05-31 16:49:01 -04:00
Matt Brown
ef992612d9 Fix $_SERVER var reconciliation 2018-05-31 15:30:39 -04:00
Matt Brown
2b697a34f8 Fix #786 - improve treatment of array isset checks 2018-05-31 15:07:03 -04:00
Jay Klehr
cabc818e1a Fixing mysqli callmap (#784) 2018-05-31 09:50:03 -04:00
Matthew Brown
258e862c92 Only assign global vars to mixed if they don’t already exist 2018-05-31 09:02:57 -04:00
Matthew Brown
72f65cf544 Fix global tests 2018-05-30 22:56:46 -04:00
Matthew Brown
6b8e019a07 Bleed global variables declared in functions into main context 2018-05-30 22:09:46 -04:00
Matthew Brown
df89c8d7f2 Fix variadic check for included file functions 2018-05-30 21:01:50 -04:00
Matthew Brown
33a38113f3 Fix isset check 2018-05-30 20:54:03 -04:00
Matt Brown
eb10b15cfc Improve reliability of elseif resolution 2018-05-30 18:56:44 -04:00
Matt Brown
549e90eca4 Treat required files the same as the files that require them, reporting-wise 2018-05-30 16:19:18 -04:00
Matt Brown
4fb6bbf5ee Prevent clause size from ballooning 2018-05-30 13:57:45 -04:00
Matt Brown
1462020cd4 Properly analyse nested traits 2018-05-30 13:08:56 -04:00
Matt Brown
68dbe509a8 Fix #731 - report issues in files required by the source 2018-05-30 12:23:53 -04:00
Matt Brown
9227e61097 Fix #715 - no redundant condition for is_a(self::class,...) checks inside trait 2018-05-30 10:13:55 -04:00
Matthew Brown
1a4891c2e0 Fix #781 - prevent DuplicateArrayKey warning unnecessarily 2018-05-30 07:42:00 -04:00
Matt Brown
14f3f7a998 Fix #763 - always force rescanning of files if issues were found first time around 2018-05-29 10:13:26 -04:00
Matt Brown
d55afc1fb1 Fix #779 - allow docblock to take on nullablility of typehint 2018-05-29 09:44:38 -04:00
Tyson Andre
39a1ecfd89 Remove unused variables (#777) 2018-05-29 10:08:56 +01:00
Matthew Brown
81ae1ca222 Fix #747 - allow Generator to replace Traversable in templated params 2018-05-28 22:26:43 +01:00
Matthew Brown
aac01f0670 Fix #766 and fix #765 - improve handling of ^ and xor 2018-05-28 20:31:20 +01:00
Matthew Brown
d98261507f Fix #769 - add @psalm-assert and @psalm-assert-if-true annotation support 2018-05-28 20:07:42 +01:00
Matthew Brown
62486c1adb Fix #772 - allow closures to be defined on a single line 2018-05-25 18:42:39 +01:00
Matt Brown
086b6d0372 Seal the output of switch statments 2018-05-24 14:26:29 -04:00
Matt Brown
772fd496b7 Fix issue with array_key_exists not having an effect 2018-05-24 12:23:50 -04:00
Matthew Brown
c8faaf0ca9 Remove unused vars 2018-05-23 21:27:01 -04:00
Matthew Brown
e61ba336be Rewrite ifs as big switch 2018-05-23 21:17:14 -04:00
Matthew Brown
c217849737 Improve handling of projects that use include/require heavily 2018-05-22 23:39:01 -04:00
Matt Brown
9de5e1406d Fix class casing issue when scanning ::class constants 2018-05-22 11:59:57 -04:00
Matt Brown
056194bde5 Fix issues that cause exceptions 2018-05-21 18:33:39 -04:00
Matt Brown
5007a3a3b6 Only scan user-defined constructors for property initialisations 2018-05-21 13:06:11 -04:00
Matt Brown
a30d229040 Fix issue with slashes after ? in type 2018-05-21 12:55:44 -04:00
Matt Brown
aebbd473d9 Fix issues reconciling class-string params to actual types 2018-05-21 12:40:39 -04:00
Matthew Brown
228337415b Fix #761 - add support for class constants in enums 2018-05-21 00:46:56 -04:00
Matthew Brown
19ca1c9311 Suppress enum redundant conditions too 2018-05-20 18:58:34 -04:00
Matthew Brown
3805893c5a Improve error messages for literal types 2018-05-20 17:43:02 -04:00
Matthew Brown
38252689b9 Remove typehints 2018-05-20 17:31:04 -04:00
Matthew Brown
6250c2a14c Fix #16 - add support for enums 2018-05-20 17:19:53 -04:00
Matthew Brown
a3e2b98f7c Fix #743 - put InvalidArgument messages before PossiblyFalseArgument 2018-05-20 13:14:31 -04:00
Matthew Brown
cdcba6152d Add ability to infer return type for method calls 2018-05-20 12:47:26 -04:00
Bruce Weirdan
be522c623e Updated MessageFormatter (ICU) signatures (#759)
Manual update of MessageFormatter methods signatures, based on PHP.net
docs
2018-05-20 11:33:16 -04:00
Matthew Brown
5bd9ba6207 Make TClassString inherit from TLiteralString 2018-05-20 00:27:53 -04:00
Matthew Brown
34a39b895c Support checks for array emptiness 2018-05-19 20:31:48 -04:00
Matthew Brown
ea465852e1 Move TypeCombination logic into its own class 2018-05-19 19:44:03 -04:00
Matthew Brown
09eb316a9c Fix #755 - add support for inferring explicit true checks 2018-05-19 00:41:07 -04:00
Matt Brown
f2a70fef85 Fix #745 - give iterator_to_array back its type info 2018-05-18 18:10:10 -04:00
Matt Brown
c6aa396dea Fix #741 - make sure closures are cloned properly 2018-05-18 17:47:40 -04:00
Matthew Brown
b0733254bb
Use individual type objects for each string (#757)
* Experiment with individual types for each string

* Fix bunch of errors

* Fix a few more issues

* Fix a whole bunch of bugs

* Fix most remaining bugs

* Fix isset warnings

* Fix psalm errors in psalm

* Limit big string size

* Fix falsiness of ints

* Fix issue with type widening, allowing value set in nested if to be altered

* Don’t complain if type is mixed

* Add skipped-for-now test

* Add specific test to address issue
2018-05-18 11:02:50 -04:00
Jay Klehr
80b6347a72 Updating openssl callmaps to reflect php documentation 2018-05-18 10:46:38 -04:00
Matthew Brown
ec381308dd Fix #753 - prevent some strings from becoming literals 2018-05-17 01:46:01 -04:00
Matt Brown
3263b64301 Filter conditions better when encountering parent instanceof 2018-05-16 11:47:39 -04:00
Matt Brown
3119a1f68a Allow resolution of class constants in const arrays 2018-05-14 17:39:08 -04:00
Matt Brown
a0281e5716 Improve clause eradication after ifs 2018-05-14 16:29:51 -04:00
Matt Brown
02c72f6de5 Fix buggy if checks 2018-05-14 12:25:58 -04:00
Matt Brown
02d65b617b Allow weak comparison between floats and ints 2018-05-14 12:02:06 -04:00
Matt Brown
58c68c355e Allow weak equality between scalar types 2018-05-14 10:36:41 -04:00
Matthew Brown
af8705502e Improve impossible case location reporting 2018-05-13 22:31:45 -04:00
Matthew Brown
557c3ddace Limit to the case condition 2018-05-13 22:25:08 -04:00
Matthew Brown
05c3d1ab03 Improve reporting of duplicate case statements 2018-05-13 22:02:10 -04:00
Matthew Brown
5c1726cece Fix return type of ReflectionParameter::getDefaultValue
Fixes #739
2018-05-13 19:35:57 -04:00
Matthew Brown
c00fdd0fe3 Add better type inference for next and prev
Fixes #738
2018-05-13 19:20:05 -04:00
Matthew Brown
d46997b196 Make sure weak equality clauses don’t generate ParadoxicalCondition 2018-05-13 01:27:45 -04:00
Matthew Brown
9f28be415a Fix reconciliation of ored types 2018-05-13 00:54:12 -04:00
Matthew Brown
69338abf7c Allow rough equality assertions to be negated too 2018-05-12 20:08:22 -04:00
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
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
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
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
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
Matt Brown
6e6ae7aaa6 Only complain about redundant conditions when check_variables is true 2018-04-11 14:37:01 -04:00
Matt Brown
6426dbbf0e Propagate array key updates after assertions to base array 2018-04-11 14:19:42 -04:00
Matt Brown
fe46e4e63d Make tests a bit more specific 2018-04-10 15:47:04 -04:00
Matt Brown
8faa36c1cf Improve closure type checking 2018-04-10 15:41:57 -04:00
Matt Brown
c721a7085a Remove blank line 2018-04-10 14:03:36 -04:00
Matt Brown
fe033f1b6c Fix #663 - infer array return types for closures 2018-04-10 13:05:31 -04:00
Matt Brown
9bdf9eefd3 Revert changes to sorting, force int return types for comparison functions 2018-04-10 12:38:29 -04:00
Matthew Brown
f15c26d7f4 Change how type impossibilities are treated to improve message types 2018-04-10 01:27:26 -04:00
Matthew Brown
5915718013 Fix #660 - always refer closure types 2018-04-09 22:00:36 -04:00
Matthew Brown
5f47374606 Fix indentation 2018-04-09 21:50:38 -04:00
Matt Brown
7640b00635 Only check functionlike arguments match if we know params 2018-04-09 18:49:11 -04:00
Matt Brown
47255fb19b Fix array key check after direct assignment 2018-04-09 18:02:45 -04:00
Matt Brown
d3fa972fab Fix uksort signature too 2018-04-09 16:55:29 -04:00
Matt Brown
7a7bc26ccd Allow custom sorting methods to only return true/false 2018-04-09 16:54:04 -04:00
Matt Brown
6eabdf326d Fix display of closure objects 2018-04-09 16:45:54 -04:00
Matt Brown
2b9a2d36cf Don’t allow non-existent vars to be overridden 2018-04-09 14:32:22 -04:00
Matt Brown
af63d28b56 isset always returns bool 2018-04-09 10:20:18 -04:00
Matt Brown
cf6326f5e6 Fix #658 - empty always returns bool 2018-04-09 10:19:23 -04:00
Matthew Brown
bf7bf1ab3c Make pcntl_signal sig clearer 2018-04-08 13:08:28 -04:00
Matthew Brown
0b95f1017e Fix issues with callmap callable types 2018-04-08 12:57:56 -04:00
Matthew Brown
7e3a1ec9c3 Add support for checking callable/closure param types
Fixes #580
2018-04-08 12:03:35 -04:00
Matthew Brown
3f4083eac8 Remove blank line 2018-04-08 10:26:04 -04:00
Matthew Brown
797cab22f8 Fix support for Closure(int):int annotation 2018-04-08 10:02:41 -04:00
Matthew Brown
3fe9a0606e Fix #654 - warn about MixedArgument when inferredType property does not exist
And handle str_replace more leniently when args unknown
2018-04-07 15:16:46 -04:00
Matthew Brown
0f0f405b9f Allow mixed property assignment when the user wants it
Fixes #652
2018-04-07 12:13:30 -04:00
Matthew Brown
3771ea206c Fix #648 - stop scanning when encountering a duplicate class 2018-04-07 11:38:41 -04:00
Matt Brown
60c6bb4021 Fix #650 - be more judicious about inserting mixed into places 2018-04-06 18:28:22 -04:00
Matt Brown
c932ed7764 Fix #651 - allow Psalm to understand assertions on properties of array objects 2018-04-06 16:23:10 -04:00
Matt Brown
6abbc23947 Catch type exception when fixing local type 2018-04-05 17:18:49 -04:00
Matt Brown
81f167df65 Remove bad semicolon 2018-04-05 14:40:41 -04:00
Matt Brown
e97750c761 Check for empty values properly
Ref #647
2018-04-05 14:28:33 -04:00
Matt Brown
6d572096d6 Prohibit bad characters from types 2018-04-05 14:11:57 -04:00
Matt Brown
4927dfd337 Fix issue with InvalidArrayOffset from falsable 2018-04-05 13:57:01 -04:00
Matt Brown
0b268eb602 Allow scalars to be empty 2018-04-05 12:11:58 -04:00
Matt Brown
24f307d568 Fix #645 - add isa- prefix for strings as well as class constants 2018-04-05 12:03:36 -04:00
Matthew Brown
78d5adb17d Make key work with typed arrays 2018-04-05 00:21:14 -04:00
Matt Brown
1282f74931 Allow coercion from generic array to objectlike with possible keys 2018-04-04 18:01:53 -04:00
Matt Brown
4065fa894f Add numeric to Psalm reserved types 2018-04-04 14:42:23 -04:00
Matt Brown
b4fba8f805 Allow capitalised reserved words 2018-04-04 12:39:05 -04:00
Matthew Brown
03b3a764e3 Fix #641 - allow is_a to operate on strings as well 2018-04-03 23:14:23 -04:00
Matthew Brown
4552e69ef2 Allow classes to be instantiated by their name only
Ref #641
2018-04-03 22:20:00 -04:00
Matt Brown
f679900028 Remove aggregate_* methods c/o @weirdan 2018-04-03 11:55:13 -04:00
Scott
35ca719c07 Fix callmap for ext/hash fucntions
Fixes #627 -- until PHP < 7.2 support can be dropped, we need to be able to resolve `resource` or `HashContext`.
2018-04-03 11:53:02 -04:00
Jon Ursenbach
f51a5f79ed pow() accepts int|float, not just float. 2018-04-03 11:52:38 -04:00
Matt Brown
fef56c7633 Fix #639 - add scalar to psalm-recognised types 2018-04-03 11:24:23 -04:00
Matthew Brown
1395299e28 Fix #637 - allow int|string array key types to be compared to mixed 2018-04-02 22:40:29 -04:00
Matthew Brown
4ff7db09f9 Fix var_export return type
Fixes #636
2018-04-02 22:19:58 -04:00
Matt Brown
734b6915db Fix #635 - type combinations should copy over possibly undefined flag 2018-04-02 14:36:33 -04:00
Matthew Brown
faa2d6f2e1 Fix #634 - prevent prefixing objectlike keys with namespaces 2018-04-02 00:39:59 -04:00
Matthew Brown
ef37f0cfe8 Fix #626 - check __invoke methods 2018-03-31 18:57:13 -04:00
Matthew Brown
ca8f2626a2 Remove extraneous function reflection 2018-03-30 20:08:12 -04:00
Matthew Brown
75e59f29ea Check as many autoloaded files as possible
and ignore reflected function docblocks - fixes #629
2018-03-30 20:03:56 -04:00
Matthew Brown
51055eb17e Add self and static to reserved word list 2018-03-30 19:20:38 -04:00
Matthew Brown
6a6d6465f5 Fix #619 - don’t use capitalised letters to discriminate classes 2018-03-30 19:04:21 -04:00
Matthew Brown
c8c216edb2 Fix #610 - add slightly hacky check for multiple callmap options 2018-03-30 18:51:59 -04:00