Bruce Weirdan
185827a7ab
Continue analysis after unknown exception being caught ( #5348 )
...
Fixes vimeo/psalm#5188
2021-03-11 00:08:02 -05:00
Bruce Weirdan
71a0457284
Emit ImplicitToStringCast in more places ( #5344 )
...
* Emit ImplicitToStringCast in more places
Fixes vimeo/psalm#5320
`to_string_cast` is set on successful comparison, thus it needs to
always bubble up (it will be ignored in UnionTypeComparator if some part
does not match).
* Fix implicit casts
* Fix handling of string method references in self-out context
2021-03-11 00:07:39 -05:00
Matt Brown
96e0743892
Fix #5325 – remove all memoised methods when calling a method with property mutations
2021-03-05 00:39:25 -05:00
Matt Brown
bca09d74ad
Fix style issues
2021-02-25 21:24:18 -05:00
Matt Brown
474ebf912e
Fix #5229 - new SomeTemplatedClass should expand out params even if none passed
2021-02-25 21:20:05 -05:00
Matt Brown
d4841993b2
Fix #5279 - don’t convert get_class($templated) into dependent type
2021-02-25 18:43:04 -05:00
Matt Brown
b2c35834ff
Remove mistakenly-duplicated code for get_* functions
2021-02-25 18:40:05 -05:00
Matt Brown
7958ef6889
Decomplicate method
2021-02-24 00:03:55 -05:00
Matt Brown
cafbdb6831
Fix #5264 - use accurate static type when calling parent method in trait
2021-02-23 20:48:22 -05:00
Matt Brown
78577fd624
Fix #5257 - allow object::foo() call
2021-02-23 17:31:14 -05:00
orklah
69eb8e4999
display PHP version when not understanding an expression ( #5268 )
2021-02-22 13:15:34 -05:00
elnoro
e1d6f2f491
Fixed 4788 ( #5263 )
2021-02-22 09:21:28 -05:00
Matt Brown
6ba899e34e
Only replace static type once
2021-02-22 00:25:13 -05:00
Matt Brown
3106635953
Fix inference of conditional types when wildcard constant given
2021-02-20 12:21:52 -05:00
orklah
7b24552534
Fix not always positive bit operations ( #5233 )
...
* Fix not always positive bit operations
* Fix not always positive bit operations
* add test
2021-02-15 23:10:42 -05:00
orklah
5191dac3fa
Introduce Virtual Nodes in order to differentiate real nodes in plugins ( #5222 )
2021-02-15 16:18:41 -05:00
Matt Brown
b7792ab0b4
Fix static method call completion with variable assignment after
2021-02-15 00:45:39 -05:00
Matt Brown
bd6efd7cf2
Improve completion for namespaced classes
...
cc @joehoyle - this mainly allows us to get a correct list when the user starts typing Foo (without the new before it) inside a namespace
2021-02-14 23:25:13 -05:00
Matt Brown
00288c14c5
Fix param
2021-02-13 16:23:11 -05:00
Matt Brown
6fb7423c68
Fix #5211 - prevent infinite loop in template inference
2021-02-13 16:16:58 -05:00
Alberto Piai
144bb37f76
Fix array_key_exists() with all int literal keys ( #5197 )
...
When checking code like the following:
```
<?php
function checkNegated(string $key): void {
$arr = [
0 => "foo",
1 => "bar",
];
if (!array_key_exists($key, $arr)) {
printf("not found\n");
}
}
function check(string $key): void {
$arr = [
0 => "foo",
1 => "bar",
];
if (array_key_exists($key, $arr)) {
printf("found\n");
}
}
```
the `if` in `checkNegated` would cause:
```
ERROR: RedundantCondition - 9:10 - Type string for $key is never =int(0)
```
This happens when the array keys are all int literals, but the "needle"
is a string.
`array_key_exists()` uses a loose equality comparison, but the generated
assertions for this specific case
(`AssertionFinder::getArrayKeyExistsAssertions`) was generating strict
equality clauses. This commit fixes it by changing the generated clause
from `=` to `~`.
2021-02-12 17:00:38 -05:00
Matt Brown
044602a244
Fix #5196 - fix type before assigning default property values
2021-02-11 09:38:04 -05:00
Matt Brown
ccdb29abfa
Improve handling of property-mutating calls
2021-02-10 12:09:21 -05:00
Matt Brown
2dc86651a4
Check context var exists
2021-02-09 14:13:24 -05:00
orklah
88fe805c27
Prevent throwing a division by zero when encountering a literal division by zero ( #5182 )
2021-02-09 11:48:59 -05:00
Matt Brown
c7b7da46e9
Add slashes
2021-02-09 11:48:24 -05:00
Matt Brown
8aaa489733
Make more operations generic-safe
2021-02-09 11:37:48 -05:00
Matt Brown
b9dac8c46c
Add slashes
2021-02-09 10:57:19 -05:00
Matt Brown
a955dabfe5
Account for context var not existing
2021-02-09 10:46:33 -05:00
Matt Brown
2b9d307cab
Fix #5184 - remove this vars from parent context where possible
2021-02-09 10:23:22 -05:00
Matt Brown
ecfc4726d7
Limit removal of vars further
2021-02-09 00:53:09 -05:00
Matt Brown
ad0b575080
Better fix for #5180
2021-02-08 23:31:49 -05:00
Matt Brown
9b8fdf154d
Revert "Allow refinement of $this properties based on subclass"
...
This reverts commit 1d5d2403e2
.
2021-02-08 22:50:50 -05:00
Matt Brown
1d5d2403e2
Allow refinement of $this properties based on subclass
...
Fixes #5180
2021-02-08 22:46:32 -05:00
Matt Brown
3be1bb7342
Limited fix for #5028
2021-02-07 22:56:37 -05:00
Matt Brown
8b5e0fc754
Fix #5172 - prevent calling function with implicitly-broader type
2021-02-07 11:07:22 -05:00
Bruce Weirdan
b72c5a0fa2
Mark variables in throw arguments as used ( #5166 )
...
Fixes vimeo/psalm#5164
2021-02-06 22:07:01 -05:00
orklah
343d020408
improve psalter capacities for anonymous class extending real classes ( #5146 )
2021-02-04 09:59:38 -05:00
Matt Brown
7dbdc8c59e
Fix #5144 - prevent exception during taint analysis
2021-02-02 14:16:15 -05:00
Matt Brown
0f2a07a9a3
Fix #5137 – support @psalm-flow in methods
2021-01-31 22:40:48 -05:00
Joe Hoyle
a3dcc52e9a
Track references on global variables ( #5122 )
...
* Track references on global variables
Add global type references to the type map, and fix up unused detection on global variables.
* Add null assertions
* PHPCS
2021-01-28 18:58:02 -05:00
Joe Hoyle
5759472168
Add constant fetch to reference map ( #5115 )
...
* Add constant fetch to reference map
To support showing constant types on hover of constant references, we need to add them to the ref map.
* Fix root constants
* PHPCBF
2021-01-28 11:18:28 -05:00
Matt Brown
359a0166e3
Fix #4631 - prevent reusing named params
2021-01-27 22:53:55 -05:00
Matt Brown
4807d38507
Fix using std library functions
2021-01-27 22:28:33 -05:00
Matt Brown
3c58220f3a
Fix #5097 - memoise more things during null coalesce
2021-01-26 23:10:57 -05:00
Matt Brown
76269658ca
Fix #5107 - treat function-bound templated parameters the same
...
Previously they were treated differently depending on whether or not they were inside a method
2021-01-26 22:43:42 -05:00
Matt Brown
0624098865
Ensure getId() output can always be parsed as a type
...
Ref #5105
2021-01-25 23:41:51 -05:00
Matt Brown
6f30399189
Fix #5070 – fix static return type inference in static methods
2021-01-22 09:58:09 -05:00
Matthew Brown
28d2795e59
Fix #5078 - when unpacking with missing array item, Use the param’s default type if param has one
2021-01-22 00:20:51 -05:00
Bruce Weirdan
d296c4bb9a
Add missing dataflow population in array spreads ( #5059 )
...
Fixes vimeo/psalm#5057
2021-01-20 17:42:11 -05:00