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
Matthew Brown
6dd549b8a6
Fix #1900 - discard old references to code after an assignment
2019-07-04 17:35:33 -04:00
Matthew Brown
d0f6f85dba
Fix #1899 - detect dead code after array assignment
2019-07-04 16:38:31 -04:00
Tyson Andre
af52ad245a
Remove unused variables ( #1898 )
2019-07-04 15:17:28 -04:00
Brown
5c76b3c82d
Fix #1888 - add go-to-variable
2019-07-01 18:48:33 -04:00
Ilija Tovilo
67c3726254
Implement signature help - closes #1841 ( #1862 )
...
* Implement signature help - closes #1841
* Add explicit signature count
* [LSP] Do analysis for every signatureHelp request
See here: https://github.com/vimeo/psalm/pull/1862#issuecomment-507007346
* Don’t language server information when checking property for init
* Fix signature help for functions
* Add try-catch around signature help Functions::getStorage()
2019-07-01 15:54:32 -04:00
Matthew Brown
f5809ec24a
Only add node references to explicit locations
2019-07-01 11:12:12 -04:00
Matthew Brown
0e8fa0e73e
Return false in fewer places
2019-06-30 12:06:49 -04:00
Matthew Brown
ca53019d6b
Simplify class completion lookup
...
Ref #1822
2019-06-29 21:32:26 -04:00
Matthew Brown
9ab3161675
Fix issues found by Psalm
2019-06-29 21:13:02 -04:00
Matthew Brown
6b7788b502
Fix FileAnalyzer memory leak
2019-06-29 21:06:21 -04:00
Matthew Brown
436ccae819
Fix SwitchAnalyzer memory leak
2019-06-29 19:20:09 -04:00
Brown
62c37a84f2
Fix tokenising bug found while analysing Phan cc @TysonAndre
2019-06-28 12:29:39 -04:00
Brown
87e2300b65
Don’t stop analysing after class_exists
2019-06-28 11:22:58 -04:00
Brown
5943f6036e
Fix #1859 - allow function_exists introspection when function exists
2019-06-28 10:48:30 -04:00
Brown
6514f2084c
Fix #1860 - be less restrictive about class_exists checks
2019-06-28 10:17:59 -04:00
Brown
6b32565a9b
Allow references to deprecated class inside the class
2019-06-27 13:36:39 -04:00
Brown
c4eb127f11
Fix treatment of class_exists
2019-06-27 10:17:11 -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
Brown
e4e48d2d06
Add support for templated @var on return statements
2019-06-26 16:33:43 -04:00
Brown
1864d9a2be
Allow templated @var on return docblocks
2019-06-26 16:26:14 -04:00
Brown
5ed49c0c03
Fixed #1848 - allow static class strings to be compared
2019-06-26 15:11:16 -04:00
Matthew Brown
c66a106622
Improve performance by doing less cloning
...
Ref #1837
2019-06-26 00:14:06 -04:00
Brown
16bf5f11e1
Fix #1845 - prevent string return when expecting template
2019-06-25 15:06:02 -04:00
Brown
91686bef4b
Improve robustness of template checks
2019-06-25 13:20:30 -04:00
Matthew Brown
d96246a824
Improve template handling robustness
2019-06-25 09:06:23 -04:00
Matthew Brown
5cb6fe14d7
Add support for doubly-extended non-template params
2019-06-24 23:57:19 -04:00
Matthew Brown
9d998bf3ac
Fix handling of inherited method call
2019-06-24 23:43:06 -04:00
Matthew Brown
c0b86bd40d
Use uppercase template_type_extends keys
2019-06-24 23:43:04 -04:00
Brown
23a3b0dbc0
Fix #1842 - prevent bad templated object returns
2019-06-24 19:07:29 -04:00
Brown
69b05f5052
Improve handling of parent method calls
2019-06-24 17:45:10 -04:00
Brown
4baa4d70d8
Allow templated static type in fleshOutType
2019-06-24 15:08:55 -04:00
Brown
2a1ed6ca6a
Prevent incorrect template being passed to function
2019-06-24 10:54:03 -04:00
Matthew Brown
4735955829
Fix #1835 - move reference generation before argument analysis
2019-06-23 08:08:00 -04:00
Matthew Brown
31c8a2e4d7
Add offsets to type tokenisation
...
Ref #1832
2019-06-22 23:30:40 -04:00
Brown
aa6677a177
Add autocompletion for some classes
...
Ref #1822
2019-06-21 17:10:35 -04:00
Brown
ac06ea659e
Fix #1825 - improve behaviour of callable reconciliation
2019-06-20 19:46:42 -04:00
Brown
a5a9da6e50
Fix #1818 - handle intersection when expanding template
2019-06-20 10:09:03 -04:00
Matthew Brown
d845cdf0c5
Fix #1458 by making instanceof static same as === static
2019-06-20 08:37:57 -04:00
Brown
bdf54ae1fa
Fix #1814 - warn about deprected ::class access
2019-06-19 12:42:51 -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
Brown
b12f05185a
Fix #1799 - support trailing commas in object-like docblock types
2019-06-18 17:47:06 -04:00
Brown
1bdd444ce6
Fix #1802 - ensure directory exists before moving file
2019-06-18 17:16:10 -04:00
Brown
10613192c9
Fix #1803 - complain about DeprecatedClass when using its constants
2019-06-18 16:21:04 -04:00
Matthew Lewinski
ac0a9d1514
Add a 'sonarqube' report type ( #1808 )
...
This JSON report is suitable for import into either SonarCloud or
SonarQube as Generic Issue Data (also known as an External Issue
Report).
https://docs.sonarqube.org/latest/analysis/generic-issue/
2019-06-17 21:17:09 -04:00
Brown
250ef02687
Fix #1801 - add support for class_exists(Foo::class) too
2019-06-17 11:31:43 -04:00
Matthew Brown
a0866da88e
Strip extranous data
2019-06-16 12:45:02 -04:00