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

2201 Commits

Author SHA1 Message Date
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