Brown
27a009fd69
Fix #3417 - Treat $this as static-y
2020-05-22 13:32:26 -04:00
Brown
8632cdb3cd
Improve taint tracking during scanning phase
2020-05-22 12:33:48 -04:00
Brown
63c3678ae5
Improve property location resolution
2020-05-22 12:33:38 -04:00
Matthew Brown
187b944680
Add faster taint analysis
2020-05-22 12:33:29 -04:00
Joe Hoyle
6f28d741bc
Display variable assignment type in LSP hovers ( #3401 )
...
* Add node references for variable assignments
* Break up line
Co-authored-by: Matthew Brown <github@muglug.com>
2020-05-20 17:40:22 -04:00
Matthew Brown
3effdc5b69
Improve yield type substitution
2020-05-20 09:12:24 -04:00
Brown
2ec76f01c2
Fix redundant condition
2020-05-19 20:11:25 -04:00
Brown
27cb660377
Respect possibly-undefined array keys while merging
...
Fixes #3393
2020-05-19 20:10:01 -04:00
Brown
a4141a7581
Fix #3327 - convert void to null when comparing conditional type with nullable
2020-05-19 19:48:11 -04:00
Brown
f335560b69
Allow setting property on templated type
2020-05-19 17:31:05 -04:00
Brown
a3214012a6
Only convert userland functions
2020-05-19 16:15:41 -04:00
Brown
4415e0f69c
Fix special case calling callable param with string non-global function
...
Fixes #3411
2020-05-19 15:48:31 -04:00
Brown
b5ae0167a2
Fix typo
2020-05-19 14:58:53 -04:00
Brown
b38d945b12
Cast null and false to empty string
...
Ref #3408
2020-05-19 14:53:06 -04:00
Brown
0b2da18f1e
Break up StatementsAnalyzer
2020-05-19 12:56:30 -04:00
Brown
666cc3b4c9
Fix BinaryOp analysis
2020-05-18 23:00:53 -04:00
Brown
8e5b330c5a
Break apart CallAnalyzer
2020-05-18 22:57:00 -04:00
Brown
5b06c206e0
Move classes into deeper namespace
2020-05-18 22:52:33 -04:00
Brown
ace049a068
Beautify BinaryOpAnalyzer
2020-05-18 18:57:09 -04:00
Brown
8c86d47eb7
Downgrade some PossiblyInvalidClone
issues
2020-05-18 17:18:13 -04:00
Brown
4ca83ca30d
Add slash
2020-05-18 17:05:47 -04:00
Evgeniy
04a576708c
Correct analyze clone expression ( #3382 )
...
* Correct analyze clone, add PossibleInvalidClone issue type
* Infer mixed type when possible incorrect clone
* Remove unused variable
2020-05-18 16:22:50 -04:00
Brown
ea0a99d3a8
Fix bad merge
2020-05-18 16:02:10 -04:00
Brown
5ee1487a01
Make ExpressionAnalyzer more beautiful
2020-05-18 15:13:27 -04:00
SignpostMarv
911ac2d363
Infer numeric-string from (string)$numeric ( #3390 )
...
* adding test for vimeo/psalm#3370
* check if typecast will result in numeric-string
* int & float as per examples in vimeo/psalm#3370
* numeric & numeric-string because they shouldn't lose numericness.
* satisfy phpcs
* adjusting assertions to reflect typecasting change
2020-05-18 13:42:47 -04:00
Brown
21798efed2
Fix #3388 - eliminate null after < 0 check
2020-05-18 08:52:44 -04:00
Matthew Brown
b0ffaf0077
Fix type coercion
2020-05-17 22:51:48 -04:00
RJ Garcia
fd15bfc65d
Infer Return Types for Arrow Functions #3376 ( #3385 )
...
* Infer Return Types for Arrow Functions #3376
- Made a small patch to check for closure or arrow
function when attempting to infer the functions
params
- Added new isExprClosureLike to start to consolidate
all checks on closure/arrow fns
Signed-off-by: RJ Garcia <ragboyjr@icloud.com>
* Use better check
* Remove unused method
Co-authored-by: Matthew Brown <github@muglug.com>
2020-05-17 22:17:35 -04:00
Matthew Brown
4dd0a2b775
Fix #3380 - allow comparisons between template param and empty array
2020-05-16 16:41:07 -04:00
Matthew Brown
f6342a40d9
Remove unnecesary conditional check for do
...
Fixes #3378
2020-05-16 16:32:36 -04:00
Nobu Funaki
abef8008bc
Fix InvalidCast after is_callable([$val, '__toString']) check ( #3372 )
...
Support is_callable() with an array argument similar to method_exists()
2020-05-16 08:50:43 -04:00
Brown
111303d913
Add non-empty-lowercase-string type
2020-05-15 10:18:05 -04:00
Brown
2d92943625
Add support for expansion of type aliases
2020-05-15 00:15:48 -04:00
Brown
c212c03e40
Don’t stop analysing when encountering an UndefinedGlobalVariable
...
Fixes #3366
2020-05-14 22:51:51 -04:00
Brown
006c6e09f1
Add more details to type alias creation
2020-05-14 00:41:50 -04:00
Brown
190c9ce27e
Use TypeAlias object to allow future extension
2020-05-13 19:29:59 -04:00
Brown
0fc3398631
Move parsing methods into internal namespace
2020-05-13 19:12:45 -04:00
Brown
2af0a17d03
Fix #3236 - allow use-checking of more methods starting with __
2020-05-12 22:39:26 -04:00
Matthew Brown
8c236f411a
Fix #3353 - allow extending nested when nested as type is mixed
2020-05-12 15:07:16 -04:00
Brown
d8cd30b34a
Fix #3340 - catch more errors in @method type parsing
2020-05-11 18:39:07 -04:00
Brown
0d5d7c8938
Add null check
2020-05-11 11:56:07 -04:00
Brown
291018034b
Remove unnecessary PHP code
2020-05-11 11:36:50 -04:00
Brown
3554aa4435
Fix crash newly introduced
2020-05-11 09:34:07 -04:00
Brown
eefd2e743b
Use generic function definition for sscanf
...
cc @villfa
2020-05-10 23:58:51 -04:00
Brown
8f2f2617d4
Improve refactor
2020-05-10 22:45:01 -04:00
Brown
5f4d162dd5
Break out type expander into separate class
2020-05-10 22:39:18 -04:00
Brown
48da7a4be8
Fix issues found with Vimeo’s code
2020-05-10 21:09:48 -04:00
Matthew Brown
4b388a2951
Fix ref
2020-05-10 11:35:35 -04:00
Brown
55222573ea
Mark as possibly-undefined any variable that wasn’t present when the loop began
...
Fixes #3332
2020-05-10 11:17:50 -04:00
Brown
28349c6423
Remove mixin_fqcln hack
2020-05-10 09:04:30 -04:00
Brown
58c63bd1b2
Migrate generic param comparison method
2020-05-08 22:49:08 -04:00
Brown
640ffdb324
Fix #3323 - make short object-like arrays sealed tuples
2020-05-08 14:36:06 -04:00
Brown
2d5c2a9dd1
Fix #3324 - prevent crash asserting on possibly-undefined variable
2020-05-08 14:21:10 -04:00
Brown
20bcfb096a
Fix #3305 - use the same issue type for short closures as closures
2020-05-06 09:57:02 -04:00
Brown
a089d8bd58
Fix #3296 - propagate final flag to static calls in return types
2020-05-03 20:42:06 -04:00
Brown
d99fbc0d4d
Remove blank line
2020-05-03 00:26:50 -04:00
Brown
b8a1f5d5c9
Allow destructuring on arrayaccess implementers
2020-05-03 00:08:03 -04:00
Brown
bf5e178d16
Fix #3289 - treat property on non-generic type like actual value
2020-05-02 23:37:59 -04:00
Brown
618a54ff41
Fix #3240 - check arguments when class cannot be found
2020-05-02 22:13:59 -04:00
Brown
d3fba74f75
Fix false-positive
2020-05-02 21:56:28 -04:00
Brown
3e0c4cfb75
Fix #3210 - prevent possibly-null array access from destructure
2020-05-02 20:36:41 -04:00
Brown
29741cd76d
Remove earlier now-unnecessary fix
2020-05-02 19:24:48 -04:00
Matthew Brown
da5e8a4324
Increase type coverage for projects that use assert after mixed
2020-05-02 14:55:30 -04:00
Brown
07e5250292
Fix #3273 - add support for func_num_args() in conditional type
2020-05-01 16:02:53 -04:00
Brown
0d8b56dc78
Fix return type coalescing for conditional return types
2020-05-01 13:04:48 -04:00
Brown
6024447ca0
Expand function-based template types before comparing against inherited
...
Fixes #3276
2020-05-01 12:40:10 -04:00
Brown
5e76467378
Fix #3279 - make sure self/parent references in mixin use existing class
2020-05-01 11:23:02 -04:00
Brown
9e6797d297
Add protection from ComplicatedExpression
2020-04-30 22:23:07 -04:00
Brown
8ab5a0f504
Probably safe to un-negate a class string assertion without autoloader
2020-04-30 12:48:21 -04:00
Brown
21f4deed3b
Fix #3268 - infer generator return for closure
2020-04-29 16:52:37 -04:00
Brown
891c66650b
Prevent unintersectable template lower bounds
...
Ref #3264
2020-04-29 14:57:57 -04:00
Brown
e782329821
Add slashes
2020-04-28 23:42:53 -04:00
Brown
63c190ff83
Fix #3257 - refine as type and clone where necessary
2020-04-28 22:26:54 -04:00
orklah
8571746f8a
Add hook for plugins after FunctionLikeAnalysis ( #3258 )
2020-04-28 15:30:51 -04:00
Brown
a402d4598b
Define with single argument should not trigger a notice
...
Fixes #3254
2020-04-28 14:43:12 -04:00
Brown
95dbb93732
Fix #3237 - allow mixin to reference generic params
2020-04-27 09:10:24 -04:00
Brown
189cd2bdc8
Fix key stringg
2020-04-27 00:50:07 -04:00
Brown
755ada9114
Fix #3234 - infer iterator key types properly
2020-04-27 00:41:34 -04:00
Brown
f91e94b64e
Make sure to remember correct positions of @var references
2020-04-27 00:05:20 -04:00
Brown
10f3bef743
Fix type check
2020-04-26 20:21:24 -04:00
Brown
e65bffc94f
Support intersections with __toString
...
Fixes #3149
2020-04-26 20:04:41 -04:00
Brown
d88c31f461
Support templated @mixin
2020-04-26 16:49:52 -04:00
Brown
83fe3a2fd9
Complain about malformed @property annotation
2020-04-26 10:10:14 -04:00
Brown
e1c6fcc707
Fix #3215 - suppress PossiblyUndefinedMethod in synthetic call
2020-04-24 00:11:32 -04:00
Brown
e9666372d0
Fix coercion
2020-04-22 16:27:43 -04:00
Brown
507f5f4afa
Add context-sensitive conversion
2020-04-22 16:08:04 -04:00
Brown
a670aa7ddc
Fix #3214 - allow if/else branches of conditional to both be arrays
2020-04-22 16:07:13 -04:00
Brown
52c0346b65
Fix #3213 - make sure static is bound from a static call with set class
2020-04-22 11:34:46 -04:00
Fabien Villepinte
a93bf28532
Fix #3045 - ignore mixed assignments to variables named $_ ( #3211 )
2020-04-21 20:18:38 -04:00
Matthew Brown
1b752d06ab
Fix #3201 - add additional constraints on constructor initialisation
2020-04-21 00:04:47 -04:00
Brown
8f57d0c738
Fix #3204 - normalise function ids where possible
2020-04-20 21:38:35 -04:00
Brown
a3ae2a713b
Fix #3182 - don’t allow unnamespaced string references to functions in same context
2020-04-19 21:21:18 -04:00
Brown
e55fe0a0e8
Fix #3188 - register global variables as by-reference ones
2020-04-19 13:15:04 -04:00
Brown
bb46c30e38
Fix #3191 - don’t generate complex assertion from class-string
2020-04-19 12:53:50 -04:00
Brown
2188b6736f
Fix #3162
...
Descend into inherited templates to prevent function-defined templates mapping inappopriately
2020-04-19 12:19:39 -04:00
Brown
3e07684855
Fix iterable coercion for Traversable-extending types
...
Fixes #3159
2020-04-19 09:15:20 -04:00
Brown
d2d795018f
Fix #3138 - fix inherited property template type inference
2020-04-18 16:57:13 -04:00
Brown
edb07952fc
Static call inside throw does not violate purity
2020-04-18 12:43:51 -04:00
Brown
b0455adced
Fix #3177 - prevent crash by using inherited templates
2020-04-18 11:48:22 -04:00
Brown
aa3846758e
Fix #3153 - narrow template types in conditional branches
2020-04-17 09:53:58 -04:00