1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-12 17:27:28 +01:00
Commit Graph

1071 Commits

Author SHA1 Message Date
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
Matthew Brown
c356b579fd Prevent empty @template-extends docblock from being a fatal error
Fixes #1963
2019-07-28 16:47:06 -04:00
Matthew Brown
de932c4c18 Fix #1972 - improve understanding of how setcookie works 2019-07-28 16:40:35 -04:00
Matthew Brown
e58ade5803 Allow lower-cased constant names 2019-07-28 10:06:47 -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
Pavel Batečko
90d020d6fc Improve DOM extension types (#1965)
* Improve DOM extension types

* fixup! Improve DOM extension types
2019-07-23 22:53:31 -04:00
Matthew Brown
c76380174f Fix infinite recursion on property types 2019-07-22 23:54:33 -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
Bruce Weirdan
e0a59ce117 Fixed PHP 7.4 related issues (#1957)
- s/fn/f/g (fn is a reserved keyword in 7.4)
- ReflectionType::__toString() warning (this method is deprecated in 7.4)

Note that some issues are caused by `phpspec/propecy` code and will be
fixed when phpspec/propecy#432 lands. Most were caused by
`ReflectionType::__toString()` usage in
`Psalm\Internal\Codebase\Reflection` though.
2019-07-18 23:36:39 -04:00
Matthew Brown
8d63d5dc4e Add lookup for builtin functions 2019-07-18 23:30:44 -04:00
Matthew Brown
5583ae842e Refactor signature selection a little 2019-07-18 23:08:54 -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
Matthew Brown
74e1b521a5 Add support for completing builtin class names
Fixes #1863
2019-07-17 22:50:57 -04:00
Matthew Brown
ab50c6ce2e Fix #1949 - check that aliased name doesn’t exist before transforming 2019-07-17 20:33:44 -04:00
Brown
59dd6393f5 Fix #1953 - support third arg for explode 2019-07-17 14:13:34 -04:00
Matthew Brown
210a0fc98d Fix #1950 - improve class_parents return 2019-07-17 08:52:05 -04:00
Sergey Melesh
af875439e7 Inherit throws docblock from parent class by default (#1947) 2019-07-14 17:29:04 -04:00
Sergey Melesh
ee1387473f Fix throws docblock inheritance (#1945) 2019-07-13 10:10:51 -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
12eeb8b320 Fix #1935 - clear stub grandchildren 2019-07-11 18:23:02 -04:00
Brown
7268558aa7 Prevent unnecessary warnings 2019-07-11 11:07:39 -04:00
Brown
976d3bf787 Create cache directory if it doesn’t exist 2019-07-11 10:46:12 -04:00
Brown
96ba4ad7d3 Fix #1925 - prevent LogicException when scanning files 2019-07-10 18:59:02 -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
Tim van Dijen
d424cb3ccd Change signature on setcookie / setrawcookie (#1924)
Version 	Description
7.3.0 	An alternative signature supporting an options array has been added. This signature supports also setting of the SameSite cookie attribute.
2019-07-09 15:36:41 -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
6cbf499f14 Fix #1922 - ignore iterable/array when transforming assertions 2019-07-09 07:38:37 -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
5f8d4edc73 Remove unused param 2019-07-07 09:39:21 -04:00
Matthew Brown
bceb4efde9 Fix #1911 - allow proper namespaces in union assertions 2019-07-07 09:14:23 -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
da42be175f Apply PHPCS fixes
Fixes #1880
2019-07-05 16:27:53 -04:00
Matthew Brown
216d8ae4ab Make signature more specific cc @SignpostMarv 2019-07-05 10:44:20 -04:00
Matthew Brown
aa3df3f7a5 Add better support for preg_replace_callback 2019-07-05 10:40:05 -04:00
Matthew Brown
422d9944d8 Fix #1903 - inherit @method from parent interfaces 2019-07-04 22:39:28 -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
Matthew Brown
802016757c Fix #1891 - don’t enter class_alias if the class doesn’t exist 2019-07-04 15:46:24 -04:00
Tyson Andre
af52ad245a Remove unused variables (#1898) 2019-07-04 15:17:28 -04:00
Matthew Brown
efe096c7ab Fix #1897 - add support for unions in @psalm-assert annotations 2019-07-04 15:05:55 -04:00
Matthew Brown
df3d7e1d2c Make line endings mostly all the same 2019-07-03 16:58:27 -04:00
vadim2991
8e8fb2c286 Fix cal_from_jd function return types (#1890) 2019-07-02 10:20:33 -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
Brown
e876feb0ea Allow users to pass file names to Function::getStorage 2019-07-01 14:20:14 -04:00
Matthew Brown
f5809ec24a Only add node references to explicit locations 2019-07-01 11:12:12 -04:00
Teemu Koskinen
93c605b120 ImagickDraw color set methods accept string in addition of ImagickPixel (#1887) 2019-07-01 09:49:19 -04:00
Matthew Brown
0e8fa0e73e Return false in fewer places 2019-06-30 12:06:49 -04:00
Matthew Brown
36e2ea6881 Fix #1822 - update use statements with classes 2019-06-30 11:12:50 -04:00
Matthew Brown
8f1ed61ccb Fix #1876 - allow any bool input for microtime 2019-06-30 09:58:04 -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
Matthew Brown
b9ec254830 Fix memory leak in type parser 2019-06-29 17:09:52 -04:00
Tyson Andre
791b30a6d8 Fix redundant casts/conditions in psalm (#1874)
This includes a check for array_map that was accidentally an assignment
2019-06-29 12:32:44 -04:00
Matthew Brown
fc549a431f Namespace functions 2019-06-29 00:28:31 -04:00
Matthew Brown
f5459e2854 Remove unused var 2019-06-29 00:25:12 -04:00
Matthew Brown
622ad800cc Don’t rescan if the problem is unbalanced braces 2019-06-29 00:22:41 -04:00
Matthew Brown
cb28c44228 Fix #1873 - allow spread operators in inferred property types 2019-06-28 22:28:35 -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
Teemu Koskinen
0568a471de Fix MethodParamsProvider to accept an empty array (ie. no params) from MethodParamsProviderInterface (#1854) 2019-06-27 11:51:56 -04:00
Brown
ba121a94e7 Allow union of class-strings in signature
Ref #1851
2019-06-27 11:44:35 -04:00
Brown
e54f899858 Add pcre.jit message upfront when running Psalm on Macs
Ref #1855
2019-06-27 10:51:13 -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