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

5030 Commits

Author SHA1 Message Date
Matthew Brown
a4add37293 Check for variadic functions 2020-03-16 11:46:44 -04:00
Matthew Brown
9556e9ad69 Disable enclosing method/function return type inference
cc @ragboyjr – this makes Psalm unstable, as method return types cannot change midway through analysis (as it means results would be dependent on file analysis order)
2020-03-16 11:45:49 -04:00
Matthew Brown
4232bfb6e6 Fix location 2020-03-15 23:29:52 -04:00
Matthew Brown
6c3ff8f245 Remove unused variable 2020-03-15 23:21:48 -04:00
Matthew Brown
a8a1142889 Fix #2977 - make MixedAssignment message a bit more clear, hopefully 2020-03-15 23:20:12 -04:00
Matthew Brown
c85fa9083d Fix #2915 - prevent "if (true)" and similar 2020-03-15 22:23:31 -04:00
Matthew Brown
50eb12e562 Fix implementation kink 2020-03-15 16:14:09 -04:00
Matthew Brown
3339c12179 Temp, slightly hacky fix 2020-03-15 16:00:15 -04:00
Matthew Brown
532ce576cc Fix #2974 - interpret interfaces a little better 2020-03-15 15:49:13 -04:00
Matthew Brown
b6380ae595 Fix false-positives around unevaluated code 2020-03-15 14:43:05 -04:00
Matthew Brown
6c7f89b0ab Fix #2920 - track unevaluated code after nested returns 2020-03-15 14:31:41 -04:00
Matthew Brown
af9e362c80 Fix indentation 2020-03-15 14:14:53 -04:00
Matthew Brown
73badf59d1 Fix #2925 - ignore null return type for array_replace_recursive 2020-03-15 14:07:55 -04:00
Matthew Brown
3ebb5a1142 Fix #1843 - ignore intersection TooManyArguments issues 2020-03-15 14:01:33 -04:00
Matthew Brown
0022de1f13 Fix #946 - allow too many arguments when one of union agrees 2020-03-15 13:44:00 -04:00
Matthew Brown
0af2eba4b9 Fix #2973 - don’t allow template type through 2020-03-15 11:14:06 -04:00
Matthew Brown
2c0cf4030f Detect assigning collections of mutable objects in immutable
Fixes #2946
2020-03-15 00:21:20 -04:00
Matthew Brown
43189b3d55 Allow types to be traversed 2020-03-14 23:54:51 -04:00
RJ Garcia
a220d08d9f
Refactor Codebase.php to use MethodIdentifier::wrap (#2972)
Signed-off-by: RJ Garcia <rj@bighead.net>
2020-03-14 19:10:20 -04:00
RJ Garcia
2de3e27f10
Initial inferred Closure Returns (#2945)
- Added detection for when we can infer
  closure types from parent fn return types
- Implemented functionality for infering types of
  returned closures
- Added ability to infer type of return from typed
  closures
- Added a new getFunctionLikeStorage method in
  Codebase to support easily getting a function
  despite being a method, closure, or function
- Added some utilities to the MethodIdentifier
  to facilitate creating MethodIdentifier's from
  string method references

Closes #2896

Signed-off-by: RJ Garcia <rj@bighead.net>
2020-03-14 14:51:43 -04:00
Matthew Brown
acac77b3f0 Improve message 2020-03-14 01:19:50 -04:00
Matthew Brown
0aca01faea Improve fix to #2805 2020-03-14 01:09:12 -04:00
Matthew Brown
aba29f0cbf Add slash 2020-03-13 20:28:32 -04:00
Matthew Brown
aaf74f084a Fix #2954 - filter out used vars before checking params 2020-03-13 20:21:49 -04:00
Kolja Zuelsdorf
08855c806f
Dont add newline before return (#2969)
* Added method to not add newline before return in docblock.

* Made setting of newline before return statically setable on docblock.

* Created psalter parameter for setting of newline before return in doc block annotation.

* Added tests to cover adding new line or not before return annotation in doc block via psalter.

* Psalm and style fixes.

* Changed flag for new lines between annotations to be considered for all annotations.

* Extended tests to reflect changed behavior for new lines between annotations in psalter.
2020-03-13 12:40:08 -04:00
Matthew Brown
54d38e562f Fix #2970 - use correct unreferenced vars when analysing do 2020-03-13 11:41:17 -04:00
Matthew Brown
92e3d61663 Fix differ 2020-03-12 21:40:45 -04:00
Matthew Brown
5210f9b69b Fix #2966 - register constructor use for new $templated_class 2020-03-12 11:42:01 -04:00
Matthew Brown
c6a5781e78 Break apart FunctionCallAnalyzer::analyze method 2020-03-12 11:05:50 -04:00
Matthew Brown
99ca359f8b Break apart large methods 2020-03-12 01:19:11 -04:00
Matthew Brown
96fbcd5a64 Break out more methods 2020-03-11 23:38:49 -04:00
Matthew Brown
329c9afdf5 Actually remove method 2020-03-11 23:20:19 -04:00
Matthew Brown
973703e396 Break out template param collection 2020-03-11 23:15:15 -04:00
Matthew Brown
9732697e45 Break out method call purity checks 2020-03-11 23:09:09 -04:00
Matthew Brown
bfb919d26a Break out methods into their own classes 2020-03-11 23:04:52 -04:00
Matthew Brown
321f1a5e2f Cache trait nodes 2020-03-11 22:14:21 -04:00
Matthew Brown
8f28f41399 Improve magic checks 2020-03-11 18:42:41 -04:00
Matthew Brown
950260a041 No erroneous UndefinedMethod when accessing sealed class 2020-03-11 18:27:07 -04:00
Matthew Brown
f128c8ffda Fix overriding of mapped property type visibility 2020-03-11 17:41:05 -04:00
Matthew Brown
a5cf4dbaaa Make exception properties protected 2020-03-11 15:43:15 -04:00
Matthew Brown
43d9361395 Break out more methods 2020-03-11 13:35:33 -04:00
Matthew Brown
89f6866893 Fix magic property test 2020-03-11 12:45:30 -04:00
Matthew Brown
50cddb5350 Break out purity checks 2020-03-11 12:24:25 -04:00
Matthew Brown
c5fa07920c Fix improper property var calculation
Ref #1332
2020-03-11 11:03:27 -04:00
Matthew Brown
ef64e6e8eb Improve abstract call handling 2020-03-11 10:36:39 -04:00
Matthew Brown
27598f508e Fix too-long line 2020-03-11 10:18:53 -04:00
Matthew Brown
0d62fbdf98 Detect erroneous abstract static method calls 2020-03-11 10:18:40 -04:00
Matthew Brown
d2950af636 Break apart MethodCallAnalyzer a bit 2020-03-11 09:38:09 -04:00
Matthew Brown
1dc26afb27 Fix #2958 - prevent overriding final methods 2020-03-10 21:26:02 -04:00
Brown
d1fcbf38ae Fix #2956 - treat Exception::getMessage as final and mutation-free 2020-03-10 15:12:55 -04:00
Brown
8527bb9861 Remove line in block 2020-03-10 13:29:39 -04:00
Brown
3cf562125e Fix #2953 - ignore carriage returns when when parsing docblocks 2020-03-10 13:28:42 -04:00
Brown
0cfe565d0a Fix #2952 - always be cloning 2020-03-09 18:59:56 -04:00
Brown
2a72990d62 Add back support for unused method checks 2020-03-09 18:55:35 -04:00
Brown
a5672db9f9 Avoid issue where caches haven’t caught up 2020-03-09 16:59:21 -04:00
Brown
1399b139fc Fix #2951 - use reflection to identify trait when there’s more than one per file 2020-03-09 16:41:46 -04:00
leightonthomas
60fb3924bc Fix #2914 - falsable functions who only expect true now produce errors 2020-03-09 14:25:18 -04:00
Brown
2c8688dd97 Don’t crash when conditionally defining classes with properties 2020-03-09 14:24:19 -04:00
Brown
04bcc32efb Fix #2940 - fix array offset assignment under ??= 2020-03-09 14:09:41 -04:00
Brown
aa8d7be6e2 Add implements DateTimeInterface
Fixes #2948
2020-03-09 10:58:32 -04:00
Brown
3c416482ec Fix #2932 - don’t crash when trying to expand callable object-like array 2020-03-09 10:56:37 -04:00
Brown
a0da7356e9 Fix #2935 - make handling of templated properties much less hacky 2020-03-09 09:59:02 -04:00
Brown
40a7a1156f Fix #2930 2020-03-09 09:45:35 -04:00
Matthew Brown
5b7ab6a542 Fix coercion 2020-03-09 01:32:27 -04:00
Matthew Brown
3243819f1b Fix #2941 - allow class-string<self> to be fleshed out 2020-03-09 01:29:16 -04:00
Matthew Brown
5b4ed6b516 Fix #2942 - support array_splice properly for numeric-keyed arrays 2020-03-09 01:15:52 -04:00
Matthew Brown
17afeae851 Fix support for bitwise or in constant expressions 2020-03-09 00:54:26 -04:00
Sergey Melesh
a5da866d97 Ignore exceptions already caught by previous catch 2020-03-08 20:19:56 -05:00
Ben Dusinberre
6d21520628 Remove --show-snippet support 2020-03-08 20:18:35 -05:00
Ben Dusinberre
ca2716878b Remove unused use statement 2020-03-08 20:18:35 -05:00
Ben Dusinberre
c6dfa2b5b0 Add XML encoding, fix up info level 2020-03-08 20:18:35 -05:00
Ben Dusinberre
9ca05fbfa8 Don't trim ints 2020-03-08 20:18:35 -05:00
Ben Dusinberre
605342119e Fix up element contents 2020-03-08 20:18:35 -05:00
Ben Dusinberre
3a5bc7d9c3 Keep incoming data structure 2020-03-08 20:18:35 -05:00
Ben Dusinberre
d5cd295e47 Honor show-snippet flag 2020-03-08 20:18:35 -05:00
Ben Dusinberre
2b17e8c39c Honor report-show-info flag 2020-03-08 20:18:35 -05:00
Ben Dusinberre
15ea7bf357 Remove the rest of the invalid attributes 2020-03-08 20:18:35 -05:00
Ben Dusinberre
783dbfae9c Remove duplicate testsuite element 2020-03-08 20:18:35 -05:00
Matthew Brown
0e60a1a223 Revert erroneous line 2020-03-06 19:31:39 -05:00
Matthew Brown
b999037263 Fix #2928 - properly expand out skipped template inheritance 2020-03-06 19:24:47 -05:00
Matthew Brown
352bd3f5c5 Remove redundant condition 2020-03-06 15:23:11 -05:00
Matthew Brown
766effb0db Improve accuracy of diff generation 2020-03-06 13:48:59 -05:00
Matthew Brown
f3d7ed6de7 Remove var_dump 2020-03-06 13:15:52 -05:00
Matthew Brown
7f9e6b893e Increase processor consumption 2020-03-06 13:13:18 -05:00
Matthew Brown
dc74f2b4de Add specific cast 2020-03-06 13:05:55 -05:00
Matthew Brown
10b807b4f6 Fix reference generation from methods in --diff mode 2020-03-06 13:02:34 -05:00
Matthew Brown
a2a507166d Fix #2923 - remove hack to fix a template issue 2020-03-06 09:42:23 -05:00
Matthew Brown
51bfc7c619 Only emit mixed issues for MissingClassPropertyType
Fixes #2388
2020-03-06 07:57:00 -05:00
Matthew Brown
7ea06c7b1a Only emit PossiblyUndefinedVariable issue on variables 2020-03-05 23:40:47 -05:00
Matthew Brown
75a3412a42 Downgrade error when using unknown variable in mixed method 2020-03-05 21:24:08 -05:00
Matthew Brown
b2678d40aa Revert "Fix #2909 - don’t treat args of unknown calls as possible by-reference vars"
This reverts commit 105fe012c4.
2020-03-05 21:10:29 -05:00
Brown
09137b0a32 Fix #2918 - fix contradiction issue with templated equality 2020-03-05 16:21:41 -05:00
Philip Hofstetter
ab9c82e251 mark ftp_close as impure
in theory, all ftp_* functions are impure, but not marking them
encourages the good practice of checking the return value.

However, ftp_close(), while it's possible for it to fail, what good
would checking the return type do? How is one supposed to handle the
failure to close a stream in a way that affects future program flow?
2020-03-05 15:37:08 -05:00
leightonthomas
06f7df9974 Fix #1799 - support trailing commas in type aliases 2020-03-05 15:36:28 -05:00
Matthew Brown
8a1067e4e6 Add more dobclocks types for scanning
Fixes #2907
2020-03-05 00:58:51 -05:00
Matthew Brown
105fe012c4 Fix #2909 - don’t treat args of unknown calls as possible by-reference vars 2020-03-04 23:49:06 -05:00
Matthew Brown
1615612394 Fix #2910 - prevent ternaries from ever being considered valid reference 2020-03-04 22:30:53 -05:00
Thomas Gerbet
b40403d7b0 \sodium_memzero() sets to null the value of the given reference
While it is not mentionned in PHP manual \sodium_memzero() always sets
the given parameter to null [0].

[0] cb933d63c2/ext/sodium/libsodium.c (L512)
2020-03-03 19:34:20 -05:00
Matthew Brown
0f5b0fd65d Fix location of traits 2020-03-02 23:07:21 -05:00
Matthew Brown
2cf2ead43b Remove stray comma 2020-03-02 22:30:06 -05:00
Matthew Brown
c0c878cc9d Don’t cache all traits 2020-03-02 22:27:54 -05:00
Brown
93d2d4d1a7 Add slash 2020-03-02 16:02:45 -05:00
Brown
86d52bbf4f Remove unused code 2020-03-02 15:49:05 -05:00
Brown
ceebc9e81d Only invalidate methods that call a removed trait 2020-03-02 15:26:57 -05:00
Brown
61ecd2a5fe Limit constructor check invalidation 2020-03-02 11:20:52 -05:00
Matthew Brown
d5186308d0 Fix #2859 - trim carriage returns where necessary 2020-03-01 17:48:44 -05:00
Matthew Brown
6129d533d8 Fix #2879 - rename stubs to prevent issues in PHPStorm 2020-03-01 17:28:51 -05:00
Matthew Brown
88c4088bc2 Prevent self/static refs outside classes
Fixes #2895
2020-03-01 17:25:55 -05:00
Matthew Brown
2e6fe993a8 Fix #2890 - phpstorm.meta.php scanner should be insensitive to method names 2020-03-01 17:11:44 -05:00
Matthew Brown
f44c3488eb Keep track of which arg a given template was assigned from
Fixes #2900 - We only care about the depth of a templated match when templating from a particular argument. The next argument should essentially start afresh
2020-03-01 12:27:18 -05:00
Jacob Dreesen
038e7c9ff8 Change return type of range() from array<int, ...> to list<...> 2020-03-01 10:56:27 -05:00
Matthew Brown
e0d555e203 Allow function names to passed in as strings for callable template resolution 2020-02-29 15:43:45 -05:00
Matthew Brown
ff9d774304 Mark storage as having docblock issues in more places
Ref #2891
2020-02-29 09:57:28 -05:00
Matthew Brown
2d6cf8a0b0 Get bindable params earlier, before replacing with extended ones 2020-02-27 23:10:26 -05:00
Matthew Brown
abb3800d20 Fix bad template replacement 2020-02-27 23:00:40 -05:00
Matthew Brown
39d6800531 Remove default 2020-02-27 21:54:19 -05:00
Matthew Brown
c565afde64 Fix method call after method_exists check 2020-02-27 21:46:58 -05:00
Matthew Brown
1f19aed31b Fix support for replacing mocked types in own classes 2020-02-27 21:36:03 -05:00
Brown
748abaf02a Add params required for 7.1 2020-02-27 18:56:33 -05:00
Philip Hofstetter
d315822bfa make skipping of checks after invalid includes configurable
as suggested in the PR it's best to make the setting configurable.

In order not to break existing installations, we default to keeping the
old behaviour, but in a later version of psalm, we might change the
default.
2020-02-27 18:49:23 -05:00
Philip Hofstetter
f2277ebb6d don't disable checks when includes can't be resolved
Any unresolvable include (even suppressed ones) would lead to some
subsequent tests being disabled as a side-effect.

this fixes #2817
2020-02-27 18:49:23 -05:00
Brown
35c1670602 Fix #2875 - treat intersections more similarly than before 2020-02-27 18:42:15 -05:00
Matthew Brown
eeb2858b30 Add additional fix for #2784 2020-02-27 08:56:39 -05:00
Brown
ea0a670230 Flesh out class constants in function call return type
Fixes #2884
2020-02-26 17:28:44 -05:00
kolja
f189b25b99 Fixed stub files with absolute paths not being loaded. 2020-02-26 17:13:40 -05:00
Brown
8a7feb5948 Add fallthrough comment 2020-02-26 17:07:21 -05:00
Brown
548d9fca2c Add references to property-defining classes 2020-02-26 16:49:14 -05:00
Brown
f1dbd0863a Allow magic methods named "as"
Fixes #2881
2020-02-26 13:50:45 -05:00
Matthew Brown
9163878174
Switch exit codes 2020-02-26 09:33:07 -05:00
Matthew Brown
746f8d4973 Prevent returning named object where template return assumed 2020-02-24 23:14:16 -05:00
Brown
712806b452 Fix #2874 - understand doubly-inherited interface templates 2020-02-24 17:58:44 -05:00
Brown
234a6ba4b4 Suppress null check 2020-02-24 16:22:50 -05:00
Brown
ff7fbcda99 Fix #2871 - prevent keyed arrays from being interpreted as callables 2020-02-24 16:19:33 -05:00
Brown
0a8bb32115 Fix #2866 - prevent use of impure __toString via concatenation in pure contexts 2020-02-24 14:50:34 -05:00
Brown
3f226e2e86 Fix #2867 - treat echo as impure 2020-02-24 14:38:05 -05:00
Matthew Brown
f1a9b73a78 Fix message 2020-02-23 18:24:43 -05:00
Matthew Brown
ed4f4e35b8 Fix null checks 2020-02-23 18:20:59 -05:00
Matthew Brown
41e076e0ee Fix bad 2020-02-23 18:19:53 -05:00
Matthew Brown
618ae77846 Prevent implicit __toString method calls in a pure context 2020-02-23 18:18:25 -05:00
Matthew Brown
1abece4f7c Use more accurate types 2020-02-23 17:03:27 -05:00
Matthew Brown
d3f8e80c4a Move reference map generation into separate file 2020-02-23 14:53:31 -05:00
Matthew Brown
b01bc9ab12 Fix union-of-mixed array key creation 2020-02-22 21:13:14 -05:00
Matthew Brown
4dae5b3190 Prevent more mixed array keys 2020-02-22 20:52:39 -05:00
Matthew Brown
97a849b1be Fix #1311 - narrow scalar properly, exploding constituent types 2020-02-22 20:25:13 -05:00
Matthew Brown
2635e57cde Negation of numeric on array-key is fine too 2020-02-22 12:53:27 -05:00
Matthew Brown
6adf6a09f0 Explode array-key into int|numeric-string after test 2020-02-22 12:36:37 -05:00
Matthew Brown
ae1360a52f An array-key can be numeric 2020-02-22 12:34:27 -05:00
Matthew Brown
27fd76649c Prevent more array<mixed, ...> construction 2020-02-22 12:20:03 -05:00
Matthew Brown
6ad3d039df Prevent more array<mixed,...> creation 2020-02-22 12:12:40 -05:00
Matthew Brown
952045e2ba Fix return type checks 2020-02-22 11:28:24 -05:00
Matthew Brown
202fb7026a Convert explicit array<mixed, ...> to array<array-key, ...> 2020-02-22 11:04:58 -05:00
Matthew Brown
1a3129b0e0 Fix test condition 2020-02-22 10:53:30 -05:00
Matthew Brown
1c218c020e Fix #1684 - detect error in assertion on return type of direct call 2020-02-22 10:41:57 -05:00
Matthew Brown
a706f4d722 Fix #2242 - warn when using mutable dependencies 2020-02-22 10:04:46 -05:00
Matthew Brown
3cc4c2b37e Fix #2721 - only warn about deprecated classes exactly where they are used 2020-02-22 01:12:19 -05:00
Matthew Brown
db17c85dd6 Fix #2787 - make accessing undefined objectlike key an error 2020-02-22 00:29:59 -05:00
Matthew Brown
9f13341ef9 Fix #2827 - detect literal numeric values 2020-02-22 00:16:15 -05:00
Matthew Brown
4707b21227 Fix tests 2020-02-21 22:15:25 -05:00
Brown
7d99a15072 Fix #2805 - forbid passing in mutable class to mutation-free context 2020-02-21 18:25:35 -05:00
Brown
f4485cc529 Fix #2847 - use fully-qualified function name 2020-02-21 16:44:31 -05:00
Brown
ae08552f40 Add null check 2020-02-21 16:04:18 -05:00
Brown
443558ca49 Fix #2844 - resolve constant offset references 2020-02-21 15:56:30 -05:00
Brown
292a2359b3 Add slash 2020-02-21 15:44:26 -05:00
Brown
b51863fc9b Fix #2848 - allow casting templated types 2020-02-21 15:17:35 -05:00
Brown
f44a0f9f4c Fix #2849 - allow object-like templated array comparison 2020-02-21 15:13:07 -05:00
Matthew Brown
a2fbfc1c9e Fix a couple of bugs 2020-02-21 01:32:22 -05:00
Matthew Brown
d8b6467b1a Fix #2852 - no duplicatearraykey warning for non string-keyed arrays 2020-02-21 01:27:42 -05:00
Matthew Brown
9bdca3c706 Forbid array<mixed, ...> 2020-02-21 01:26:51 -05:00
Matthew Brown
af2ea1732b Fix #2857 - use correct location for byref vars 2020-02-21 00:42:52 -05:00
Matthew Brown
e5c262d7dc Add docblock_start and docblock_end properties to CodeLocation 2020-02-20 22:56:03 -05:00
Matthew Brown
31399b9fd5 Fix dumb errors 2020-02-20 22:48:29 -05:00
Matthew Brown
3b2c9bbce5 Use simple (array) cast 2020-02-20 22:45:14 -05:00
Jared Broughton
86472de160 Correct return type of array_map closure 2020-02-20 22:45:14 -05:00
Jared Broughton
236e4d5e28 Prevent TypeError when generating XML reports
The XML generator currently in use (LSS\Array2XML) expects a nested array structure. However, due to the recent introduction of the IssueData type to replace what was previously shaped arrays, Array2XML was getting an array of objects instead. It then proceeds to crash from (eventually) passing null to DOMNode->appendChild(). This commit maps the IssueData array back into the array of shaped arrays that Array2XML knew and loved.
2020-02-20 22:45:14 -05:00
Teemu Koskinen
1801420305 Most gd functions that output an image accept either a filename or a stream resource as the optional second parameter
The only exception is imagexbm, which only accepts a filename (and which is optional)
2020-02-20 13:47:47 -05:00
Matthew Brown
2e4154d76e Add better defaults and documentation 2020-02-18 20:30:37 -05:00
Matthew Brown
c9494c43a3 Hide mixed issues if totallyTyped="false" 2020-02-18 20:08:09 -05:00
Matthew Brown
23b9331f6d Hide mixed errors if your error level is >= 3 2020-02-18 19:57:38 -05:00
Matthew Brown
aea33824e6 Fix #1555 - allow phantom class constants 2020-02-18 19:46:05 -05:00
Brown
520b646ef6 Add suppressMixedIssues config flag to hide mixed issues 2020-02-18 17:23:48 -05:00
Matthew Brown
87d8947ff3 Fix phpcs 2020-02-18 15:08:32 -05:00
Tyson Andre
eadf2f8492 Improve the reported error when a worker crashes 2020-02-18 15:08:32 -05:00
Brown
0e23fab5d2 Detect bugs similar to that which caused #2832 2020-02-18 12:53:54 -05:00
Brown
9230b425e7 Ors can still be created directly from conditions 2020-02-18 12:12:34 -05:00
Brown
6e8088776d Use better return type for SimpleXMLElement::offsetGet 2020-02-18 10:58:56 -05:00
Brown
38cccb8aaf Fix #2831 - use correct name for mapping 2020-02-18 10:39:24 -05:00
Matthew Brown
201d54f232
Convert to string before comparison 2020-02-18 09:40:21 -05:00
Matthew Brown
9866b292a4 Suppress issue that appears in Windows 2020-02-17 23:19:47 -05:00
Matthew Brown
320f3ec863 Update level config name 2020-02-17 22:43:13 -05:00
Matthew Brown
a55686b6e4 Move to more appropriate location 2020-02-17 22:21:04 -05:00
Matthew Brown
aab8eed219 Fix Phar-scoped issue checks 2020-02-17 22:07:08 -05:00
Matthew Brown
0c2b10709e If no level or totallyTyped is given, use level 2 2020-02-17 22:06:55 -05:00
Matthew Brown
f49c896f94 Allow totallyTyped to control level 2020-02-17 22:06:46 -05:00
Matthew Brown
e48d2aef9c Improve handling when threads cannot be used 2020-02-17 22:06:36 -05:00
Matthew Brown
ced092874a Make config generation smarter 2020-02-17 22:05:58 -05:00
Matthew Brown
00afcda5e0 Fix #2824 - allow unpacking of non-arrays with template params 2020-02-17 19:54:11 -05:00
Matthew Brown
3561c7d5dc Make sure yield from expressions counted as used
Fixes #2823
2020-02-17 19:21:04 -05:00
Matthew Brown
cf977c3542 Don’t convert constant descriptions to lowercase 2020-02-17 18:19:33 -05:00
Matthew Brown
8dd49b1cbf Fix lowercase-string to constant string coercion 2020-02-17 17:58:36 -05:00
Matthew Brown
99a97f4085 Update issue levels 2020-02-17 16:32:16 -05:00
Matthew Brown
a33eac440b Add stdClass reference to file storage for (object) cast
Fixes #2826
2020-02-17 11:33:09 -05:00
Matthew Brown
01d3d9270f Change constant name and meaning 2020-02-17 00:04:46 -05:00
Matthew Brown
39afe9b4ff Add levels to every issue 2020-02-16 20:55:09 -05:00
Matthew Brown
d281a6796b Fix lagging comma 2020-02-16 18:26:24 -05:00
Matthew Brown
196a0a5c4e Replace issue data array with object 2020-02-16 18:24:40 -05:00
Matthew Brown
d3bfb96431 Fix #2808 - improve yield type discernment 2020-02-15 10:47:07 -05:00
Matthew Brown
bacc7f254c Remove unnecessary extension check 2020-02-15 10:42:29 -05:00
Matthew Brown
d0d0c019cd Fix aliasing 2020-02-14 22:39:07 -05:00
Matthew Brown
3feccc1f98 Fix tests 2020-02-14 22:24:39 -05:00
Matthew Brown
653353709a Use MethodIdentifier object instead of string 2020-02-14 20:54:26 -05:00
Matthew Brown
fb5a0c39cb Fix #2819 - improve negated assertions on templates 2020-02-14 11:18:47 -05:00
Matthew Brown
422bd25f04
Maybe fix indentation 2020-02-13 19:33:47 -05:00
Matthew Brown
3efe271819
Remove blank line 2020-02-13 18:36:37 -05:00
Matthew Brown
95e1bc0c48
Fix line breaks 2020-02-13 18:32:40 -05:00
Matthew Brown
477d38e6eb
Suppress issue 2020-02-13 18:20:24 -05:00
Brown
b87161785d Be even more permissive 2020-02-13 17:58:15 -05:00
Brown
210d65d0d6 Add a few lowercase-string types 2020-02-13 17:52:23 -05:00
Brown
8989737e51 Fix #2775 - use lowercase strings in a couple more places 2020-02-13 17:44:16 -05:00
Brown
bba44e5354 Add interpolation support 2020-02-13 17:37:52 -05:00
Brown
bc0ccbda99 Add better inference for lower-cased methods 2020-02-13 17:30:00 -05:00
Brown
1c42875179 Support lowercase-string and warn about unnecessary calls to strtolower 2020-02-13 16:38:58 -05:00
Brown
e934343d7f Fix #2765 - properly fix namespaced @throws self 2020-02-13 13:01:53 -05:00
Matthew Brown
305372e0e1 Add docblock return type as --diff dependency 2020-02-13 10:39:04 -05:00
Philip Hofstetter
395cf587d3 add plugin hook to be called after every function call
compared to AfterFunctionCallAnalysisInterface which gets only called
after a call to a function declared within the project, a plugin
implementing AfterEveryFunctionCallAnalysisInterface will get called for
every function call, including calls of PHP builtins.

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

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

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

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

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

this fixes #2628
2020-01-30 08:48:53 -05:00
Matthew Brown
6c7d1b4e64 Ignore nullable return DomNodeList/DomNameNodeMap::item 2020-01-29 23:53:47 -05:00
Matthew Brown
5eb2ebc508 Add more type-system protections for bad array args 2020-01-29 23:41:17 -05:00
Matthew Brown
2829530ea6 Fix #2713 - allow interface with __invoke to be called 2020-01-29 22:33:28 -05:00
Matthew Brown
989123f82e Fix line length 2020-01-29 22:31:23 -05:00
Matthew Brown
933dff9e20 Fix #2712 - allow __toString to have more specific type 2020-01-29 22:28:40 -05:00
Matthew Brown
4b7780905e Improve reconciliation logic once more 2020-01-29 22:00:20 -05:00
Matthew Brown
06ffa24c26 Fix assertions to be better 2020-01-29 21:46:44 -05:00
Matthew Brown
2aebc522f1 Fix #2705 - mark by-ref args as used if not variables already 2020-01-29 21:46:30 -05:00
Matthew Brown
e92656c4cb Fix #2707 - reconcile object equality properly 2020-01-29 21:25:44 -05:00