1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-14 18:36:58 +01:00
Commit Graph

325 Commits

Author SHA1 Message Date
Matt Brown
ed356bfbd0 Don’t mistake same-named functions for old-style constructors
Fixes #131
2017-04-10 11:03:19 -04:00
Matt Brown
5b34163d8d Add ability to insert suppressed issues on functions 2017-03-31 11:21:34 -04:00
Matt Brown
d06a199d25 Fix #121 - simplify all parameter types 2017-03-30 11:44:38 -04:00
Matthew Brown
caf72bda52 Shave off a little extra time by caching file_checker refs 2017-03-19 23:30:20 -04:00
Matthew Brown
fc4a72d905 Store reflected variadic function parameters 2017-03-19 18:31:19 -04:00
Matthew Brown
e687887ba3 Emit an InvalidReturnType when it should contain null, and introduct LessSpecificReturnType 2017-03-18 12:18:17 -04:00
Matthew Brown
9b41bc9b37 Add slower (but more accurate) loop checks 2017-03-14 20:14:25 -04:00
Matt Brown
f9f38f283e Emit issue when property type is not defined 2017-03-02 12:19:18 -05:00
Matthew Brown
5cd1b6735f Add even more references in docblocks 2017-03-01 22:27:52 -05:00
Matt Brown
6d1f557ca4 Add docblock type location 2017-03-01 18:36:04 -05:00
Matt Brown
864d242f13 Improve labelling of referencing expressions 2017-03-01 11:56:36 -05:00
Matthew Brown
d9433c9491 Add way to find all references to a given class or method in the codebase 2017-02-27 01:30:44 -05:00
Matthew Brown
cd5f727d2e Collect explicit references to classes/methods 2017-02-26 23:09:18 -05:00
Matt Brown
0049e4deb4 Fix #105 and also the issues found in its wake 2017-02-23 19:36:51 -05:00
Matthew Brown
fa3b292fd4 Fix #101 - restrict the values of pass-by-ref variables 2017-02-23 00:25:28 -05:00
Matthew Brown
12cb72ae4b Prevent recursion when checking for initialisations 2017-02-22 00:51:34 -05:00
Matthew Brown
4348888b3e Prevent error when no params are given 2017-02-21 01:56:43 -05:00
Matthew Brown
e61ea17db5 Move FileChecker functionality into separate, better-contained classes 2017-02-18 13:41:27 -05:00
Matthew Brown
81e24de76f Fix invalid NullPropertyFetch warning 2017-02-12 18:06:18 -05:00
Matthew Brown
3f0a87f6fe Add more specific __toString error issue 2017-02-12 13:26:24 -05:00
Matthew Brown
f32fabd798 Remove dead code 2017-02-11 19:30:06 -05:00
Matthew Brown
8ff6634e7b Add issue for possibly unused variables in public/private methods
also changed a lot of access
2017-02-11 18:56:38 -05:00
Matthew Brown
deb11c9402 Change some errors from InvalidReturnType to MoreSpecificReturnType 2017-02-11 18:25:44 -05:00
Matt Brown
32d85e20da Remove unused vars 2017-02-10 19:10:13 -05:00
Matt Brown
c0a6fc9125 Fix #90 - add genericised stubs for common array functions 2017-02-10 18:12:59 -05:00
Matthew Brown
8ffd45407c Add support for namespaced templates 2017-02-10 00:14:44 -05:00
Matthew Brown
4a82c0a09a Add support for nested types in templates 2017-02-09 22:57:23 -05:00
Matthew Brown
5e8a40a5a1 Merge pull request #94 from vimeo/template-tags
Add support for templating
2017-02-09 20:51:23 -05:00
Matthew Brown
98b0ed280c Add support for templating 2017-02-09 20:35:17 -05:00
Matthew Brown
41f7dc4a52 Fix #93 - fix MethodSignatureMismatch checks on builtin class methods 2017-02-09 17:49:13 -05:00
Matthew Brown
6934b8ee45 Do not emit signature error for constructors 2017-02-08 21:19:47 -05:00
Matthew Brown
64cbe005f3 Remove more false positives 2017-02-08 02:23:41 -05:00
Matthew Brown
cedb70b0b4 Reduce false positives for unused variables 2017-02-08 01:59:49 -05:00
Matthew Brown
cdcacc395d Rename DeadCode to UnusedVariable, UnusedMethod and UnusedClass 2017-02-08 00:28:26 -05:00
Matthew Brown
65ef5ba8b7 Improve native understanding of docblock-less variadics 2017-02-07 22:02:46 -05:00
Matt Brown
f4857eb0dd Make dead code check emit an issue 2017-02-07 18:18:33 -05:00
Matt Brown
6b2bb7d917 Store first code location for all variables in a statement list 2017-02-07 18:09:12 -05:00
Matthew Brown
01beb97413 Fix #87 - array types from docblocks can be reasoned about safely 2017-02-03 22:07:14 -05:00
Matthew Brown
0fbf8b5619 Remove more dead code 2017-02-02 00:45:23 -05:00
Matthew Brown
d3abc0011d Fix #80 - add dead code checks via command line 2017-01-31 23:24:33 -05:00
Matt Brown
8c68861cc3 Fix #81 - interface inheritance checks were broken 2017-01-30 18:38:23 -05:00
Matthew Brown
4114456bf4 Key off lowercase classname and reduce dead code false positives 2017-01-30 00:26:17 -05:00
Matthew Brown
2e4aa3d3b1 Do not suggest mixed types 2017-01-27 22:44:52 -07:00
Matthew Brown
c868781731 Fix multiline docblock issue reporting issue 2017-01-27 22:24:25 -07:00
Matthew Brown
6714e28f5d Fix line numbers for return typehints 2017-01-27 19:09:40 -07:00
Matthew Brown
a35f2e0792 Don’t unset $this when calculating scope changes 2017-01-27 18:54:27 -07:00
Matthew Brown
63801c38c0 Make location of constructor error more specific 2017-01-26 23:32:03 -07:00
Matthew Brown
6bcc763414 Fix #3 by checking inside __constructor calls for initialisations 2017-01-26 23:23:12 -07:00
Matthew Brown
7e7743d6fb Do not complain about missing void return types if config set 2017-01-25 17:07:28 -07:00
Matthew Brown
15e8c1b904 Fix simplifyUnionType so classes with __toString aren’t confused with string 2017-01-25 17:01:01 -07:00
Matthew Brown
58aee6340d Remove var_dump (shame on me) 2017-01-23 15:17:35 -07:00
Matthew Brown
df1d6abd7c Make brand-new return types more accurate 2017-01-23 15:16:13 -07:00
Matt Brown
c1e62a09e7 Merge suppressed issues with source’s issues 2017-01-19 17:58:08 -05:00
Matt Brown
c0898aa6e5 Fix issue where inferred return type contained subclasses 2017-01-17 12:51:09 -05:00
Matt Brown
6b47741528 Remove extraneous check 2017-01-17 11:20:28 -05:00
Matt Brown
dae7718ae8 Support array_combine types and introduce a MoreSpecificReturnType issue 2017-01-17 11:17:49 -05:00
Matthew Brown
bc668e2c7a Change variadic docblock param to match language syntax 2017-01-17 01:14:43 -05:00
Matthew Brown
693811abed Allow non-array docblock typehints for variadic params 2017-01-17 00:26:40 -05:00
Matthew Brown
3cdb1753d5 Update to the more accurate TypeChecker::isContainedBy 2017-01-16 20:00:51 -05:00
Matthew Brown
2e2f2f4ffb Add new suppressable error for missing closure return types 2017-01-16 01:22:36 -05:00
Matthew Brown
ce89ac4986 Fix #50 - asserting about docblock types no longer causes error 2017-01-15 17:52:01 -05:00
Matthew Brown
9b06b672ba Fix #54 - register function constants when function is invoked 2017-01-15 16:43:49 -05:00
Matthew Brown
4fd46fe2c8 Fix #59 - make functions aware of just-defined constants 2017-01-15 15:58:40 -05:00
Matthew Brown
1bf2139149 Fix #58 - treat callmap args correctly when evaluating variadic 2017-01-15 13:17:11 -05:00
Matthew Brown
03141e41c2 Move string-stored types into named classes 2017-01-15 10:22:05 -05:00
Matt Brown
fbbef2c320 Fix #45 - add issue when optional param used before required 2017-01-13 13:40:20 -05:00
Matt Brown
c181f47364 Fix #35 and #40 by improving method signature checks 2017-01-13 12:03:22 -05:00
Matthew Brown
5f54a9571c Fix deep project checks 2017-01-12 01:03:48 -05:00
Matthew Brown
56be346191 Add back mutation checks 2017-01-11 21:37:53 -05:00
Matthew Brown
f318c52876 Improve function rechecking 2017-01-09 00:31:23 -05:00
Matthew Brown
03c5ea3cef Store all class keys lowercased 2017-01-09 00:14:39 -05:00
Matthew Brown
306e600e3a Do not check param types on visit 2017-01-08 22:00:23 -05:00
Matthew Brown
17329015dc Discriminate between checking, visiting and analyzing in method names 2017-01-07 15:09:47 -05:00
Matthew Brown
694da2cabd Simplify a lot of APIs 2017-01-07 14:35:07 -05:00
Matthew Brown
6ee69e547f Do more to separate out processing steps 2017-01-06 01:07:11 -05:00
Matthew Brown
7609ca02c0 Fix #32 by evaluating all class references in files lazily 2017-01-04 23:42:58 -05:00
Matthew Brown
4c3e714253 Add a check for duplicated params 2017-01-02 01:20:47 -05:00
Matthew Brown
93c1366bd8 Tighten up what array assignments can happen 2017-01-02 01:07:44 -05:00
Matthew Brown
882c8a8d0c Add better checking of property array assignments 2017-01-02 00:08:35 -05:00
Matthew Brown
846cc59d5f Add support for checking closure return types 2016-12-31 10:51:42 -05:00
Matthew Brown
393297786d Fix issues with single-letter classes 2016-12-31 00:14:00 -05:00
Matthew Brown
ee4a3882a7 Check method defaults to see whether they match 2016-12-30 23:40:32 -05:00
Matthew Brown
bc01169910 Fix debug end results 2016-12-30 18:28:43 -05:00
Matthew Brown
c65a0bf181 Move function static arrays into FileStorage 2016-12-30 18:08:07 -05:00
Matthew Brown
92fe58b97c Shift storage from static arrays to dedicated ClassLikeStorage objects 2016-12-30 12:41:14 -05:00
Matthew Brown
2bf515be5f Check return types of functions in namespaces 2016-12-28 19:57:18 -05:00
Matthew Brown
324b7b4801 Support old-style namespaced constructors 2016-12-27 01:06:05 +00:00
Matthew Brown
b6eea4e812 Fix #20 - emit an issue when param is missing a type or param 2016-12-25 11:32:21 +00:00
Matthew Brown
c55870e26c Allow generic TypeChecker::isContainedBy checks 2016-12-24 18:28:43 +00:00
Matthew Brown
dfa089f8df Remove functionality that overlaps with phpcs FunctionCommentSniff 2016-12-23 22:48:36 +00:00
Matthew Brown
1e96cea2c5 Check for nulls in parameter calls 2016-12-23 20:06:20 +00:00
Matthew Brown
e79dded17b Fix #19 - InvalidDocblock errors have proper casing now 2016-12-19 22:02:00 +00:00
Matthew Brown
9746c8972f Fix MixedAssignment errors 2016-12-17 00:48:31 -05:00
Matt Brown
6755c8724a Add tests for M* issues, fixing bugs along the way 2016-12-16 18:56:23 -05:00
Matt Brown
1d804cde66 Expand scope of property checks 2016-12-14 19:19:25 -05:00
Matthew Brown
592ee98efc Fix bugs discovered by adding more tests 2016-12-11 23:40:46 -05:00
Matthew Brown
562f71b21f Add TypeDoesNotContainType issue and fix those issues in Psalm code 2016-12-11 13:48:11 -05:00
Matthew Brown
12b5097fba Fix function casing when checking regular functions 2016-12-10 13:20:41 -05:00
Matt Brown
b3106c68bb Fix #6 - raise error with erroneous __toString 2016-12-09 12:48:02 -05:00
Matt Brown
ce3b24bf5f Fix #8 - defer always to call map if function not user-defined 2016-12-09 12:07:47 -05:00
Matt Brown
d8f0a40d99 Improve param class hilighting 2016-12-08 16:23:07 -05:00
Matthew Brown
a5195b2571 Add JSON output format 2016-12-07 22:38:57 -05:00
Matt Brown
55a060b53a Add support for closure checks 2016-12-07 14:13:39 -05:00
Matt Brown
48e19fc7e5 Add support for closure docblocks 2016-12-06 19:41:52 -05:00
Matthew Brown
ef1049224d Add selection of return types in code preview 2016-12-06 16:33:47 -05:00
Matthew Brown
638fdad3ad Add support for PHP 7.1 iterable pseudo-type 2016-12-04 21:04:25 -05:00
Matthew Brown
ffee37a23a Support nullable return types 2016-12-03 23:03:18 -05:00
Matthew Brown
0675e3364a Fix PHPParser 3.0.1 compatibility issues 2016-12-03 22:41:45 -05:00
Matthew Brown
a1acbfec07 Show code snippets when reporting errors
This also introduces a new method of identifying specific code locations when creating issues
2016-12-03 19:11:30 -05:00
Matthew Brown
1d603b11d0 Fix NULL signature issue 2016-11-30 15:03:52 -05:00
Matthew Brown
05a004c8bc Add check for array access on invalid type 2016-11-21 16:44:35 -05:00
Matthew Brown
0cb3b828b8 Add support for oldstyle constructors 2016-11-21 14:36:06 -05:00
Matthew Brown
a179eb89eb Add check for missing function params in docblocks 2016-11-21 13:37:02 -05:00
Matthew Brown
5a9f99c24e Fix namespacing issues in PHP 5.6 2016-11-20 21:49:06 -05:00
Matthew Brown
360213df9e Add support for PHPDoc-style type updates 2016-11-13 20:32:09 -05:00
Matthew Brown
38daca5edd Fix Psalm errors in Psalm 2016-11-13 11:24:46 -05:00
Matthew Brown
87bb4a2f52 Fix various issues with docblock updates 2016-11-13 01:43:51 -05:00
Matthew Brown
5cf95b42f2 --update-docblocks now works 2016-11-12 23:59:31 -05:00
Matthew Brown
8dfca6cce2 Add dummy --update-docblocks option 2016-11-12 18:51:48 -05:00
Matthew Brown
264e77addd Change a few more words 2016-11-07 19:16:51 -05:00
Matthew Brown
36fc49965b Correct speling 2016-11-07 17:31:02 -05:00
Matthew Brown
622a0794c3 Swap in Fully-Qualified for Absolute terms 2016-11-07 17:29:51 -05:00
Matthew Brown
12a12e15c2 Emit issue if return type is missing 2016-11-07 17:07:59 -05:00
Matthew Brown
8d0a8ab055 Rely on call map more 2016-11-06 23:30:14 -05:00
Matthew Brown
7d6ac4719f Fix offset assignment creation 2016-11-05 20:17:22 -04:00
Matthew Brown
c5591adf10 Add support for global in functions and mixed inferred return errors 2016-11-05 17:54:34 -04:00
Matthew Brown
2323d28238 Improve cache clearing 2016-11-04 22:04:55 -04:00
Jon Ursenbach
27c2db1d1d PSR-2 2016-11-02 17:50:54 -04:00
Matthew Brown
34af24a2b4 Add all the properties 2016-11-01 00:39:41 -04:00
Matthew Brown
604c875d0c Fix more errors caught by Psalm 2016-10-30 12:46:18 -04:00
Matthew Brown
98437c52db Check closure params to see if they align with array_map/array_filter args 2016-10-29 22:17:46 -04:00
Matthew Brown
95be3c4a05 Interpret variadic params as arrays 2016-10-29 20:50:24 -04:00
Matthew Brown
b31ac4a862 Removed object-like type descriptor in favour of array{} syntax 2016-10-28 13:24:06 -04:00
Matthew Brown
c48ce9ec33 Deal with optional callmap args better 2016-10-26 11:51:59 -04:00
Matthew Brown
4d224d56db Handle user-defined code in root namespace (e.g. OAuth) better 2016-10-25 11:40:09 -04:00
Matthew Brown
4b65f92cb9 Fix #29 - allow interface extension 2016-10-24 18:49:07 -04:00
Matthew Brown
357cd8ad41 Add support for Closure::__invoke 2016-10-24 15:55:05 -04:00
Matthew Brown
e4ba8b1abc Make StatementsChecker much smaller 2016-10-22 13:28:40 -04:00
Matthew Brown
07636468a2 Improve Generator typing 2016-10-20 15:26:02 -04:00
Matthew Brown
4c51e02107 Fix function checking 2016-10-20 14:36:15 -04:00
Matthew Brown
451d97e0ed Add support for variadic and packed variables 2016-10-19 00:31:32 -04:00
Matthew Brown
068dc41173 Fix #24 - do not emit TooManyArguments issue erroneously for function calls 2016-10-18 16:43:50 -04:00
Matthew Brown
f916a6f9a3 Remove unused methods 2016-10-18 16:28:51 -04:00
Matthew Brown
375c522304 Fix #25 - only emit one MethodSignagureMismatch per line 2016-10-18 16:00:03 -04:00
Matthew Brown
fd6954f056 Add override for ArrayObject and fix error message 2016-10-15 18:45:31 -04:00
Matthew Brown
b2a5081163 Add checks for method signature mismatch 2016-10-15 18:01:04 -04:00
Matthew Brown
ca3dfe6e39 Fix Psalm errors in Psalm 2016-10-15 00:12:57 -04:00
Matthew Brown
6201957f76 Add a ton of docblocks 2016-10-14 00:53:43 -04:00
Matthew Brown
cd69b0e5d6 Allow static property gets/sets 2016-10-13 18:27:23 -04:00
Matthew Brown
472e4df3cc Allow mixed to match function args 2016-10-10 22:49:43 -04:00
Matthew Brown
a30c82e5d7 Fix bugs in refactor 2016-10-10 01:35:12 -04:00
Matthew Brown
5292467db0 Add @todo issues and fix errors in StatementsChecker 2016-10-09 17:54:58 -04:00
Matthew Brown
efb7cd8218 Give parsers ability to manipulate object-like types 2016-10-03 16:39:42 -04:00
Matthew Brown
49baa62224 Fix doblocks and invalid refs 2016-10-03 11:38:59 -04:00
Matthew Brown
520ca5b559 Add more support for evaluating object-like type and fix empty check in foreach 2016-09-21 16:42:39 -04:00
Matthew Brown
d94a6fdaa0 Account for commas in stuff 2016-09-12 19:29:24 -04:00
Matthew Brown
8c5adf477a Add support for key/value array typing 2016-09-09 16:21:49 -04:00
Matthew Brown
750d172917 Prevent nested functions from throwing errors
And fix fixLocalType when passed var
2016-09-02 13:47:11 -04:00
Matthew Brown
f86c396115 Ignore resources 2016-09-01 20:27:16 -04:00
Matthew Brown
0f5f4c3029 Check functionlike param types 2016-09-01 18:02:09 -04:00
Matthew Brown
bad1271744 Add more coverage for scalar types 2016-08-31 13:25:29 -04:00
Matthew Brown
7d11b4b9b0 Add support for numeric types 2016-08-30 00:39:17 -04:00
Matthew Brown
7e018d3c35 Revamp include file reporting 2016-08-24 19:00:44 -04:00
Matthew Brown
e5a6f0d42f Add support for Closure->callable types 2016-08-24 17:06:41 -04:00
Matthew Brown
6637bb653c Fix type assignment after empty check 2016-08-22 23:02:03 -04:00
Matthew Brown
5d610b222a Fix off-by-one error 2016-08-22 15:43:08 -04:00
Matthew Brown
3b5909804d Fix ref errors 2016-08-22 15:42:05 -04:00
Matthew Brown
6edc120704 Add checking of function arguments 2016-08-22 15:00:12 -04:00
Matthew Brown
c56c148f70 Fix type fleshing-out 2016-08-15 20:00:02 -04:00
Matthew Brown
f7003bc53e Rename ClassMethodChecker to MethodChecker 2016-08-15 15:14:28 -04:00
Matthew Brown
374c045ff6 Allow case-invariant function names 2016-08-15 13:37:21 -04:00
Matthew Brown
faae9062ba Fix view checks 2016-08-15 02:12:27 -04:00
Matthew Brown
899f74b12e Allow functions to deal with shifting aliased classes 2016-08-15 01:21:50 -04:00
Matthew Brown
d559196c96 Fix reference errors 2016-08-14 13:13:53 -04:00
Matthew Brown
719f6d1d62 Fix include call checks 2016-08-13 23:26:45 -04:00