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

4928 Commits

Author SHA1 Message Date
Brown
820bd95d8b Fix existing issue check 2020-03-26 14:25:11 -04:00
Brown
4ced26bec2 Fix #3024 - replay errors in --diff --diff-methods mode 2020-03-26 14:22:06 -04:00
Brown
971ae50bea Do prep work for #3024 - improve handling of absent class references 2020-03-26 12:35:27 -04:00
Matthew Brown
68c95c622a Save information about last runs whether or not there were errors 2020-03-26 00:46:39 -04:00
m0003r
71826ad69e
Fix #2994 (#3016)
More carefully handling stream_select errors when system call is interrupted. It can be detected by parsing error message. If it is interrupted, just try again.
2020-03-25 21:25:33 -04:00
Matthew Brown
f94ab22a5f Be better about strict inference 2020-03-25 09:18:49 -04:00
Matthew Brown
4734583444 Don’t overwrite already-defined template 2020-03-24 23:40:01 -04:00
Brown
467da32f84 Fix instanceof static and isa (static::class) handling 2020-03-24 18:58:15 -04:00
iggyvolz
94b246b987
Initial commit (#3013) 2020-03-24 18:32:57 -04:00
Brown
a9b6c51748 Improve new $class to make it more static-y 2020-03-24 18:30:08 -04:00
Brown
1bfc61d402 Allow final classes to bypass static checks 2020-03-24 18:14:10 -04:00
Brown
ec34a16291 Warn about invalid static returns 2020-03-24 18:00:20 -04:00
Brown
f6759c3d16 Check return statement types for inherited docblocks 2020-03-24 17:59:48 -04:00
Brown
1e480ade12 Fix bugs 2020-03-24 14:49:05 -04:00
Brown
cae15b6c62 Use appropriate template types when applying array_filter asssertions
Fixes #3008
2020-03-24 12:15:56 -04:00
Brown
25bd2ed5fb Fix #3010 - prevent false-negative after calling isset on possibly-false array 2020-03-24 12:01:39 -04:00
Brown
a83651050c Seal objectlike arrays inferred from constants 2020-03-23 16:28:20 -04:00
Brown
a7245b4459 Fix bugs 2020-03-23 13:29:00 -04:00
Matthew Brown
27a0651b6c Fix #3009 - make sure return type is set when returning early 2020-03-23 13:25:55 -04:00
Matthew Brown
ce9eef9ed7 Improve returning 2020-03-23 13:25:55 -04:00
Brown
4c081f7835 Things with mixed values can be the same 2020-03-23 12:08:05 -04:00
Matthew Brown
eeed5ecccc Only prevent AbstractMethodCall on direct calls
Fixes #3007
2020-03-23 07:40:30 -04:00
Matthew Brown
6058725256 Add prototype for conditional return type 2020-03-22 10:44:48 -04:00
Matthew Brown
26694345d6 Fix unknown variable 2020-03-21 20:53:46 -04:00
Matthew Brown
6746f1c047 Fix #3004 - reset property types inside a closure defined in a class 2020-03-21 20:46:38 -04:00
Matthew Brown
c986cdf12e Allow edge-case of by-reference assignment with unitiliazed property
Fixes #3003
2020-03-21 19:23:32 -04:00
Niklas Keller
a7affbe716
Add \Error stub (#3002)
Otherwise, errors are generated if \Error is extended: https://psalm.dev/r/8169465beb
2020-03-21 19:11:23 -04:00
Niklas Keller
dd9924ea26
Fix Generator::throw return type (#3001) 2020-03-21 19:08:47 -04:00
LeSuisse
6353b614fa
$ignore parameter of \sodium_base642bin() is optional (#2997)
https://github.com/php/php-src/blob/php-7.3.15/ext/sodium/libsodium.c#L2775
2020-03-20 21:09:45 -04:00
Matthew Brown
44713a48ac Add default shortcode 2020-03-20 14:41:25 -04:00
Matthew Brown
a237ba307c Use simpler method for generating links 2020-03-19 17:12:16 -04:00
Matthew Brown
fa2adfe1b3 Add slashes 2020-03-19 16:35:04 -04:00
Matthew Brown
4e07dfebaa Make link part of IssueData so it’s available to all consumers 2020-03-19 16:22:43 -04:00
Matthew Brown
f532dc316c Add informational links to Psalm‘s output
Fixes #2978
2020-03-19 16:04:40 -04:00
Matthew Brown
89a3af54a6 Add slash 2020-03-18 21:53:44 -04:00
Matthew Brown
cbf139952c Fix #2989 - delay @mixin hydration until parent methods inherited 2020-03-18 21:38:53 -04:00
Matthew Brown
f7907eb43f Fix #2987 - ignore MixedReturnTypeCoercion for generator send param 2020-03-18 21:25:25 -04:00
Matthew Brown
9e29f6107a Add extra vendor check 2020-03-18 20:21:02 -04:00
Matthew Brown
afe25257da Don’t cache files not in project directories 2020-03-18 19:54:48 -04:00
Matthew Brown
311bd19a6a Fix #2983 - inherited lists should have their template types localised 2020-03-18 16:23:09 -04:00
Pavel Batečko
48af534270
Improve parse_url() return type (#2955) 2020-03-18 15:17:24 -04:00
Ben Davies
47f43fdcd7
use file contents intead of filemtime to detect changed files (#2991)
* use file contents intead of filemtime to detect changed files

* Add as extra filter step

Co-authored-by: Matthew Brown <github@muglug.com>
2020-03-18 13:36:11 -04:00
Matthew Brown
474b9dc01b Fix too-long line 2020-03-17 17:44:31 -04:00
Matthew Brown
9cd817077e Improve fix 2020-03-17 17:34:45 -04:00
Matthew Brown
4166e5a4ef Fix tests 2020-03-17 16:30:03 -04:00
Matthew Brown
da170efb65 Don’t coerce literal values
Fixes #2982
2020-03-17 16:16:58 -04:00
Matthew Brown
951b943c38 Fix #2981 - check that class exists before making it a phantom 2020-03-17 15:04:50 -04:00
Matthew Brown
309a229db1 Add codes to all issues 2020-03-17 09:19:47 -04:00
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