Matt Brown
9eda9f9bbf
Fix cs
2021-05-17 19:44:55 -04:00
Matt Brown
21456f51e6
Only call ScopeAnalyzer once on whole function body
2021-05-17 18:52:25 -04:00
Matt Brown
836587ec1d
Fix combination of end states with never
2021-05-17 12:35:27 -05:00
Matt Brown
9635ca620c
Correctly interpret continue 2 in nested loops
2021-05-17 08:26:38 -05:00
orklah
4c4d574bed
better inference of string increment ( #5777 )
...
* better inference of string increment
* fix combination
2021-05-17 07:44:53 -05:00
Matt Brown
f6bdeb6234
Fix switch-with-continue bug
2021-05-17 07:27:58 -05:00
orklah
6501ca7b95
Redundant cast to Int preserve type ( #5773 )
...
* Redundant cast to Int preserve type
* add test
2021-05-15 07:19:18 -04:00
Matt Brown
1195335078
Fix #5768 - call methods with proper params
2021-05-14 22:50:11 -04:00
Matt Brown
5f780e7ef7
Improve count
inference
2021-05-14 20:12:28 -04:00
Matt Brown
c4aea7c82c
Fix #5434 - prevent crash with class-string-map
2021-05-14 19:44:11 -04:00
orklah
1bb4a05725
NullsafeMethodCall makes the variable not null for the rest of the scope ( #5771 )
2021-05-14 19:21:01 -04:00
orklah
0b96f40198
quote offset value ( #5760 )
2021-05-14 17:19:23 -04:00
Matthew Brown
bb8ce8817d
Simplify a bit of logic in switch analysis
2021-05-13 17:31:17 -04:00
Matthew Brown
cc7ff94f7c
Prevent crash when method being called does not exist in reflection
...
Crash seen when running this test in PHP 7.4 because the method does not exist, but the call map includes it in 8.0
2021-05-13 12:40:39 -04:00
Matthew Brown
4873f53f69
Fix issue when two continue/break statements write same variable
2021-05-13 09:39:25 -04:00
orklah
1a59e81808
allow scalar values in return to be accepted, even when the branch has no inferred types ( #5749 )
2021-05-12 18:47:05 -04:00
Matthew Brown
859b4a2caa
Fix #5725 – don’t transform non-docblock types unnecessarily
2021-05-09 12:03:42 -04:00
Vincent Langlet
587b144f0e
Check for ParamName even for method with only one param ( #5732 )
...
* Check for ParamName even for method with only one param
* Fix tests
2021-05-08 19:33:48 -04:00
Bruce Weirdan
58c8e75db3
Suppress issues emitted by MethodComparator at class level ( #5711 )
...
Fixes vimeo/psalm#5698
2021-05-05 21:46:29 -04:00
Bruce Weirdan
9e19653a72
Infer never
return type ( #5710 )
...
* Allow __toString to return never
Fixes vimeo/psalm#5653
* Push $return_is_exit down
* Produce unique control actions
* Test suggesting `@return never`
2021-05-05 01:22:29 -04:00
Matt Brown
f95458be61
Setting values on templated arrays should corrupt them
2021-05-05 00:46:43 -04:00
Bruce Weirdan
0189420814
Inherit class-level suppressions when checking methods ( #5708 )
...
Fixes vimeo/psalm#5687
May fix vimeo/psalm#3357
2021-05-03 22:26:56 -04:00
Matthew Brown
832a190dd4
Support enums ( #5699 )
...
* Add initial enum preparation
* Support cases method
* Ignore bad use error
cc @weirdan
* Fix type
2021-05-03 17:54:09 -04:00
Bruce Weirdan
105c6f3a1c
Remove (and prevent) unused uses ( #5704 )
...
* Updates `slevomat/coding-standard`
* Removes unused uses
* Prevents unused uses
* Fixes a number of symbol case mismatches
2021-05-03 17:22:15 -04:00
Matt Brown
eb71506a59
Fix #5697 - don’t consider docblocks when checking for invariant properties
2021-05-02 10:45:55 -04:00
Matt Brown
12844621b4
Fix #5693 - revert fix for #2048
...
The original fix was just a bit too narrow, and led to this bug
2021-05-01 21:13:42 -04:00
Matt Brown
0f5b117534
Migrate ClassLikeName options to object
2021-04-30 15:01:33 -04:00
Bruce Weirdan
933822e400
Do not consider isset checks on static properties as redundant ( #5525 )
...
* Do not consider isset checks on static properties as redundant
Unlike normal properties, static properties do not have a prescribed
initialization sequence, so they can always be uninitialized (or unset).
Thus `isset()` checks on them are never redundant.
Fixes vimeo/psalm#5489
* Fix issue with nullable is_static
2021-04-25 15:53:07 -04:00
Matthew Brown
85a0ef0456
Revert "Do not consider isset checks on static properties as redundant ( #5525 )" ( #5670 )
...
This reverts commit cd002e6a87
.
2021-04-25 15:46:13 -04:00
Matt Brown
67c5dc3c79
Fix #5517 - don’t let a variable’s by-refness be overwritten by a @var docblock
2021-04-25 15:11:23 -04:00
Matt Brown
7b7354efa3
Fix #5518 - add type for property with variable name
2021-04-25 14:49:43 -04:00
Matt Brown
2fa55d147a
Allow parent class to call child protected method
2021-04-25 12:44:53 -04:00
Matt Brown
419114e1f0
Fix #5662 — prevent crash when reporting mixed issue on virtual arg
2021-04-23 15:34:35 -04:00
Matt Brown
40b6860881
Workaround Phar compaction error
2021-04-18 23:28:34 -04:00
Matt Brown
642f2f435c
Fix #5640 - improve handling of assignments in conditional
2021-04-18 16:16:54 -04:00
Matt Brown
bb0bfda7c5
Improve mic drop variable name
2021-04-18 15:50:50 -04:00
Matt Brown
0acc02e184
Use more descriptive names for properties & variables of if/else handling
2021-04-18 15:38:12 -04:00
Bruce Weirdan
93946d0827
Forbid rejecting named arguments when parent allows them ( #5627 )
...
Fixes vimeo/psalm#5622
2021-04-15 06:55:13 -04:00
Matthew Brown
e505cd58b4
Add use
2021-04-12 23:52:50 -04:00
Matt Brown
f874740c83
Fix phpcs
2021-04-10 22:01:07 -04:00
Matt Brown
b7f122425f
Use proper variable
2021-04-10 21:48:50 -04:00
Matt Brown
012dafad79
Fix #5383 - prevent unsound use of new static for generics
2021-04-10 13:16:19 -04:00
3b3065c881
Allow variable keys with array_key_exists ( #5606 )
...
* Allow variable keys with array_key_exists
* Switch to elseif
2021-04-09 11:29:45 -04:00
AndrolGenhald
870c433dc2
Check oldest ancestor for protected method visibility ( fixes #5595 ) ( #5597 )
2021-04-07 22:01:41 -04:00
Matt Brown
a469c82653
Fix #5587 - detect final class calls when routed through parent
2021-04-06 12:35:09 -04:00
Matt Brown
7080bc3bff
Fix #5578 - variables always set in conditionals should be combined
2021-04-06 11:11:40 -04:00
Matt Brown
517b2030c9
Fix #5545 - throwing uses method
2021-04-04 21:17:12 -04:00
AndrolGenhald
d022910599
ConcatAnalyzer improvements and non-falsy-string fixes. ( #5544 )
...
* ConcatAnalyzer improvements.
Deduplicate code.
Improve type inference.
Allow literal type inference when only one side has multiple types (fixes #5483 ).
Fix invalid type inference with negative int as right operand.
* Fix inference to be lowercase-string when concatenating int.
* Fix TNonEmptyLowercaseString to not be subtype of TNonFalsyString.
'0' is a non-empty-lowercase-string that is falsy.
* Fix other issues with non-falsy-string.
* Nest ands and ors
Co-authored-by: Matthew Brown <github@muglug.com>
2021-03-31 23:16:21 -04:00
Matt Brown
fe97aa0722
Fix #5542 - nullsafe method calls are assumed used
2021-03-31 10:08:52 -04:00
Matt Brown
150dd00060
Fix #5540 - function is used inside throw expression
2021-03-31 10:03:25 -04:00