Matt Brown
|
a27c674cee
|
Add test for #4825
|
2020-12-10 13:51:49 -05:00 |
|
Matt Brown
|
8cae4047b0
|
Fix #4825 - check for finally var set
|
2020-12-10 11:48:43 -05:00 |
|
Matt Brown
|
2a92025737
|
Union types if stmt already has one
|
2020-12-10 01:40:20 -05:00 |
|
Matt Brown
|
b7a7e2fb87
|
Fix get magic property checks
|
2020-12-10 01:29:07 -05:00 |
|
Matt Brown
|
37659445f0
|
Improve accuracy of optional example
|
2020-12-10 01:12:58 -05:00 |
|
Matt Brown
|
e6dad6e65f
|
Be smarter when choosing inherited param types
Ref #4803
|
2020-12-10 00:15:37 -05:00 |
|
Matt Brown
|
beefa2aea3
|
Fix #4817 - allow optional inference
|
2020-12-09 19:32:56 -05:00 |
|
Matt Brown
|
5e845260c1
|
Remove unnecessary null check
|
2020-12-09 18:30:36 -05:00 |
|
Matt Brown
|
524084a64c
|
Tighten up rules arouund when mutation-free methods get memoised
|
2020-12-08 16:39:06 -05:00 |
|
Matt Brown
|
be3f30ff1d
|
Fix #4812 - reconcile array assertion on template as type correctly
|
2020-12-08 14:17:37 -05:00 |
|
Matt Brown
|
1e0bcc1876
|
Fix #4803 - always derive method params the same way
|
2020-12-08 11:27:51 -05:00 |
|
2e3s
|
e46c68b1e5
|
Overwrite memoized return type after sum-type candidate is calculated (#4805)
* Overwrite memoized return type after sum-type candidate is calculated
* Fix mismatched types
* Fix code style
|
2020-12-08 09:35:11 -05:00 |
|
Matt Brown
|
91ee4aeca3
|
Fix #4797 - sanitise assertion output of template result
|
2020-12-07 19:11:56 -05:00 |
|
Matt Brown
|
8a76a43d8c
|
Fix #4798 - improve conversion from type back to PhpParser node
|
2020-12-07 14:39:58 -05:00 |
|
Matt Brown
|
f5dd6e76f8
|
Fix #4802 - don’t clone context when analysing coalesce
|
2020-12-07 14:30:57 -05:00 |
|
Matthew Brown
|
d406d5b112
|
Fix typo
|
2020-12-07 01:32:18 -05:00 |
|
Matt Brown
|
e702e472fc
|
Support simple list assignment in foreach
Ref #4741
|
2020-12-06 19:14:52 -05:00 |
|
Jack Bentley
|
7fe8e5a1cf
|
Fix functions being resolved to other functions (#4793)
Fixes #4750
Reusing the $function_id variable causes an incorrect global function to be added at line 654
|
2020-12-06 17:28:19 -05:00 |
|
Bruce Weirdan
|
cd576f8e02
|
Adjust check for file modification time (#4789)
This solves the issue where Psalm didn't notice the files created in the
same second as the last run was started.
|
2020-12-06 12:40:55 -05:00 |
|
orklah
|
1901ea56de
|
Don't add link if the issue doesn't have a shortcode (#4786)
|
2020-12-06 11:29:05 -05:00 |
|
Matt Brown
|
9c0e9a3d7e
|
Taint all when conditional return is used
Ref #4792
|
2020-12-06 11:24:48 -05:00 |
|
Matt Brown
|
4d1aae43f9
|
Fix #4778 - remove already-initialized properties when checking initialisation
|
2020-12-06 11:07:59 -05:00 |
|
Matt Brown
|
cec8d7138f
|
Fix #4782 - don’t replace closure types with upper bounds when replacing class param types
|
2020-12-05 11:58:55 -05:00 |
|
Matt Brown
|
1bb8b73f99
|
Return earlier
|
2020-12-05 10:25:34 -05:00 |
|
Vincent Langlet
|
eb9d6f66ab
|
Fix support of extraFiles (#4785)
|
2020-12-05 09:54:05 -05:00 |
|
Matt Brown
|
3f155792a7
|
Allow nested specialisation
|
2020-12-04 15:44:29 -05:00 |
|
Matt Brown
|
fd67d41120
|
Fix #4769 – don’t use unique ids for new generated nodes
|
2020-12-04 15:44:29 -05:00 |
|
Matt Brown
|
ca915e5028
|
Fix redundancies
|
2020-12-04 15:10:50 -05:00 |
|
Matt Brown
|
4a0e2f543e
|
Fix implicit void closure not getting recognised
|
2020-12-04 13:16:05 -05:00 |
|
Matt Brown
|
fb88145780
|
Fix #4767 - rescan directly-affected class-interface relationships
|
2020-12-04 01:19:51 -05:00 |
|
orklah
|
62d5ea83a1
|
Allow int casts if the type comes from calculation (#4768)
|
2020-12-03 23:15:07 -05:00 |
|
Matt Brown
|
0411049559
|
Mixed array access should mark vars as used just in case
|
2020-12-03 13:09:08 -05:00 |
|
Matt Brown
|
2feba22a00
|
Make more try vars potentially undefined
Fixes #4764
|
2020-12-03 11:44:10 -05:00 |
|
Matt Brown
|
51a92aa223
|
Fix interface property regression
|
2020-12-03 11:13:10 -05:00 |
|
Matt Brown
|
833f132cb3
|
Fix #4760 - prevent unpacked vars from breaking call when checking unitialised properties
|
2020-12-03 10:12:54 -05:00 |
|
Matt Brown
|
bef9ab37e6
|
Fix #4759 – don’t generate assertion when assigning to same-named variable
|
2020-12-03 09:42:26 -05:00 |
|
Denis Smetannikov
|
11576951f6
|
Update ExistingAtomicStaticCallAnalyzer.php (#4761)
The invalid syntax for PHP 7.1+
|
2020-12-03 09:24:34 -05:00 |
|
Matt Brown
|
1a5d5e4476
|
Simplify FunctionLikeDocblockScanner
|
2020-12-03 00:19:01 -05:00 |
|
Matt Brown
|
e2a2e8ee87
|
Break apart AtomicPropertyFetchAnalyzer::analyze
|
2020-12-02 23:37:29 -05:00 |
|
Matt Brown
|
a4ac52aea4
|
Simplify AssertionReconciler
|
2020-12-02 22:49:01 -05:00 |
|
Matt Brown
|
2f00500c91
|
Improve message
|
2020-12-02 22:08:14 -05:00 |
|
Matt Brown
|
6f916553a8
|
Ref #4753 - allow int literals to inform key type
|
2020-12-02 17:13:45 -05:00 |
|
Matt Brown
|
db8a3ab846
|
Fix #4751 - allow MethodSignatureMismatch to be overridable when info comes from docblock
|
2020-12-02 15:13:28 -05:00 |
|
Matt Brown
|
e2bb02e93c
|
Don’t suggest a potential value that’s undefined
Fixes #4754
|
2020-12-02 14:49:30 -05:00 |
|
Matt Brown
|
a2b20f094d
|
Fix #4752 - add property base assertions too
|
2020-12-02 12:43:21 -05:00 |
|
Matt Brown
|
f0876b86f4
|
Avoid false-positives while analysing memoised coalesce
|
2020-12-02 02:25:15 -05:00 |
|
Matt Brown
|
394eceb01c
|
Memoize coalesce expression in more scenarios
|
2020-12-02 02:15:17 -05:00 |
|
Matt Brown
|
928fdda00f
|
Don’t do new isset conversion on try-set vars
|
2020-12-02 01:47:49 -05:00 |
|
Matt Brown
|
1feca322d5
|
Fix loading imported functions
|
2020-12-02 00:52:35 -05:00 |
|
Matt Brown
|
7bd4d969a4
|
Ensure that strict empty handling always happens
|
2020-12-01 22:50:21 -05:00 |
|
Matt Brown
|
5a200ca442
|
Fix assertions on unions
|
2020-12-01 21:12:03 -05:00 |
|
Matt Brown
|
61e374f33b
|
Fix null array access complaints
|
2020-12-01 20:10:48 -05:00 |
|
Matt Brown
|
1a629ccc82
|
Fix a few issues
|
2020-12-01 18:26:15 -05:00 |
|
Matt Brown
|
e7f9ce6da0
|
Break out RedundantCast issues
|
2020-12-01 17:25:45 -05:00 |
|
Matt Brown
|
2963efc9a5
|
Use fallback assignment type when the property doesn’t exist on the class
|
2020-12-01 16:59:44 -05:00 |
|
Matt Brown
|
f5494bc407
|
Fix typos caused by Macbook Pro’s bad keyboard
|
2020-12-01 14:14:09 -05:00 |
|
orklah
|
f0c0ac0616
|
handle return flag for a try/catch/finally (#4746)
* handle return flag for a try/catch/finally
* add tests for psalter
|
2020-12-01 12:55:27 -05:00 |
|
Matt Brown
|
75a6d88773
|
Fix #4705 - clear documenting method ids when scanning stubs
|
2020-12-01 11:23:38 -05:00 |
|
Matt Brown
|
c6d0561612
|
Fix nullref
|
2020-12-01 00:48:09 -05:00 |
|
Matt Brown
|
7295e28e20
|
Fix #4743 - simplify assertions generated from array_key_exists check
|
2020-11-30 22:10:17 -05:00 |
|
Matt Brown
|
6f86201f34
|
Break up AssignmentAnalyzer::analyze
|
2020-11-30 14:57:35 -05:00 |
|
Matt Brown
|
3b1fa58413
|
Break apart method as much as possible
|
2020-11-30 14:07:18 -05:00 |
|
Matt Brown
|
2427606563
|
Fix lint
|
2020-11-30 13:25:27 -05:00 |
|
Matt Brown
|
2204728824
|
Break apart NewAnalyzer::analyze
Ref #4714
|
2020-11-30 13:24:24 -05:00 |
|
Matt Brown
|
4baf143ff7
|
Break apart ArrayAssignmentAnalyzer::updateArrayType
Ref #4714
|
2020-11-30 13:08:42 -05:00 |
|
Matt Brown
|
5430effb2b
|
Break apart InstancePropertyAssignmentAnalyzer
Ref #4714
|
2020-11-30 12:09:09 -05:00 |
|
orklah
|
d59ad152a0
|
Remove fixable flag for Complexity issues (#4742)
|
2020-11-30 08:43:18 -05:00 |
|
Matt Brown
|
31e2522adb
|
Actually not a bug
|
2020-11-30 01:32:38 -05:00 |
|
Matt Brown
|
817db55140
|
Fix typo
|
2020-11-30 01:29:40 -05:00 |
|
Matt Brown
|
cf6dedc11d
|
Break up AssertionFinder methods
Ref #4714
|
2020-11-30 01:20:28 -05:00 |
|
Matt Brown
|
29fbdaf263
|
Simplify getting type from tree
Ref #4714
|
2020-11-30 00:40:25 -05:00 |
|
orklah
|
a760a2418a
|
support shift and bitwise operations in constants (#4740)
|
2020-11-29 21:43:49 -05:00 |
|
orklah
|
5222cadfb3
|
Check from_docblock property to emit the right issue (#4736)
|
2020-11-29 21:40:13 -05:00 |
|
Matt Brown
|
4d81682fdd
|
Fix #4731 - expand out class-bound generic types when evaluating instance method
|
2020-11-29 21:36:50 -05:00 |
|
Matt Brown
|
86b6d6a506
|
Fix #4733 - don’t replace template types when they’re defined on the same class
|
2020-11-29 19:12:22 -05:00 |
|
Matt Brown
|
601c1d8cd0
|
Expand out constants in param types earlier
|
2020-11-29 19:07:35 -05:00 |
|
Matt Brown
|
46b202731c
|
Fix check
|
2020-11-29 18:28:32 -05:00 |
|
Matt Brown
|
58b306b6e3
|
Ensure class template types are mapped to static methods where necessary
Ref #4733
|
2020-11-29 17:40:52 -05:00 |
|
Matt Brown
|
8da676f5bf
|
Improve param name
|
2020-11-29 17:26:42 -05:00 |
|
Matt Brown
|
ea314cc1c0
|
Simplify calling of replacer methods
|
2020-11-29 16:27:00 -05:00 |
|
Matt Brown
|
4d22723525
|
Break out replacement of templated types with their inferred result
|
2020-11-29 16:16:16 -05:00 |
|
Matt Brown
|
15a5bd5e29
|
Simplify storage and retrieval of extended template params
|
2020-11-29 15:05:32 -05:00 |
|
Matthew Brown
|
60ac109c01
|
Add RedundantPropertyInitializationCheck (#4732)
* Add RedundantPropertyInitializationCheck
* add documentation for RedundantPropertyInitializationCheck (#4734)
Co-authored-by: orklah <orklah@users.noreply.github.com>
|
2020-11-29 11:57:20 -05:00 |
|
Matt Brown
|
0efd4ebd7d
|
Detect some erroneous issets
|
2020-11-29 09:26:39 -05:00 |
|
Matthew Brown
|
fd53192ad2
|
Fix redundant mappings
|
2020-11-28 21:05:31 -05:00 |
|
Matt Brown
|
8adc0918ae
|
Fix the bug
|
2020-11-28 09:55:40 -05:00 |
|
Matt Brown
|
de1fa03f77
|
Fix template type selection
|
2020-11-28 09:53:11 -05:00 |
|
orklah
|
e2030b4a1e
|
fix #3282 (#4724)
|
2020-11-28 09:03:03 -05:00 |
|
Matt Brown
|
4af7e818b2
|
Simplify ArrayFetchAnalyzer::getArrayAccessTypeGivenOffset
Ref #4714
|
2020-11-27 23:36:47 -05:00 |
|
Matt Brown
|
53c5e52ef2
|
Fix #3017 - use correct keys when converting list to array
|
2020-11-27 20:05:16 -05:00 |
|
Matt Brown
|
b717356f95
|
Simplify more things
|
2020-11-27 17:48:39 -05:00 |
|
Matt Brown
|
2626f008be
|
Only show possibly unused params on methods that don’t extend others
|
2020-11-27 17:17:03 -05:00 |
|
orklah
|
32bf18dff0
|
fix array_column with possibly_undefined keys (#4719)
|
2020-11-27 17:05:54 -05:00 |
|
orklah
|
f19cac6ecf
|
add annotation @psalm-param-out (#4717)
* add annotation @psalm-param-out
* add tag in documentation
|
2020-11-27 17:05:26 -05:00 |
|
Matt Brown
|
ffabce19c5
|
Add complex issue error
|
2020-11-27 17:02:37 -05:00 |
|
Matt Brown
|
73cd07a01f
|
Simplify FunctionCallAnalyzer
Ref #4714
|
2020-11-27 16:34:27 -05:00 |
|
Matt Brown
|
6db8132b4c
|
Simplify call analysers a bit
Ref #4714
|
2020-11-27 16:31:10 -05:00 |
|
Matt Brown
|
5dd4912a99
|
Simplify ArrayAnalyzer
Ref #4714
|
2020-11-27 14:19:55 -05:00 |
|
Matt Brown
|
1ce45516db
|
Don’t alter behaviour
|
2020-11-27 11:47:12 -05:00 |
|
Matt Brown
|
5f065d3d74
|
Turn template bound tuples into object
Ref #4714
|
2020-11-27 11:43:30 -05:00 |
|
orklah
|
b60182c514
|
better fix for reconciling iterable and object (#4712)
|
2020-11-27 09:10:55 -05:00 |
|
Matt Brown
|
bf696bf82e
|
Add complexity function name echoing
|
2020-11-27 05:28:55 -05:00 |
|
orklah
|
74c07bbc08
|
Allow <false|T as object> to be falsy (#4711)
|
2020-11-26 16:47:44 -05:00 |
|
Matt Brown
|
6de97e3779
|
Skip missing function params in taint analysis
|
2020-11-26 11:58:14 -05:00 |
|
Matt Brown
|
b224970281
|
Fix generic ArrayAccess creation cc @orklah
|
2020-11-26 10:00:03 -05:00 |
|
orklah
|
f7cfdaabd7
|
Allow reconciling between object and iterable (#4706)
* Allow reconciling between object and iterable
* add tests
|
2020-11-26 09:25:49 -05:00 |
|
orklah
|
4bbb72329e
|
Fix PHPMAXINT offset (#4707)
|
2020-11-26 09:24:32 -05:00 |
|
Matt Brown
|
01ceaf7006
|
Fix style issues
|
2020-11-25 21:36:37 -05:00 |
|
orklah
|
58736924dd
|
fix wrong cast to int when string offset is a number > MAX INT (#4702)
|
2020-11-25 15:48:53 -05:00 |
|
Matt Brown
|
f3e0201a99
|
Treat $a ?? $b identically to isset($a) ? $a : $b
|
2020-11-25 14:34:05 -05:00 |
|
Matt Brown
|
d40d63f180
|
Fix #4699 - treat isset like !== null when variable is defined
|
2020-11-25 14:04:55 -05:00 |
|
Matt Brown
|
6aa052475a
|
Pass correct flags when referencing from finally
|
2020-11-25 14:04:55 -05:00 |
|
orklah
|
b6a3282589
|
Detect redundant cast (#4695)
* detect redundant cast
* fix redundant cast issues
* fix redundant cast in tests
|
2020-11-25 12:04:48 -05:00 |
|
Matt Brown
|
f8ddc7e58a
|
Add slash
|
2020-11-24 15:07:15 -05:00 |
|
Matt Brown
|
e9c00b8395
|
Switch order to satisfy new refinement
|
2020-11-24 14:57:34 -05:00 |
|
Matt Brown
|
41af653bd4
|
Add support for some dependent types
|
2020-11-24 14:50:35 -05:00 |
|
orklah
|
2bf25d5f50
|
Emit an issue when returning a Stringable object when a string is expected (#4657)
* Emit an issue when returning a Stringable object when a string is expected
* Fix issue in Psalm codebase
|
2020-11-24 00:18:24 -05:00 |
|
Benjamin Morel
|
5748a4e25a
|
Fix PdoStatementReturnTypeProvider (#4683)
* Fix PdoStatementReturnTypeProvider
Methods returning scalars may return null as well.
* Fix tests
|
2020-11-23 18:41:12 -05:00 |
|
orklah
|
b6cb9785ac
|
Prevent illegal array keys (#4660)
* Emit an issue when an array-key is not legal
* tests
|
2020-11-23 15:20:39 -05:00 |
|
Markus Staab
|
e5493f59cd
|
Mark finfo_open and finfo_file as impure (#4678)
* Mark finfo_open and finfo_file as impure
* fix CS
|
2020-11-23 15:19:50 -05:00 |
|
erikjwaxx
|
25d8c6d21e
|
Narrow inference of $a <=> $b from "int" to "-1|0|1" (#4680)
* A <=> operator has a literal type of -1|0|1 and not simply int
* Test to verify inferred type of $a <=> $b is -1|0|1
|
2020-11-23 13:10:51 -05:00 |
|
Markus Staab
|
d151f1c36e
|
mark file_get_contents as impurce (#4679)
|
2020-11-23 11:33:30 -05:00 |
|
Markus Staab
|
387bfbd9e0
|
is_file and is_dir should be impure (#4676)
* `is_file` and `is_dir` should be impure
* newline
Co-authored-by: Matthew Brown <github@muglug.com>
|
2020-11-23 09:53:39 -05:00 |
|
Matt Brown
|
8325317e16
|
Fix #4674 - is_readable should be impure
|
2020-11-23 08:54:11 -05:00 |
|
Matt Brown
|
17ceba5c06
|
Fix bug
|
2020-11-22 23:32:14 -05:00 |
|
Matt Brown
|
f164a45843
|
Fix bugs
|
2020-11-22 19:45:54 -05:00 |
|
Matt Brown
|
9a03a9a5d0
|
Move param taint sink addition after arguuments have been analysed
|
2020-11-22 19:39:40 -05:00 |
|
Matt Brown
|
853432a6aa
|
Fix tests
|
2020-11-22 16:24:33 -05:00 |
|
Matt Brown
|
6399707dd6
|
Prevent flows through TaintedInput-suppressed files
|
2020-11-22 16:04:57 -05:00 |
|
Matt Brown
|
b782dd4225
|
Make sure conditional escaping works for static methods too
|
2020-11-22 13:39:32 -05:00 |
|
Matt Brown
|
af008953a8
|
Fix #4661 - support conditional escaping for functions
|
2020-11-22 13:24:33 -05:00 |
|
Matt Brown
|
bd612c476c
|
Break apart large function
|
2020-11-22 13:24:33 -05:00 |
|
Matt Brown
|
2c77424e16
|
Fix #4656 - separate UnusedConstructor from UnusedMethod
|
2020-11-22 11:48:17 -05:00 |
|
orklah
|
97f0a78ac1
|
Only crash Psalm when the faulty file is in project (#4658)
|
2020-11-22 09:07:00 -05:00 |
|
orklah
|
a3217265ce
|
null operations should return mixed results (#4655)
|
2020-11-22 09:06:03 -05:00 |
|
Matt Brown
|
60b3086b9a
|
Fix #4609 - add more attribute rules
|
2020-11-22 01:15:52 -05:00 |
|
Matt Brown
|
66d574b82e
|
Fix #4475 - verify that used attributes actual use the Attribute attribute
|
2020-11-22 00:52:56 -05:00 |
|
Matt Brown
|
11825a2cc2
|
Fix #4611 - flag invalid attribute arguments correctly
|
2020-11-22 00:44:44 -05:00 |
|
Matt Brown
|
1fc1cae1d5
|
Fix #4615 - ensure promoted properties are not treated as uninitialized
|
2020-11-22 00:32:02 -05:00 |
|
Matt Brown
|
efafe2edd5
|
Add instanceof check
|
2020-11-21 20:15:13 -05:00 |
|
Matt Brown
|
19bb4aba56
|
Remove unnecessary coercion
|
2020-11-21 18:26:55 -05:00 |
|
Matt Brown
|
df2ec48018
|
Don’t erase already-known literal ints
Fixes #4644
|
2020-11-21 18:26:13 -05:00 |
|
Matt Brown
|
f0ae0e5cb4
|
Break aparat type combiner
|
2020-11-21 18:11:29 -05:00 |
|
Lukas Reschke
|
ffb0c4ae17
|
Implement variadic taint propagation (#4649)
* Implement variadic taint propagation
* Lint code
|
2020-11-21 17:41:40 -05:00 |
|
orklah
|
ae0486529e
|
Unused psalm-suppress (#4646)
|
2020-11-21 17:39:40 -05:00 |
|
Lukas Reschke
|
3943b55f8a
|
Add psalm-flow for string functions from sscanf to wordwrap (#4591)
* Add string functions from sscanf to wordwrap
This should conclude all string functions from https://www.php.net/manual/en/book.strings.php
Continuation of https://github.com/vimeo/psalm/pull/4576
Ref https://github.com/vimeo/psalm/issues/3636
* Add StrTrReturnTypeProvider
* Fix psalm error
* phpcs
* Line length
* Ignore false return on vsprintf
Co-authored-by: Matthew Brown <github@muglug.com>
|
2020-11-21 17:35:07 -05:00 |
|
orklah
|
6b72599ec5
|
allow static return type in PHP8 (#4641)
|
2020-11-20 18:46:35 -05:00 |
|
Matt Brown
|
1cead18760
|
Fix #4637 - prevent regression when negating function call with === false
|
2020-11-20 09:56:53 -05:00 |
|
Dalibor Karlović
|
da632ca73a
|
feature: allow plugin manager to work without config file (#4639)
|
2020-11-20 09:54:14 -05:00 |
|
Matt Brown
|
ce8938263e
|
Fix #4636 - prevent crashes on aliased classes
|
2020-11-20 09:29:24 -05:00 |
|