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

2635 Commits

Author SHA1 Message Date
AndrolGenhald
282518ce5f Fix failing case in ClassConstAnalyzer and add test. 2022-01-27 21:50:36 -06:00
AndrolGenhald
35353c6931 Re-add failing assert, enable assertions on CI. 2022-01-27 21:29:43 -06:00
Matthew Brown
1a6f968e15 Remove dodgy assertion cc @AndrolGenhald
This assertion broke tests when assertions were turned on
2022-01-27 20:58:35 -05:00
orklah
9168cef2d4 Merge remote-tracking branch 'upstream/4.x' into upstream-master6 2022-01-26 21:06:25 +01:00
AndrolGenhald
e268a05307 Minor fixes after rebasing. 2022-01-26 12:57:19 -06:00
AndrolGenhald
57b99be519 Improve reference support for assertions, array offsets, and properties. 2022-01-26 12:55:47 -06:00
AndrolGenhald
bf606202f8 Remove impossible TODO. 2022-01-26 12:55:47 -06:00
AndrolGenhald
f9450656e1 Add support for references and improve UnusedVariable checks (fixes #7254). 2022-01-26 12:55:47 -06:00
AndrolGenhald
0b81f46bb1 Fixes after rebasing. 2022-01-25 15:31:09 -06:00
AndrolGenhald
0edf260d8b Improve class constant static analysis.
Add class const covariance support (fixes #5589).
Add check for overriding const from interface in PHP < 8.1 (fixes #7108).
Add check for ambiguous const inheritance.
2022-01-25 15:20:17 -06:00
orklah
7c8441baec
Merge pull request #7123 from AndrolGenhald/feature/942-type-annotate-class-constants
Support type annotations for class consts (fixes #942).
2022-01-25 20:54:40 +01:00
Matthew Brown
c974f23852 Simplify context references 2022-01-24 16:35:42 -05:00
Matthew Brown
18f5446924 Remove unnecessary hack embedding IfScope in Context object 2022-01-24 14:00:20 -05:00
Matthew Brown
c7d938bbbe Remove unnecessary code in Context::removeDescendants 2022-01-24 10:34:48 -05:00
orklah
f1c4b62f5c
Merge pull request #7414 from b2pweb/call-docblock-method-using-parent
Add support of docblock method using parent keyword
2022-01-24 13:02:57 +01:00
orklah
0619b404e5
Merge pull request #7390 from VincentLanglet/exceptionCode
Add Exception->getCode() return type provider
2022-01-24 12:56:57 +01:00
Vincent Langlet
9905baeceb Add flagfrom_calculation 2022-01-24 09:31:10 +01:00
Vincent
280de4bc98 Fix undefined parent method call (ref #7414) 2022-01-24 09:17:29 +01:00
Matthew Brown
ab2b77d9f5 Fix unnecessary array merge
This operation is already performed on line 420
2022-01-23 23:17:51 -05:00
orklah
63b802bff4 remove TPositiveInt 2022-01-23 23:49:23 +01:00
orklah
7c4f08067b Merge remote-tracking branch 'upstream/4.x' into upstream-master5 2022-01-23 23:44:04 +01:00
orklah
c90cffd382
Merge pull request #7472 from orklah/intrange
remove TPositiveInt usage for TIntRange
2022-01-23 22:04:33 +01:00
orklah
a7b72b865f remove TPositiveInt usage for TIntRange 2022-01-23 22:04:18 +01:00
Matthew Brown
865a9f81bc Remove nullability from properties that don’t need them 2022-01-23 14:18:53 -05:00
orklah
82d84b0b3a fix internal properties on interfaces 2022-01-23 13:08:35 +01:00
AndrolGenhald
0fb0632e0d Infer type from known ternary condition. 2022-01-22 17:06:54 -06:00
AndrolGenhald
558208e44e Add type checking for class const assignments, fix several other const issues. 2022-01-22 17:06:54 -06:00
AndrolGenhald
c877ce031e Use inferred type instead of annotated type where possible. 2022-01-22 17:06:54 -06:00
AndrolGenhald
c18a155f77 Support type annotations for class consts (fixes #942). 2022-01-22 17:06:53 -06:00
orklah
841d4f4429 improve support for enum_exists 2022-01-22 18:27:24 +01:00
orklah
af1888b631 Merge remote-tracking branch 'upstream/4.x' into upstream-master4 2022-01-22 17:48:42 +01:00
orklah
73af019110 fix a weird case 2022-01-22 17:45:40 +01:00
orklah
997d5d5f5f handle two more cases of firstClassCallable 2022-01-22 17:37:35 +01:00
Toon Verwerft
6b789bb5a7 [TypeProvider] Provide argument types during FunctionParamsProviderEvent 2022-01-21 16:32:40 +01:00
orklah
f9b26acf6e Array key exists assert both ways 2022-01-21 00:26:37 +01:00
orklah
fe9d3f02a8 nitpicks 2022-01-20 23:47:41 +01:00
Matthew Brown
0a81f8cd6c
Use objects, not strings, for assertions (#7410)
* Use objects, not strings, for assertions

* Remove unnecessary param

* Remove some unnecessary checks

* Fix bad find/replace

* Add note about assertions no longer stored as strings in UPGRADING.md
2022-01-20 17:33:06 -05:00
orklah
6f1a5e8a47
Merge pull request #7417 from klimick/partially-applied-closure-inference
Contextual type inference for high order function arg
2022-01-20 21:03:46 +01:00
Vincent Quatrevieux
c7bfc03a6b
Merge branch '4.x' into call-docblock-method-using-parent 2022-01-20 08:59:50 +01:00
Vincent
f7252417e4 Fix typing (ref #7430) 2022-01-19 13:49:41 +01:00
Vincent
7b25ca75f4 Resolve generics of inherited pseudo methods (fix #7419) 2022-01-19 11:45:19 +01:00
adrew
7e623ed48e Upcast invokable to callable during hof arg analysis 2022-01-19 00:37:05 +03:00
adrew
fca72ee151 Fix psalm issues 2022-01-18 22:05:32 +03:00
orklah
dceaa117cf remove forbidEcho 2022-01-18 18:25:18 +01:00
orklah
5f749c8a33 remove forbidEcho 2022-01-18 18:14:39 +01:00
adrew
6e1957e40a Support higher order func arg inference for static and instance calls 2022-01-18 18:45:28 +03:00
adrew
12648f4c9e Comments for describe how works higher order func arg inference 2022-01-18 13:36:16 +03:00
adrew
ffdf97c44d Remove unused function 2022-01-18 13:17:50 +03:00
adrew
a0bda8683a Rename method 2022-01-18 13:13:17 +03:00
adrew
6f9b6f8538 Fix psalm issues 2022-01-18 12:53:39 +03:00
adrew
cce1f9a407 Some refactoring and doc for high order function argument handling 2022-01-18 12:44:36 +03:00
adrew
00ce1107d3 Infer partially applied closure arg by previous function arg 2022-01-18 03:02:21 +03:00
Vincent
09fc43a4d8 Add support of docblock method using parent keyword (fix #7411) 2022-01-17 19:26:42 +01:00
Ricardo Boss
26dd4c5b8f
Try to provide literal int types when possible (fixes #6966) (#7071)
* Fixed vimeo/psalm#6966

* Only accept >= 0 values for mode argument in round()

* Made round() only return float or literal float values and remove unneeded test

* Registered RoundReturnTypeProvider

* Updated cast analyzer to handle single string literal int values as literal ints

* Fixed psalm errors

* Fix invalid property accesses

* Addressed comments

* Added Tests

* Marked RoundReturnTypeProvider as internal

* Fixed CS
2022-01-16 21:33:04 +01:00
orklah
5b82082bbd Merge remote-tracking branch 'upstream/4.x' into upstream-master2 2022-01-15 20:21:00 +01:00
orklah
9a9243e5fe
Merge pull request #7385 from b2pweb/handle-template-on-pseudo-method
Add support of template for docblock methods
2022-01-15 11:26:03 +01:00
orklah
75947c97c6
Merge pull request #7391 from b2pweb/docblock-method-inheritance
Handle inherited docblock method
2022-01-15 11:24:06 +01:00
orklah
d2faa5b94f fix errors after merge 2022-01-14 21:13:34 +01:00
orklah
b633619a2c Merge remote-tracking branch 'upstream/4.x' into upstream-master 2022-01-14 21:01:25 +01:00
orklah
4a85fed181 use Reconciler::RECONCILIATION_* 2022-01-14 19:39:18 +01:00
Vincent
a52362465b Handle inherited docblock method (fix #7198) 2022-01-14 10:30:09 +01:00
Vincent Langlet
9f84da4d6f Try another strategy 2022-01-13 23:57:02 +01:00
Vincent
fe7665aaaf Add support of template for docblock methods (fix #7320) 2022-01-13 11:04:37 +01:00
b9e3979c3f
Cs-fix 2022-01-10 10:22:51 +01:00
a35ccfb0cb
Revert misguided changes 2022-01-10 10:19:12 +01:00
b530f23acc
PHP 8.2: seal all properties by default, add configuration key for lower versions 2022-01-10 10:11:28 +01:00
Matthew Brown
72fd3de886 Simplify return type for TypeExpander::expandAtomic 2022-01-09 16:19:04 -05:00
Matthew Brown
a435bc57b9 Rename was_static property to is_static to be more accurate 2022-01-09 14:45:07 -05:00
orklah
c94e25fa7f refactor the TooFewArguments check to start checking with named arguments 2022-01-09 00:37:16 +01:00
orklah
ce2c6cf438 set the is_list flag for the array inferred for hrtime 2022-01-08 22:48:05 +01:00
Bruce Weirdan
1a1b5a9e6a
Merge branch '4.x' into upstream-master 2022-01-08 23:38:29 +02:00
orklah
afc3a76bc0 Seal the array inferred for hrtime 2022-01-08 22:22:21 +01:00
orklah
9d225086e9 replace empty checks on Union with dedicated method 2022-01-07 21:27:45 +01:00
Bruce Weirdan
762ef8dab4
Merge branch '4.x' into upstream-master 2022-01-07 08:44:32 +02:00
Fabien Villepinte
b9d8dd9d3f
Fix analysis when __invoke() exists 2022-01-06 21:22:18 +01:00
Bruce Weirdan
3fb3db3516
Merge branch '4.x' into upstream-master 2022-01-06 10:05:53 +02:00
Bruce Weirdan
b6559dcefb
Merge pull request #7315 from weirdan/rector-ClosureToArrowFunctionRector 2022-01-06 02:04:10 +02:00
orklah
bf4bf92cb2
Merge pull request #7313 from orklah/empty-arrays
replace `array<never, never>` as a way to detect empty arrays by a dedicated method
2022-01-05 23:58:45 +01:00
Bruce Weirdan
8726065d21
Applied ClosureToArrowFunctionRector 2022-01-06 00:48:04 +02:00
orklah
3c468b3eeb replace array<never, never> as a way to detect empty arrays by a dedicated method 2022-01-05 23:14:54 +01:00
orklah
e7bc6f273a don't crash when pushing a template to in_array 2022-01-05 22:33:20 +01:00
Bruce Weirdan
94395f18a4
Applied JsonThrowOnErrorRector 2022-01-05 19:32:43 +02:00
Bruce Weirdan
dd09450092
Applied NullCoalescingOperatorRector 2022-01-05 13:09:37 +02:00
Bruce Weirdan
5758d31161
Apply literal number separator rector
I opted for customary 3-digit groups, except version id, where 2-digit
groups are used to match the version id encoding.
2022-01-05 01:00:05 +02:00
Bruce Weirdan
b924032850
Mark internal classes @internal 2022-01-03 09:33:22 +02:00
Bruce Weirdan
ab60d311c2
Merge pull request #7188 from vimeo/muglug-use-invalidscalarargument-less 2022-01-03 06:04:42 +02:00
Bruce Weirdan
966b6ae2b2
Merge pull request #6808 from orklah/exitFunctions3 2022-01-03 06:04:01 +02:00
orklah
d912663da4
remove isEmpty 2022-01-03 04:10:41 +02:00
Matthew Brown
2358b96f54
Fix merge errors 2022-01-03 04:10:39 +02:00
orklah
0747b48d06
remove TEmpty 2022-01-03 04:09:59 +02:00
orklah
b658b2738f
remove exitFunctions 2022-01-02 15:20:01 +02:00
Matthew Brown
b419c299e3
Use InvalidScalarArgument only when we can be sure PHP attempts coercion 2022-01-02 14:56:18 +02:00
orklah
8d6b781b3e
use consistent way to compare php version 2022-01-02 13:35:43 +02:00
Bruce Weirdan
36d5a2a83c
Merge pull request #7019 from zoonru/no_ksort_list 2022-01-02 07:37:21 +02:00
Bruce Weirdan
697db76dc1
Merge pull request #7252 from AndrolGenhald/feature/allow-assertions-on-mutable-object-properties 2022-01-02 07:29:02 +02:00
Bruce Weirdan
376d2a389e
Merge pull request #7259 from klimick/infer-this-context-for-psalm-if-this-is 2022-01-02 05:31:24 +02:00
orklah
de95fbdbf2 revert #7054 2022-01-01 19:34:17 +01:00
orklah
2a6f12296e
Merge pull request #7260 from orklah/6691
forbid calling impure callable in immutable context
2022-01-01 12:08:07 +01:00
adrew
0f69483cc1 Fix method storage fetching 2022-01-01 13:33:00 +03:00
orklah
8049438408 forbid calling impure callable in immutable context 2022-01-01 11:13:45 +01:00
adrew
79ea094433 Template resolving for psalm-if-this-is 2022-01-01 13:03:17 +03:00
orklah
51ba96c09d
Merge pull request #7253 from orklah/5874
allow calling mutation_free function inside a mutation_free context
2021-12-31 00:24:29 +01:00
AndrolGenhald
dd631c0c85 Skip reference tests, allow assertions on magic properties (fixes #6770). 2021-12-30 16:23:59 -06:00
orklah
392402cf6d allow calling mutation_free function inside a mutation_free context 2021-12-30 22:29:36 +01:00
AndrolGenhald
3ac497c811 Allow assertions on mutable object properties.
All of the functionality is already there, we just have to not prevent it.
2021-12-30 14:07:55 -06:00
adrew
2355f1bcdb Remove unused use 2021-12-30 22:46:18 +03:00
adrew
4a903c71a1 Checking psalm-if-this-is before applying psalm-this-out 2021-12-30 21:48:25 +03:00
7c24d33bb2
cs-fix 2021-12-30 11:36:56 +01:00
915ddcc620
Add new RedundantFunctionCall issues 2021-12-30 11:36:32 +01:00
82e24d5c1d
Disallow ksorting lists 2021-12-30 11:30:33 +01:00
Bruce Weirdan
03b7e94748
Merge pull request #7232 from trowski/issue-7196 2021-12-30 10:03:17 +02:00
orklah
0b3e1299de overwritten properties 2021-12-27 23:46:23 +01:00
orklah
5f6bb39888 if with common parts 2021-12-27 23:08:19 +01:00
orklah
2baf3b560a unnecessary statements 2021-12-27 23:00:40 +01:00
orklah
926a56a97c
Merge pull request #7230 from orklah/cleanup6
code grooming
2021-12-27 22:54:39 +01:00
orklah
094ffb36f9 phpdoc issues 2021-12-27 22:30:10 +01:00
orklah
3828db52b9
Merge pull request #7229 from orklah/cleanup5
remove always true/false conditions
2021-12-27 22:08:06 +01:00
Aaron Piotrowski
e23a915bb1
Fix first-class callables when used with magic method, built-in, or undefined methods
Closes #7196.
2021-12-27 14:29:33 -06:00
orklah
3ae80983cc fix unused and CS 2021-12-27 20:10:39 +01:00
orklah
9029e1d613 remove always true/false conditions 2021-12-27 19:59:11 +01:00
adrew
c0ca383020 Contextual inference for closure param types 2021-12-27 19:35:37 +03:00
adrew
63a1c71c83
Remove trailing comma 2021-12-27 00:45:25 +02:00
adrew
d6d0fc6704
Remove undefined variables 2021-12-27 00:45:25 +02:00
adrew
2e4d75d6bd
Fix closure param type inference in generic context 2021-12-27 00:45:22 +02:00
orklah
2c9541c1ed flag the context as "inside_conditional" when analyzing leftover cases to prevent emitting unused error 2021-12-23 22:18:27 +01:00
Philip Hofstetter
d45cb64827
allow marking enum cases as @deprecated 2021-12-22 06:16:42 +01:00
orklah
ca25b0f815 always unflag before leaving a analyzer 2021-12-21 18:30:29 +01:00
orklah
b1a1c65714 CS changes 2021-12-21 18:30:29 +01:00
orklah
56369a7ba6 fix wrong handling of flags in context 2021-12-21 18:30:29 +01:00
orklah
1eca2c32ae only emit PossiblyNullArrayAccess if there was no successful destructuring 2021-12-20 22:48:27 +01:00
orklah
cc618bc916 allow successful destructuring to also be null if the source was nullable 2021-12-20 22:48:27 +01:00
rarila
97e6511fab Set number of lines before and after namespace. 2021-12-15 04:58:32 +01:00
ralila
6ee3d44092 Conversion of misc 2021-12-14 02:52:44 +01:00
ralila
19b2a64ce8 Conversion of Psalm\Internal\Analyzer\**\*Analyzer 2021-12-14 02:31:26 +01:00
ralila
c0adde8f45 Conversion of Psalm\CodeLocation\DocblockTypeLocation|Raw 2021-12-14 02:31:26 +01:00
rarila
1c298c4605 Conversion of Psalm\Type 2021-12-14 02:31:22 +01:00
ralila
e32af3c05a Conversion of Psalm\Type\Atomic 2021-12-14 02:26:28 +01:00
adrew
a8d23538b7 Fix closure param type inference with named params 2021-12-12 13:17:15 +03:00
Bruce Weirdan
41ca7f7f7a
Merge pull request #7136 from klimick/forbid-positional-args-after-named 2021-12-12 02:22:51 +02:00
Bruce Weirdan
e08a4f2a2a
Drop unused use 2021-12-12 01:58:45 +02:00
orklah
f79f857ded
Merge pull request #7133 from AndrolGenhald/remove-unused-suppressed
Allow suppressing UnusedPsalmSuppress, remove unused suppressions.
2021-12-11 23:24:31 +01:00
orklah
6632ddf884
Merge pull request #7135 from klimick/fix-closure-param-type-inference
Fix type inference of closure params
2021-12-11 23:10:32 +01:00
orklah
50cc629a43 fix cs 2021-12-11 23:03:10 +01:00
orklah
a1268d94d5 fix some more expressions that can be replaced by getSingleAtomic 2021-12-11 22:37:44 +01:00
adrew
6cf2e31c4a Forbid positional arg after named arg 2021-12-11 23:37:15 +03:00
adrew
989c3ada2e Fix type inference of closure params 2021-12-11 22:51:18 +03:00
AndrolGenhald
23b781163a Use getSingleAtomic() instead of array_values(getAtomicTypes())[0]. 2021-12-11 13:44:34 -06:00
AndrolGenhald
bfe7f96b56 Allow suppressing UnusedPsalmSuppress, remove unused suppressions. 2021-12-11 13:23:00 -06:00
Matthew Brown
4229045c23 Remove array properties that are never read 2021-12-11 11:55:37 -05:00
Matthew Brown
b558748db2 Detect unused properties that are written to inside arrays 2021-12-11 11:42:05 -05:00
orklah
76bb8bc655
Merge pull request #7113 from trowski/first-class-callables
Added support for first-class callables
2021-12-10 22:40:16 +01:00
Aaron Piotrowski
3c5e99ed1e
Revert reorder of getting method return type and checking args
Skipping checking args for first-class callables, but fixes handling of other methods.
2021-12-09 19:02:58 -06:00
orklah
ae765dfba8
Merge pull request #7054 from orklah/6933
fix missing case for displaying varId
2021-12-09 23:54:37 +01:00
Aaron Piotrowski
d5519fc53a
Use $stmt->args directly instead of creating new VariadicPlaceholder 2021-12-09 15:51:48 -06:00
Aaron Piotrowski
1f3a37ff02
Add support for first-class callables 2021-12-09 10:54:49 -06:00
orklah
eefdb95765
Merge pull request #7093 from orklah/7090
don't stop analyzing array, even if we already have a type and we can't create an object like
2021-12-08 22:37:57 +01:00
AndrolGenhald
ba881c80bf Use maybeAdd instead of accepts. 2021-12-08 12:15:32 -06:00
AndrolGenhald
b29fc6ad3c Allow operator overloading for Decimal extension (fixes #3938). 2021-12-08 10:59:37 -06:00
orklah
c17af4128e don't stop analyzing array, even if we already have a type and we can't create an object like 2021-12-07 19:38:52 +01:00
Bruce Weirdan
2530b33dbd
Merge pull request #7076 from klimick/fix-generic-assertion 2021-12-07 08:08:48 +02:00
orklah
257d237192 ignore ComplexMethod: didn't see any easy refactoring 2021-12-06 20:13:33 +01:00
orklah
75312d93b1 Don't crash when checking purity of __callStatic in a trait 2021-12-06 19:00:37 +01:00
Ricardo Boss
2ec77fe29c Make name property of enum cases return non-empty-strings (vimeo/psalm#6964) 2021-12-06 00:33:57 +01:00
adrew
dee3fc4358 try to fix generic assertions for list and array 2021-12-06 02:25:40 +03:00
rarila
39402c233d
Return type hints (#7065)
Co-authored-by: ralila <>
2021-12-05 19:51:26 +02:00
Ricardo Boss
8a230110e8 Fix vimeo/psalm#6968 2021-12-05 15:43:38 +01:00
Bruce Weirdan
e9d9481ea6
Merge pull request #7060 from rarila/codingstyle-convert-fqn 2021-12-05 02:46:03 +02:00
ralila
9902898c4d Remove unnecessary bug circumvention and generate new baseline 2021-12-05 01:15:29 +01:00
Matthew Brown
1956b85c41
Remove always-false args (#7056) 2021-12-04 10:40:52 -05:00
ralila
f833085a15 Fix fqn usage in php-doc 2021-12-04 03:37:19 +01:00
orklah
2612f5a5f1 fix missing case for displaying varId 2021-12-03 23:46:12 +01:00
ralila
30a65685a2 Import instead of using fqn classes 2021-12-03 21:40:18 +01:00
ralila
7c32325e03 Import instead of using fqn constants 2021-12-03 21:25:22 +01:00
ralila
2a956498bf Import instead of using fqn functions 2021-12-03 21:07:25 +01:00
ralila
711be643c6 Import instead of using fqn exceptions 2021-12-03 20:29:06 +01:00
ralila
245920e53c Import instead of using fqn 2021-12-03 20:11:20 +01:00
orklah
a7e9eea0ca
flag usage of get_class outside class without args (#7043) 2021-12-02 00:38:45 +02:00
Bruce Weirdan
28c4f86993
Merge pull request #7027 from rarila/issue-6914 2021-11-30 23:34:00 +02:00
orklah
466137a4c4
Merge pull request #7025 from orklah/6256
flag DeprecatedProperty on static fetch
2021-11-29 23:46:25 +01:00
orklah
328dcb093b fix variable name 2021-11-29 23:41:47 +01:00
orklah
9de9c12851 flag DeprecatedProperty on static fetch 2021-11-29 23:32:27 +01:00
Matthew Brown
175ba83332
Migrate most IssueBuffer::accepts calls to IssueBuffer::maybeAdd (#7020) 2021-11-29 14:54:17 -05:00
ralila
15eb8127ee Reverse parameter list vor preg_match 2021-11-29 14:23:33 +01:00
Bruce Weirdan
28a75652ac
Merge pull request #6997 from zoonru/list_values_paradox 2021-11-29 00:47:12 +02:00
925df22052
Use simplified, proper logic 2021-11-28 13:42:30 +01:00
Bruce Weirdan
03aea28c73
Merge pull request #6995 from vimeo/enum-constants 2021-11-27 21:49:13 +02:00
Bruce Weirdan
97445b52f3
Correctly process constant references on enum-valued variables 2021-11-27 04:32:32 +02:00
2145a2cbbd
Make sure that the keyed array is actually a list after unsetting 2021-11-26 21:52:34 +01:00
00ab986c06
Update IfElseAnalyzer.php 2021-11-26 21:47:17 +01:00
ee8c5c9c35
Remove some array_values 2021-11-26 21:47:17 +01:00
1129ab1475
Raise RedundantCast when using array_values on a list 2021-11-26 21:47:14 +01:00
orklah
a27e729263
Merge pull request #7002 from orklah/listkeyedarray
Disable list flag for TKeyedArray after unset
2021-11-26 21:32:55 +01:00
orklah
4f223db455 Disable list flag for TKeyedArray after unset 2021-11-26 20:52:34 +01:00
Bruce Weirdan
f215ed28d0
Drop special handling of constant references on enums
Internally enum cases are constants, and they should be resolved as
such.

Fixes vimeo/psalm#6994
2021-11-26 06:00:01 +02:00
orklah
3bc06a8eab Taint can't transmit through numerics nor bool 2021-11-25 22:40:01 +01:00
orklah
b42c2814a9
Merge pull request #6971 from orklah/empty-keys
fix counting array properties when some are Never
2021-11-23 20:11:47 +01:00
orklah
eca56c0c1a
Merge pull request #6972 from orklah/unused-throws
prevent Psalm from considering throwing methods as unused just because they're immutable
2021-11-22 22:00:55 +01:00
orklah
1c1e352e5f prevent Psalm from considering throwing methods as unused just because they're immutable 2021-11-22 21:29:57 +01:00
orklah
0d47722195 fix counting array properties when some are Never 2021-11-22 21:13:25 +01:00
orklah
79fa7f5993
Merge pull request #6953 from orklah/callstatic-pure
check __callStatic purity instead of the pseudoMethod purity
2021-11-21 23:02:07 +01:00
orklah
3e56e859a9 fix inheritance 2021-11-21 21:53:24 +01:00
orklah
41fd460db5 check __callStatic purity instead of the pseudoMethod purity 2021-11-21 13:51:19 +01:00
Bruce Weirdan
f5b71a3a5f
Infer mb_strtolower() result as string when encoding is specified
`mb_strtolower()` may return characters we generally consider uppercase
when it's given the encoding argument. This PR makes Psalm to err on the
side of caution and treat the return type as `string` rather than
`lowercase-string` in this case

Refs vimeo/psalm#6908
2021-11-14 03:57:10 +02:00
Thomas Bley
ca2fe166ee Added option to forbid eval() in codebase #6855 2021-11-07 21:06:22 +01:00
sasezaki
5a01c8d601 Added phpcs SelfMemberReference rule, and applied 2021-11-07 15:47:39 +09:00
Bruce Weirdan
9210bbcdd4
Forbid enum instantiation
Fixes vimeo/psalm#6837
2021-11-07 00:14:37 +02:00
orklah
b08d39e567
Merge pull request #6834 from orklah/unused-in-assert
don't consider calls to methods with assertions as Unused
2021-11-06 22:05:34 +01:00
orklah
18677bb108 better understands value and name properties for enum 2021-11-06 21:49:42 +01:00
orklah
9c9669ea44 don't consider calls to methods with assertions as Unused 2021-11-06 19:54:17 +01:00
orklah
ad57516765 create a temporary var for coalescing ternaries 2021-11-05 20:07:35 +01:00
orklah
6e5f3db06c makes $_SESSION possibly undefined 2021-11-04 22:45:46 +01:00
orklah
fffef80ec1 makes $_SESSION possibly undefined 2021-11-04 22:38:31 +01:00
orklah
915278e253
Merge pull request #6823 from orklah/variable_class
allow assertion to work on $var::class
2021-11-04 20:54:59 +01:00
orklah
834d831915 allow assertion to work on $var::class 2021-11-04 20:44:42 +01:00
orklah
5282e4728b allow assertion to work on $var::class 2021-11-04 20:33:30 +01:00
orklah
cd74f665dc
Merge pull request #6813 from orklah/intTaint
don't register taints for numeric variables
2021-11-04 15:30:52 +01:00
orklah
e6dccaa07c
Merge pull request #6809 from orklah/binaryOpTaint
don't taint the result of most binary operations
2021-11-04 13:18:07 +01:00
orklah
bf993452a8
Merge pull request #6810 from orklah/castArrayTaints
Array cast pass taints
2021-11-04 13:17:20 +01:00
orklah
6e49c61fd0 fix comment 2021-11-04 00:31:22 +01:00
orklah
9fb74a4f28 exclude Plus on arrays too 2021-11-04 00:30:09 +01:00
orklah
3b01713257 don't taint the result of most binary operations 2021-11-04 00:30:09 +01:00
orklah
24137bdbad Array cast pass taints 2021-11-04 00:29:36 +01:00
orklah
eca530d792 don't register taints for numeric variables 2021-11-04 00:29:07 +01:00
orklah
ff83c498a7 fix CS 2021-11-04 00:28:40 +01:00
orklah
fbe305e5bb detect taint in backticks 2021-11-04 00:28:40 +01:00
sasezaki
e3c6464a91 accept ::class constant strings for literal argument 2021-11-03 13:44:14 +09:00
Bruce Weirdan
0cdb0dc04a
Merge pull request #6768 from zoonru/psalm-self-out-templates 2021-11-02 21:41:16 +02:00
orklah
96ae8e7600
Merge pull request #6793 from orklah/unevaluatedCode
emit UnevaluatedCode after exit or never returning functionlike
2021-11-01 23:41:36 +01:00
orklah
68a4f9e930 emit UnevaluatedCode after exit or never returning functionlike 2021-11-01 22:13:29 +01:00
Bruce Weirdan
ac098a52da
Allow to forbid exit() and die() 2021-10-31 03:02:16 +03:00
Alexey Borzov
91ec5712ad Add a means to switch return types based on PHP_VERSION_ID
As suggested in vimeo/psalm#6755
2021-10-29 22:19:38 +03:00
orklah
b9effdb28a
Merge pull request #6742 from zoonru/fix_fewer_template_parameters
Fix template parameter collection for child classes with fewer parameters (fixes #6734)
2021-10-28 20:06:11 +02:00
597487c4c9
Assert that $lhs_var_id is defined 2021-10-28 10:50:43 +02:00
5fae548e62
Add template support to @psalm-self-out 2021-10-28 10:44:37 +02:00
9c59550e15
Fully fix recursive template parameter resolution 2021-10-27 10:58:33 +02:00
orklah
70175d8fd2
Merge pull request #6744 from orklah/dont_assert_mixed
Don't assert mixed type
2021-10-26 19:23:13 +02:00
orklah
e8e2624c5f Don't assert mixed type 2021-10-26 19:12:13 +02:00
c0e6f93deb
Fix template parameter collection for child classes with fewer parameters 2021-10-26 13:06:45 +02:00
orklah
9fb959150a
Merge pull request #6730 from orklah/int-template-arithmetics
don't emit issues when doing arithmetics on int templates
2021-10-24 20:39:54 +02:00
orklah
0161dedcdb fix 2021-10-24 19:53:22 +02:00
orklah
2c5cec4a05 fix 2021-10-24 19:48:28 +02:00
orklah
af918a95a2 don't emit issues when doing arithmetics on int templates 2021-10-24 19:30:39 +02:00
orklah
d99f300043 fix concat 2021-10-24 19:15:18 +02:00
orklah
68528985d6
Merge pull request #6724 from orklah/impure_callstatic
flag impure calls made through __callstatic
2021-10-24 10:30:56 +02:00
orklah
a0681a4498 flag impure calls made through __callstatic 2021-10-24 09:55:40 +02:00
orklah
0339815070 fix type leaking when using ternaries 2021-10-23 18:58:05 +02:00
orklah
78a4c78187
Merge pull request #6718 from orklah/5651
fix literal string access on a non empty array
2021-10-23 12:11:39 +02:00
orklah
2cc5c555c2 fix literal string access on a non empty array 2021-10-22 18:17:08 +02:00
orklah
1c0b802abb fix regression 2021-10-21 21:10:12 +02:00
Aleksandr Zhuravlev
b664850cdc Added support of asserting properties of objects out of scope 2021-10-17 21:29:25 +13:00
orklah
64df00baba
Merge pull request #6660 from orklah/cleanup4
Code trimming
2021-10-14 00:12:21 +02:00
orklah
ae193ca4da replace elvis operator by coalesce operator when applicable 2021-10-13 20:16:06 +02:00
orklah
dbc6f503b1 use of strtolower only once 2021-10-13 20:16:06 +02:00
orklah
e17290a9bc
Merge pull request #6613 from orklah/string-unpacking
String unpacking
2021-10-13 15:18:11 +02:00
orklah
91c3d788f6
Merge pull request #6656 from orklah/setAttribute
use Attribute feature of PHP-Parser to avoid dealing with dynamic properties
2021-10-13 14:46:22 +02:00
orklah
bee5b69f7f use Attribute feature of PHP-Parser to avoid dealing with dynamic properties 2021-10-13 13:27:56 +02:00
orklah
9bb731182a reintroduce errors for older versions 2021-10-13 11:22:40 +02:00
orklah
6e7aafe9b8 better behaviour in SimpleTypeInferer 2021-10-13 11:22:40 +02:00
orklah
66bbcc212c remove unneeded argument 2021-10-13 11:22:40 +02:00
orklah
690c24f824 array unpacking with strings 2021-10-13 11:22:40 +02:00
orklah
e7cd2eac0a
Merge pull request #6641 from orklah/weird-assertion-count
Union::getAssertionString with multiple types
2021-10-13 08:15:28 +02:00
orklah
c6fb81007c
Merge pull request #6629 from orklah/loops-tweaking
tweaking with loops
2021-10-11 20:45:54 +02:00
orklah
af414ffe59
Merge pull request #6642 from orklah/inside-conditional
Inside conditional
2021-10-11 20:45:14 +02:00
orklah
911076939c
Merge pull request #6628 from orklah/phpparser2
Php-Parser 4.13
2021-10-11 20:42:32 +02:00
orklah
c4ebc34695 suppress or use the return type 2021-10-11 17:27:52 +02:00
orklah
9e7d3a4cd6 sets the inside_conditional flag after creating another context from it 2021-10-11 16:38:39 +02:00
orklah
2e64854a6c don't allow getAssertionString to return a part of the Union 2021-10-11 16:07:57 +02:00
orklah
3aee938910
Merge pull request #6636 from orklah/possibly-undefined-satisfy-nullable
Allow sending possibly_undefined inputs to optional params
2021-10-10 23:12:38 +02:00
orklah
cc82e6cf41 suppress warning 2021-10-10 13:58:09 +02:00
orklah
1b24b0309c reduce complexity 2021-10-10 13:52:14 +02:00
orklah
69d412bfcb fix error message when input is possibly undefined 2021-10-10 13:42:28 +02:00
orklah
fb8b07613d Allow sending possibly_undefined inputs to optional params 2021-10-10 12:44:04 +02:00
orklah
f159ca76de
Merge pull request #6624 from orklah/float-always-float
invert the meaning of the errors
2021-10-10 10:42:37 +02:00
orklah
39b85f574b revert back wrong change 2021-10-10 10:06:37 +02:00
orklah
70bfce769c revert back wrong change 2021-10-10 10:00:44 +02:00
orklah
df34daee52 more consistency 2021-10-10 00:51:47 +02:00
orklah
7c99878f58 tweaking with loops 2021-10-10 00:21:15 +02:00
orklah
870ee4ff93 ->args to ->getArgs 2021-10-09 23:37:04 +02:00
orklah
bac0217890 add "!" to invert the meaning of the errors 2021-10-09 21:15:27 +02:00
orklah
f62c76a334
Merge pull request #6622 from orklah/return_0
fix @return 0
2021-10-09 18:25:46 +02:00
orklah
a1df08f718 fix an old test 2021-10-09 18:18:15 +02:00
orklah
950b21d10a
Merge pull request #6621 from orklah/incompatible-types-found-for-T
add a little details to the Incompatible types found for T error
2021-10-09 15:10:27 +02:00
orklah
b1f20dffa0 fix brackets 2021-10-09 15:02:49 +02:00
orklah
e9f3e8795f add a little details to the Incompatible types found for T error 2021-10-09 15:01:13 +02:00
orklah
f35df421e2
Merge pull request #6604 from orklah/array-unshift-on-empty-array
Array unshift on empty array
2021-10-07 23:04:10 +02:00
orklah
87a5df6043 only put offset to 0 when there's only one argument 2021-10-07 20:38:10 +02:00
orklah
3fc716ec3b fix CS 2021-10-07 19:39:45 +02:00
orklah
a7c4f0052b foreach on list gives a positive|0 offset 2021-10-07 19:32:25 +02:00
orklah
3a2eddf2d7 pass the method_id to be able to set the new offset type to 0 for array_unshift 2021-10-07 09:46:49 +02:00
orklah
6627055f3b make TypeCombiner override empty-array 2021-10-07 09:46:17 +02:00
orklah
2c728546e4
Merge pull request #6485 from orklah/list-assert
assert that some type is a list
2021-10-04 13:31:34 +02:00
orklah
ac6a75ea7f
Merge pull request #6473 from orklah/double-assert2
assert both sides of an equality
2021-10-04 13:30:38 +02:00
orklah
0e83afdb86
Merge pull request #6518 from orklah/fix-truthy
improvements of alwaysTruthy/alwaysFalsy
2021-10-04 13:29:49 +02:00
orklah
8b07e69645
Merge pull request #6514 from zoonru/if-this-is
Add if-this-is
2021-10-04 09:49:26 +02:00
orklah
53c0a4e63a cleanup 2021-10-04 00:03:06 +02:00
orklah
d3bc179abd cover the case where the call to the function is namespaced but the function doesn't exists in the namespace 2021-10-02 10:02:24 +02:00
orklah
e0b2cb5028 consistency 2021-10-02 10:02:24 +02:00
orklah
0b8681c8bf check namespace before adding assertions 2021-10-02 10:02:24 +02:00
orklah
fa9990ae55 fix wrong method name 2021-10-02 10:02:24 +02:00
orklah
e02eec932e refactor Assertions for is_ functions 2021-10-02 10:02:24 +02:00
orklah
f641d9e95a assert that some type is a list 2021-10-02 10:02:22 +02:00
orklah
f8628ef68c fix errors 2021-10-02 10:01:05 +02:00
orklah
b9e65f066a refactor paradoxical conditions 2021-10-02 10:01:04 +02:00
orklah
85f16e9710 handle the case where analysis failed 2021-10-02 10:01:04 +02:00
orklah
597e9a99d7 Makes BooleanNot smarter 2021-10-02 10:01:04 +02:00
orklah
7f0d25374f add comment 2021-10-02 09:52:19 +02:00
orklah
83ad836e88 assert both sides of an equality 2021-10-02 09:52:19 +02:00
Bruce Weirdan
2e7e343ef8
Merge pull request #6423 from orklah/count-equal-0-negated-assertion 2021-10-02 00:53:03 +03:00
Bruce Weirdan
d232cc0d02
Merge pull request #6553 from orklah/exec-leak 2021-09-30 21:32:55 +03:00
orklah
02ef33c4ac
Merge pull request #6554 from simPod/use-a
Use correct English articles
2021-09-30 09:37:56 +02:00
Simon Podlipsky
4f5e30fd30
Use correct English articles 2021-09-30 09:19:08 +02:00
orklah
3133cd159a fix NPE 2021-09-29 22:30:38 +02:00
orklah
2a2e7c5e32 prevent object leaking that lead to changes in callmap 2021-09-29 22:27:34 +02:00
orklah
ab6efe49b2 fix CS 2021-09-26 23:41:26 +02:00
orklah
38dac34846 unnecessary null initialization 2021-09-26 23:34:32 +02:00
orklah
9170b0af8f replace list() 2021-09-26 23:34:32 +02:00
orklah
2315316b17 return types 2021-09-26 23:34:32 +02:00
orklah
72eab30a3a coalesce operator 2021-09-26 23:34:31 +02:00
orklah
46801c4b98 clearer string operations 2021-09-26 23:34:31 +02:00
orklah
18b0c63de2 shorter operations 2021-09-26 22:44:33 +02:00
orklah
53e4719c19 boolean cast 2021-09-26 22:39:01 +02:00
orklah
c11b32d414 redundant variable check 2021-09-26 22:37:17 +02:00
orklah
ae1afd90c6 coalesce operator 2021-09-26 22:37:17 +02:00
orklah
a5aa824258 unnecessary local variable 2021-09-26 22:37:17 +02:00
orklah
be8406294c unnecessary return 2021-09-26 22:37:16 +02:00
orklah
5b684309fd unnecessary ternary 2021-09-26 22:37:16 +02:00
orklah
153de33704 weird param always false 2021-09-26 22:37:16 +02:00
orklah
4481428f97 unused param 2021-09-26 22:36:17 +02:00
orklah
c0f6474bc6 merging exceptions 2021-09-26 22:36:17 +02:00
orklah
966211e052 unused variable 2021-09-26 22:36:16 +02:00
orklah
afbda6d0f6
Merge pull request #6535 from orklah/SA
Improvements
2021-09-25 20:16:38 +02:00
orklah
41ea541084 unset instead of reassign 2021-09-25 18:11:54 +02:00
orklah
7891e6136a unparsable types 2021-09-25 17:19:50 +02:00
orklah
cc77abaa40 unparsable types 2021-09-25 17:19:45 +02:00
orklah
748d58a1d6 unparsable types 2021-09-25 17:14:57 +02:00
orklah
89f5c12be2 unparsable types 2021-09-25 17:14:10 +02:00
orklah
a9b1248e9f unnecessary phpdoc is necessary 2021-09-25 17:13:58 +02:00
orklah
671a175deb unnecessary phpdoc 2021-09-25 17:08:51 +02:00
orklah
f0b0540563 unparsable types 2021-09-25 17:08:38 +02:00
orklah
3e6bf6f35f remove unused nullable on param types 2021-09-25 16:05:47 +02:00
orklah
a92fee8ae3 better combining 2021-09-25 11:21:06 +02:00
orklah
97e91e6bf0 code trimming 2021-09-25 02:34:21 +02:00
orklah
e6ba6092a6 turn inside_loop to true for do...while 2021-09-23 21:24:17 +02:00
orklah
d3d11471b7 allow arithmetics on variables as long as we're out of loops 2021-09-23 21:24:16 +02:00
orklah
012b65de78 try to improve behaviour 2021-09-23 21:24:16 +02:00
orklah
2b56d52760 rename vars for better diff 2021-09-23 21:24:16 +02:00
orklah
efde3f9180 change order for better diff 2021-09-23 21:24:16 +02:00
orklah
5ec9e6543d try with everything except Variables 2021-09-23 21:24:16 +02:00
orklah
c6949760f8 activate arithmetic operations on properties too 2021-09-23 21:24:16 +02:00
orklah
a70e7032e9 activate arithmetic operations on method calls too 2021-09-23 21:24:16 +02:00