Matthew Brown
02fbf12337
Only warn about clauses in the currently-scanned conditional
2019-12-08 16:35:56 -05:00
Matthew Brown
2e00ad2240
Treat more things as assignments
2019-12-07 15:58:05 -05:00
Matthew Brown
df395944f8
Change how $changed_var_ids is communicated
2019-12-07 01:23:35 -05:00
Matthew Brown
27c9aa4286
Fix code and test
2019-12-01 10:43:51 -05:00
Matthew Brown
f21150b8ad
Fix #2384 - fix resolution of @param-out template types
2019-12-01 10:40:53 -05:00
Matthew Brown
113bf921f6
Add support for arrow function inference
2019-11-27 10:12:59 -05:00
Brown
0bcb7863f3
Use better system for storing inferred types and assertions
2019-11-25 11:44:54 -05:00
Brown
81f513bb4c
Fix #2358 - always analyse new XXX(...) in unknown method calls
2019-11-18 16:14:21 -05:00
Matthew Brown
5fabf41c8e
Check for not-callable return value
2019-11-14 07:57:22 -05:00
Brown
96586f16c0
Fix phpcs issues
2019-11-11 10:11:42 -05:00
Joram Schrijver
c97ba8f713
Implement type-checking and forbidding for print ( #2314 )
...
* Add type-checking for print
* Allow print to be forbidden
2019-11-08 07:01:34 -05:00
Brown
3d7b34e7f6
Fix #2273 - ensure all template params are bound
2019-11-07 11:03:41 -05:00
Brown
3e98c800ec
Fix #2309 - prevent closure-inferred generic template params overwriting parent ones
2019-11-06 13:13:02 -05:00
Brown
a8ed6ba9c4
Fix #2308 - prevent specialisation from bound params
2019-11-06 11:20:51 -05:00
Brown
1f42843d42
Fix #2296 - use case insensitive closure ids
2019-11-04 14:48:02 -05:00
Matthew Brown
8f421dc0bb
Refactor template calculation out from Psalm\Type\Union
2019-11-03 21:27:40 -05:00
Matthew Brown
5910a362ea
Improve report output of taint analysis
2019-10-19 17:59:10 -04:00
Matthew Brown
9115ffd237
Fix #2215 - refine closure type if it doesn’t clash
2019-10-15 20:34:41 -04:00
Brown
5e649f684c
Fix erroneous return type resolution
2019-10-14 17:10:30 -04:00
Matthew Brown
8c6b234c2c
Improve speed of taint analysis
2019-10-13 20:10:31 -04:00
Matthew Brown
7857b07f91
Fix list-could-be-array issue
2019-10-11 08:24:35 -04:00
Matthew Brown
03c39cbe7c
Fix #2223 - make sure lists are handled in more places
2019-10-10 20:16:43 -04:00
Brown
54d5a25077
Remove known array offsets after altering array
2019-10-09 10:36:55 -04:00
Brown
b75720c32b
Add more list types
2019-10-09 10:04:34 -04:00
Brown
16c33d1565
Add support for list type
...
Fixes #2209
2019-10-08 18:44:46 -04:00
Brown
d225374d6d
Fix #2156 - do better inference after isset
2019-10-01 19:31:08 -04:00
Brown
f8f8b633b1
Suppress a bunch of PossiblyUndefinedArrayOffset issues
2019-10-01 15:44:43 -04:00
Matthew Brown
9f10564184
Add another array addition check
2019-10-01 09:13:31 -04:00
Matthew Brown
95c7b986c2
Fix formatting
2019-10-01 08:46:37 -04:00
Matthew Brown
2ffdf1bacc
Fix undefined numeric offset
2019-10-01 08:45:36 -04:00
Brown
c5ef2516b5
Fix #2150 - add detection for unnecessary @var annotations
...
And also remove them from codebase
2019-09-19 11:59:43 -04:00
Brown
944531b73b
fix #2125 - Don’t assume function args are necessarily authoratative
2019-09-11 13:52:58 -04:00
lhchavez
ae2c6715a7
Allow @psalm-assert to propagate member assertions to the caller's context ( #2100 )
...
This change injects method call assertions that involve member variables
to the caller context by replacing `$this->` with the lhs of the member
call.
Fixes : #2099
2019-09-05 21:00:02 -04:00
Brown
22ba3ada7b
Fix #2081 - allow Assert::true to replace assert() calls
2019-08-29 11:53:36 -04:00
Brown
4db8ca6a1d
Cleanup extra issues from recent fixes
2019-08-27 14:16:34 -04:00
Matthew Brown
03f59ae05e
Check other arguments of array_unshift/array_push
...
Ref #2052
2019-08-25 23:52:38 -04:00
Brown
f00ee740c0
Analyse encapsulated string when method not known
...
Ref #2052
2019-08-23 10:59:59 -04:00
Matthew Brown
738ba81185
Fix #2046 - trigger PossiblyNullArgument when in union with mixed
2019-08-22 23:26:04 -04:00
Brown
e25ce152d6
Fix #2014 - prevent unusedvariable false positive when redefined in assignment ||
2019-08-15 09:43:43 -04:00
Brown
3d01708c6c
Improve backtrace of property-involved issues
2019-08-14 11:47:58 -04:00
Brown
e92896f145
Fix taint records
2019-08-14 09:52:59 -04:00
Matthew Brown
600999a3a8
Add better typing
2019-08-14 00:47:57 -04:00
Brown
d6e084ec9c
Remove false-positive for callmap function arg
2019-08-13 14:53:31 -04:00
Brown
b5614d03f8
Add detection for unused function calls
2019-08-13 13:15:23 -04:00
Matthew Brown
d5b026839c
Add support for different taint types ref #1990
2019-08-12 23:16:05 -04:00
Brown
669b50e8b4
Fix erroneous callable parsing
2019-08-12 15:04:43 -04:00
Brown
d5e2c323d3
Add support for pure-ish instance methods
2019-08-08 14:17:34 -04:00
Brown
14b37b95af
Fix potential recursion
2019-08-06 17:29:44 -04:00
Brown
17753865f3
Add detection to mixed params
2019-08-06 10:33:21 -04:00
Brown
6eb62591ab
Specialise calls when functions are pure
2019-08-05 18:33:33 -04:00
Matthew Brown
b2c0993cdc
Add framework for taint analysis to Psalm
...
Ref #611
2019-08-04 10:37:36 -04:00
Brown
352f18b169
Register so it doesn’t get removed
2019-07-24 17:41:13 -04:00
Brown
5770a6c904
Add support for compact
2019-07-24 17:24:23 -04:00
Brown
c283f0877d
Analyse binary ops always
2019-07-22 18:04:52 -04:00
Matthew Brown
76508e6d64
Improve behaviour of templated template assertions
...
Fixes #1956
2019-07-21 01:40:19 -04:00
Brown
7f0dcae0b2
Always evaluate property calls on mixed methods
2019-07-12 14:39:06 -04:00
Brown
8e149461f0
Remove unnecessary references to had_template
2019-07-10 14:03:13 -04:00
Brown
2c6854f403
Massage arg type after coerced param
...
Ref #1927
2019-07-10 12:12:51 -04:00
Matthew Brown
1ae9ea5fed
Use object instead of by-ref params
2019-07-10 01:35:57 -04:00
Matthew Brown
0e8fa0e73e
Return false in fewer places
2019-06-30 12:06:49 -04:00
LeSuisse
f29826b958
Fully qualify constants and function calls ( #1849 )
...
This should give a small performance boost.
Part of #1837 .
The change is enforced via phpcs and can be autofixed
with phpcbf.
2019-06-26 16:52:29 -04:00
Matthew Brown
c66a106622
Improve performance by doing less cloning
...
Ref #1837
2019-06-26 00:14:06 -04:00
Matthew Brown
c0b86bd40d
Use uppercase template_type_extends keys
2019-06-24 23:43:04 -04:00
Brown
0246f600f4
Fix #1813 - convert object&Foo into Foo after template resolution
2019-06-19 12:00:19 -04:00
Matthew Brown
7155ed4e06
Fix #1811 - improve expected argument count
2019-06-19 09:05:07 -04:00
Matthew Brown
2d5f332ebf
Fix #1781 by improving handling of callmap options
2019-06-15 16:10:48 -04:00
Brown
3c3c8cd3b9
Always analyse class constants
2019-06-07 13:23:52 -04:00
Marco Pivetta
624c7bc6fb
Renamed Fn
to TFn
to allow for PHP 7.4 compatibility
2019-06-03 08:21:25 -04:00
Brown
a060da95bf
Allow MissingParamType alteration to be done in multithreaded mode
2019-05-31 11:55:24 -04:00
Brown
534e4c034b
Fix replacement for inherited methods
2019-05-31 10:37:26 -04:00
Matthew Brown
cd969c51e5
Generate missing param types from callers
...
Fixes #1707
2019-05-31 01:47:35 -04:00
Brown
e85794038f
Fix #1704 - improve type coercion complaints
2019-05-29 14:22:15 -04:00
Matthew Brown
790bc53bfd
Fix #1681 - interpret parent annotation properly
2019-05-25 11:51:09 -04:00
Matthew Brown
9fb96793cd
Fix #1676 - don’t modify original param types with templated by-reference
2019-05-24 18:17:48 -04:00
Brown
29c869ed67
Ignore nullable issues on just-coerced types
2019-05-21 12:59:06 -04:00
Brown
034ea725e8
Coerce generic types from empty
2019-05-21 12:12:13 -04:00
Brown
4ecf370900
Coerce mixed values when passed as arguments
2019-05-21 11:51:41 -04:00
Brown
4a434d9a2f
Add separate issue for undefined classes in docblocks
2019-05-15 18:41:26 -04:00
Brown
d7ee952084
Infer closure param type for array_filter/array_map
...
Fixes #664
2019-05-07 16:27:25 -04:00
Matthew Brown
4f8d6a50d8
Don’t emit MissingClosureReturnType when inside call and type can be inferred
2019-05-06 20:47:55 -04:00
Brown
fec1a60e90
Ref #1600 - partial fix inferring param types when none is available
2019-05-06 18:44:10 -04:00
Brown
4f26c8d749
Fix #1597 - ternary else should only know about first conditional expression
2019-05-02 13:43:18 -04:00
Matthew Brown
e08944cae0
Allow diff mode with --find-dead-code
2019-04-27 17:38:24 -04:00
Brown
0e4c8ce482
Split apart TypeCoercion issues, allowing more granular issue filtering
2019-04-25 18:02:19 -04:00
Matthew Brown
3681762a9b
Add detection for callable variable use
2019-04-23 22:31:38 -04:00
Brown
4807ebe04a
Always evaluate static calls when method call cannot
2019-04-18 13:51:34 -04:00
Brown
a529f74473
Add support for tracking callables
2019-04-17 15:45:40 -04:00
Matthew Brown
ea20a2bd04
Fix #1540 - use correct comparison for callable param types
2019-04-12 00:44:10 -04:00
Brown
808522c36f
Add workaround SoapFault::__construct, fixing #1535
2019-04-09 15:06:10 -04:00
Brown
1348d634ed
Improve handling of variadic parameters
2019-04-09 13:58:49 -04:00
bugreportuser
1a4b9ab25f
Allow suppressing exception issues inline
2019-03-31 14:22:19 -04:00
bugreportuser
4fc7e4affc
Give errors for all uncaught exceptions
2019-03-31 14:22:19 -04:00
Brown
1ab6345bac
Fix treatment of PDOStatement::setFetchMode
...
Fixes #1496
2019-03-29 13:26:13 -04:00
Matthew Brown
230680fd1c
Fix #1513 - use correct param types when examining abstract trait methods
2019-03-28 22:47:17 -04:00
Matthew Brown
e9afd3a6f3
Examine arrays in unknown function calls
2019-03-27 22:13:06 -04:00
Brown
783f028f70
Fix #1498 - use template types from parent function
2019-03-25 11:25:43 -04:00
bugreportuser
8b12751007
Keep track of throw code locations
2019-03-24 23:03:37 -04:00
Matthew Brown
ee56419fd6
Improve accuracy and durability of mixed counts
2019-03-23 09:50:47 -04:00
Brown
b9ba24929d
Refactor storage of template names to prevent clashes
2019-03-22 15:59:10 -04:00
Brown
8d06c6a700
Fix #1480 by remembering where a property was set
2019-03-19 19:43:18 -04:00