Matthew Brown
b6d0aeaa9c
Avoid erroneous issue suppression complaints
2019-08-18 14:56:47 -04:00
Matthew Brown
eb50aad3a1
Fix offsets when checking function suppressions
2019-08-18 14:44:45 -04:00
Matthew Brown
2a5e0d8f39
Fix #1444 - track unused suppressions
2019-08-18 14:27:50 -04:00
Matthew Brown
2146f73782
Prepare for tracking unused suppressions
...
Ref #1444
2019-08-18 12:25:48 -04:00
Matthew Brown
1e400c5e1d
Add slash
2019-08-18 11:24:14 -04:00
Matthew Brown
b098b4e3b2
Fix implicit cast
2019-08-18 11:21:26 -04:00
Matthew Brown
f5b9dfe543
Add support for @psalm-scope-this
...
Ref #2032
2019-08-18 11:18:10 -04:00
Tyson Andre
ce03be2dc0
Add BeforeAnalyzeFileInterface ( #2034 )
...
This is a prerequisite of the plugin I mentioned in #378
This may be useful for other types of plugins
(e.g. checking raw file contents or file names)
2019-08-18 10:40:07 -04:00
Matthew Brown
62dff200d5
Fix redundant condition
2019-08-17 18:02:38 -04:00
Matthew Brown
b6dc8f547e
Fix #2031 - still get class const return type after defined check
2019-08-17 18:01:24 -04:00
lhchavez
c98c160907
Allow explicitly-annotated mixed assignments ( #2030 )
...
This change makes it possible to assign mixed expressions to variables
if an annotation is explicitly added to the variable. This allows the
use of `call_user_func` without needing to suppress issues.
Fixes : #1374
2019-08-17 11:22:43 -04:00
Matthew Brown
ac7354605a
Fix bad Psalm issue
2019-08-16 23:33:28 -04:00
Matthew Brown
9c616aa5c6
Remove pure function calls when removing unused variables
2019-08-16 23:19:52 -04:00
Brown
43041836dd
Fix #2026 - add support for calling __toString implicitly after method_exists
2019-08-16 11:33:58 -04:00
Brown
538abbc54c
Fix #2020 - allow static::CONST_NAME to have non-mixed type in final class
2019-08-15 10:41:30 -04:00
Brown
86264a736b
Fix dumb change
2019-08-15 10:07:31 -04:00
Brown
57386ab26e
Fix #2023 - no UnusedVariable complaint when method is undefined
2019-08-15 09:51:40 -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
01c876e9cb
Remove stray comma
2019-08-14 00:50:35 -04:00
Matthew Brown
600999a3a8
Add better typing
2019-08-14 00:47:57 -04:00
Brown
c3949e3194
Improve taint protection for exec-related commands
2019-08-13 19:18:50 -04:00
Brown
2b2988b072
Fix #2019 - allow union in @throws
2019-08-13 15:44:18 -04:00
Brown
d6e084ec9c
Remove false-positive for callmap function arg
2019-08-13 14:53:31 -04:00
Brown
0468d11158
Detect function in array access op
2019-08-13 14:07:45 -04:00
Brown
da230bc9f1
Change the type of @throws error to UndefinedDocblockClass
2019-08-13 13:41:12 -04:00
Brown
3ff2a64e16
Don’t complain about untyped properties missing constructors
2019-08-13 13:38:15 -04:00
Brown
b5614d03f8
Add detection for unused function calls
2019-08-13 13:15:23 -04:00
Matthew Brown
7533949667
Preserve taintedness of str_replace
2019-08-13 08:07:16 -04:00
Matthew Brown
a4b9b7311b
Improve message a bit
2019-08-12 23:58:40 -04:00
Matthew Brown
ef3771d643
Fix #2015 - complain about invalid @throws classes
2019-08-12 23:42:51 -04:00
Matthew Brown
d5b026839c
Add support for different taint types ref #1990
2019-08-12 23:16:05 -04:00
Brown
58b6d8bed4
Fix #2012 - count(callable-array) is fine and always equals 2
2019-08-12 16:17:55 -04:00
Brown
10b8a94564
Fix #2007 - improve unused variable detection in always-entered loops
2019-08-12 16:01:24 -04:00
Brown
669b50e8b4
Fix erroneous callable parsing
2019-08-12 15:04:43 -04:00
Brown
4046b44903
fix #2010 - properties with defaults should work with static type
2019-08-12 14:29:14 -04:00
Tyson Andre
b88fe2cfe0
Fix typos ( #2003 )
2019-08-11 17:13:43 -04:00
Matthew Brown
7ed30cd5b0
Add support for @readonly annotation
2019-08-11 16:01:37 -04:00
Matthew Brown
fac7df2ee0
Explicitly mixed properties need not be initialised
2019-08-11 00:25:30 -04:00
Matthew Brown
7c6b1581d3
Add warnings about uninitialised properties to mixed as well
2019-08-11 00:22:28 -04:00
Matthew Brown
60c0133fff
Break apart reconciler
2019-08-10 13:22:21 -04:00
Matthew Brown
3f78082720
Fix is_string call
2019-08-10 09:16:32 -04:00
Matthew Brown
460120ec45
Fix #1994 - make assert-if-true work for $this properties
2019-08-10 09:12:02 -04:00
Brown
5254b7501e
Fix #1996 - detect unused variable in static property name
2019-08-09 12:55:47 -04:00
Brown
bdac01582d
Fix #1989 - support fully-qualified params in @method annotations
2019-08-08 17:25:56 -04:00
Brown
d5e2c323d3
Add support for pure-ish instance methods
2019-08-08 14:17:34 -04:00
Matthew Brown
747782d258
Fix #1987 - avoid inferredType not being null
2019-08-07 22:41:26 -04:00
Brown
955899ade0
Builtin functions are assumed to be pure
2019-08-07 15:21:15 -04:00
Matthew Brown
50bd18c404
Fix #1985 - prevent complicatedExpressionException from breaking analysis
2019-08-06 22:58:53 -04:00
Brown
16a1dc8538
Fix errors
2019-08-06 18:56:36 -04:00
Brown
14b37b95af
Fix potential recursion
2019-08-06 17:29:44 -04:00
Brown
fc8d2bd563
Do more taint creation for magic properties
2019-08-06 14:27:21 -04:00
Brown
37d93141c4
Only register taints on known magic properties
2019-08-06 13:05:34 -04:00
Brown
0dc6b74fb4
Add taintedness to magic property fetches
2019-08-06 12:54:12 -04:00
Brown
17753865f3
Add detection to mixed params
2019-08-06 10:33:21 -04:00
Matthew Brown
8f6d432dd0
Add support for magic property comprehension
2019-08-05 23:19:22 -04:00
Brown
6eb62591ab
Specialise calls when functions are pure
2019-08-05 18:33:33 -04:00
Brown
87bf907c1e
Fix echo checks
2019-08-05 10:21:23 -04:00
Matthew Brown
b2c0993cdc
Add framework for taint analysis to Psalm
...
Ref #611
2019-08-04 10:37:36 -04:00
Matthew Brown
ea1f9874fb
Remove more memory leaks
2019-08-02 01:55:24 -04:00
Brown
3a1a3ebc47
Fix #1980 - don’t complain about UnusedVariable after continue
2019-07-31 17:35:56 -04:00
Brown
c67e38aded
Rename var to be more uniform
2019-07-31 17:14:00 -04:00
Matthew Brown
f718c2fca1
Fix #1974 - prevent bad property defaults on static properties
2019-07-29 22:18:46 -04:00
Matthew Brown
90854c4094
Fix broken behaviour when analysing interface test methods
2019-07-28 19:44:36 -04:00
Matthew Brown
f432cc0884
Fix #1846 - warn about missing interface return types
2019-07-28 19:03:12 -04:00
Brown
8cb5d012d9
Check expressions in variable name static calls
2019-07-25 09:45:11 -04:00
Matthew Brown
2c89a97f91
Fix #1970 - make sure reconciled types are templated
2019-07-25 08:33:27 -04:00
Matthew Brown
5a4a133f50
Fix #1970 - allow comparison to templated param class
2019-07-24 22:13:51 -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
ea2074b19b
Allow suppression of unused variable issues
2019-07-24 17:01:41 -04:00
Brown
e22e0ac92c
Fix unused ref in assign op
...
Fixes #1968
2019-07-24 16:53:14 -04:00
Jeffrey Yoo
ed61bcafda
Issue 1926 unused variable ( #1967 )
...
* add support for Psalter to remove UnusedVariable
* fix issues found by Psalm
* fix stylistic issues found by phpcs
* added more stylistic changes and suppressed UndefinedClass error for Psalm
* suppress TypeDoesNotContainType error for CheckTrivialExprVisitor
* fix whitespace issue raised by phpcs
* fix bug where partial removal of assignment by ref does not process '&' symbol
* Remove workspace files
* remove 'Array_' and 'ArrayItem' classes from blacklist and add 'New_' class to the blacklist
2019-07-24 16:48:54 -04:00
Brown
c283f0877d
Analyse binary ops always
2019-07-22 18:04:52 -04:00
2e3s
f15cc7dd5b
Mark private properties unused when referenced only in constructor ( #1962 )
...
* Mark private properties unused when referenced only in constructor
If a private property is used only in constructor then most likely
it's a dead code since there is no need to have the class property.
But such static properties can be accessed between the calls.
* Ignore the private property issue on alter
* Fix the related dead code psalm
* Add a missing condition into the test
2019-07-21 23:29:16 -04:00
Matthew Brown
3d4adee6b3
Reduce with / before converting back
2019-07-21 11:03:02 -04:00
Matthew Brown
76508e6d64
Improve behaviour of templated template assertions
...
Fixes #1956
2019-07-21 01:40:19 -04:00
Tyson Andre
5d5a9c6eac
Remove redundant casts and unused use statements ( #1955 )
...
* Remove redundant casts
(not sure about older versions of php-parser)
* Remove unused use statements
2019-07-18 23:37:36 -04:00
Matthew Brown
0e6bd79a09
Allow completion from functions to work without namespacing cc @iluuu1994
2019-07-18 21:50:59 -04:00
Matthew Brown
3df248eea2
Add concept of purity to functions and methods
2019-07-18 01:31:48 -04:00
Brown
59dd6393f5
Fix #1953 - support third arg for explode
2019-07-17 14:13:34 -04:00
Brown
7f0dcae0b2
Always evaluate property calls on mixed methods
2019-07-12 14:39:06 -04:00
Brown
1208437b4c
Fix #1940 - allow proper evaluation of /a/b/../../
2019-07-12 14:28:21 -04:00
Brown
7268558aa7
Prevent unnecessary warnings
2019-07-11 11:07:39 -04:00
Brown
8e149461f0
Remove unnecessary references to had_template
2019-07-10 14:03:13 -04:00
Brown
2cb7625515
Fix #1932 - coerce empty array passed as template param to general
2019-07-10 13:54:06 -04:00
Brown
e7aadee88f
Fix #1931 - narrow down property assignment
2019-07-10 13:49:11 -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
Brown
884a03078b
Fix #1886 - derived types from templates in new calls should be coercable
2019-07-09 14:48:26 -04:00
Matthew Brown
5c4ac97546
Fix #1915 - allow @psalm-assert-if-true to operate on $this
2019-07-07 15:06:03 -04:00
Matthew Brown
30ecde2272
Overwrite var when try exits
2019-07-07 14:00:49 -04:00
Matthew Brown
cd715a60fd
Fix #1909 - populate var scope if try always leaves
2019-07-07 13:52:43 -04:00
Matthew Brown
e6bd30cc0b
Allow closures to contain templated @var docblocks
...
Fixes #1865
2019-07-06 00:18:53 -04:00
Matthew Brown
d29c7b42d9
Fix #1869 - don’t memoize magic properties after set
2019-07-06 00:00:17 -04:00
Matthew Brown
cd33430616
Fix #1885 - allow comparison to templated class string
2019-07-05 22:57:38 -04:00
Matthew Brown
b4f03abca6
Fix #1886 - allow empty array to be coerced to a mixed one
2019-07-05 17:44:22 -04:00
Matthew Brown
457781bb02
Fix #1902 - template trait method when extended
2019-07-04 22:26:40 -04:00
Matthew Brown
678d4e5286
Fix #1901 - improve loop-based handling of vars after continue
2019-07-04 20:38:52 -04:00