Matthew Brown
cc0c62fd23
Allow spaces in docblock types
2016-10-28 00:11:16 -04:00
Matthew Brown
95f5a4603a
Add property for poorly-reflected builtin classes
2016-10-27 16:05:27 -04:00
Matthew Brown
78e183ea0c
Filter null & false if no arg passed to array_filter
2016-10-26 17:51:34 -04:00
Matthew Brown
c5107f2abf
Fix zlib_encode
2016-10-26 11:57:30 -04:00
Matthew Brown
c48ce9ec33
Deal with optional callmap args better
2016-10-26 11:51:59 -04:00
Matthew Brown
76191e2505
Add back apc_store proper signature
2016-10-26 11:25:44 -04:00
Matthew Brown
77c442cb1d
Improve CallMap from origin
2016-10-26 11:16:37 -04:00
Matthew Brown
b0b767c465
Fix unnecessary Exception signatures
2016-10-26 10:25:52 -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
694d159829
Fix interface extends return types
2016-10-25 11:20:06 -04:00
Matthew Brown
6dde59bd20
Fix previous exception
2016-10-24 19:20:42 -04:00
Matthew Brown
4d0d5fab9a
Fix Exception type
2016-10-24 19:00:52 -04:00
Matthew Brown
3fa1cce4f6
Fix more callmap issues
2016-10-24 18:56:43 -04:00
Matthew Brown
09ab4b4f33
Fix casing of DateTime objects
2016-10-24 18:49:27 -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
74ec219421
Add more checks for inferredType
2016-10-24 12:13:12 -04:00
Matthew Brown
2ddb08c778
Add more protective checks
2016-10-24 11:06:04 -04:00
Matthew Brown
bd173f8840
Fix #21 - stopOnFirstError now handled properly
2016-10-23 23:32:17 -04:00
Matthew Brown
ce95275878
Fix more Psalm bugs found by Psalm
2016-10-23 12:24:53 -04:00
Matthew Brown
d8b10a6c97
Fix errors caught by Psalm
2016-10-23 01:57:11 -04:00
Matthew Brown
fbdfc78546
Fix references to moved fucntionality
2016-10-22 18:25:14 -04:00
Matthew Brown
f3f1ba1caa
Break out block checkers
2016-10-22 17:35:59 -04:00
Matthew Brown
2bea64ca52
Split out SwitchChecker
2016-10-22 13:37:06 -04:00
Matthew Brown
dda4c52e03
Fix ref
2016-10-22 13:29:32 -04:00
Matthew Brown
e4ba8b1abc
Make StatementsChecker much smaller
2016-10-22 13:28:40 -04:00
Matthew Brown
6174048354
Flesh out function params when evaluating args
2016-10-21 14:38:03 -04:00
Matthew Brown
6d8e722a77
Add support for anonymous classes
2016-10-20 20:54:17 -04:00
Matthew Brown
6283553d19
Properly clear cache
2016-10-20 18:16:17 -04:00
Matthew Brown
0100ca2b8c
Add better cache clear
2016-10-20 18:12:13 -04:00
Matthew Brown
d71d439e25
Closure basically implements callable
2016-10-20 18:05:28 -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
8c23d0829a
Add typed support for spaceship operator
2016-10-20 14:28:16 -04:00
Matthew Brown
a4644a0e4a
Add support for Generator types
2016-10-20 14:28:16 -04:00
Matthew Brown
518e8bcbaf
Support PHP5.5 features (except yield, for now)
2016-10-20 00:13:35 -04:00
Matthew Brown
5e45a70ea8
Fix erroneous continue
2016-10-19 16:50:49 -04:00
Matthew Brown
451d97e0ed
Add support for variadic and packed variables
2016-10-19 00:31:32 -04:00
Matthew Brown
58bb10b948
Improve maths type resolution
2016-10-19 00:00:49 -04:00
Matthew Brown
98b4029ebd
Support PHP7 return types
2016-10-18 21:54:08 -04:00
Matthew Brown
6b4039aae3
Fix #23 - prevent duplicte messages
2016-10-18 18:55:53 -04:00
Matthew Brown
900f86507d
Avoid TooManyArguments issues on mock classes
2016-10-18 18:27:16 -04:00
Matthew Brown
a1acaa231a
Allow @psalm-variadic to denote functions that use func_call_args
2016-10-18 17:55:07 -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
935b9dfe07
Be more sensitive to function_exists checks, do not apply to whole function
2016-10-18 16:14:52 -04:00
Matthew Brown
375c522304
Fix #25 - only emit one MethodSignagureMismatch per line
2016-10-18 16:00:03 -04:00
Matthew Brown
b7ffd66211
Do not check methods after is_callable
2016-10-18 14:22:54 -04:00
Matthew Brown
d247cead09
Exit properly when encountering classes we cannot deal with
2016-10-18 11:25:15 -04:00
Matthew Brown
991806a2c4
Ignore files outside project dirs for diffs
2016-10-18 10:17:25 -04:00
Matthew Brown
e6cc026d20
Add check for continue when not in loop context
2016-10-17 16:42:23 -04:00
Matthew Brown
2b0af34d2c
Be more lenient with null vs void return type
2016-10-15 18:55:17 -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
331475640b
Obviate array_filter
2016-10-15 13:14:43 -04:00
Matthew Brown
31257634f4
Improve messages
2016-10-15 13:10:48 -04:00
Matthew Brown
18a55e2854
Also inspect arrays from strings
2016-10-15 13:10:05 -04:00
Matthew Brown
81e15362a0
Fix psalm errors in psalm
2016-10-15 10:36:19 -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
3a92e29f59
Fix View checks
2016-10-13 21:30:27 -04:00
Matthew Brown
2406e0b190
Fix additional ref
2016-10-13 19:13:57 -04:00
Matthew Brown
9adc30ecd9
Fix use var
2016-10-13 19:08:28 -04:00
Matthew Brown
a444fd95c2
Fix miscellaneous var ids
2016-10-13 19:01:12 -04:00
Matthew Brown
ab2b3cea9e
Fix registerVariable call
2016-10-13 18:40:07 -04:00
Matthew Brown
cd69b0e5d6
Allow static property gets/sets
2016-10-13 18:27:23 -04:00
Matthew Brown
8da29add82
Delay expression checks until the end
2016-10-13 01:32:52 -04:00
Matthew Brown
4c4b6e9902
Add docblocks where relevant
2016-10-12 01:38:29 -04:00
Matthew Brown
14606bddbb
Set types on static property evaluation
2016-10-12 01:38:16 -04:00
Matthew Brown
e152a8f6f1
Type array_pop/array_shift returns better
2016-10-12 01:37:32 -04:00
Matthew Brown
c4648673bf
Rename @suppress to @psalm-suppress
2016-10-11 14:17:55 -04:00
Matthew Brown
f87e2ae4fc
Set type of mixed for magic get
2016-10-11 13:45:19 -04:00
Matthew Brown
6f1d042039
Emit issue on empty type
2016-10-11 10:47:31 -04:00
Matthew Brown
2b4b7c26e9
Add byref for getmxrr
2016-10-11 01:27:59 -04:00
Matthew Brown
99fe265722
Add DOMDocument and DOMNode to list of classes to ignore properties on
2016-10-10 23:52:05 -04:00
Matthew Brown
472e4df3cc
Allow mixed to match function args
2016-10-10 22:49:43 -04:00
Matthew Brown
64b4adfb22
Make UndefinedProperty issues more specific
2016-10-10 19:29:38 -04:00
Matthew Brown
a30c82e5d7
Fix bugs in refactor
2016-10-10 01:35:12 -04:00
Matthew Brown
f68280488c
Remove custom error levels
2016-10-09 17:55:21 -04:00
Matthew Brown
5292467db0
Add @todo issues and fix errors in StatementsChecker
2016-10-09 17:54:58 -04:00
Matthew Brown
566fa8e838
Do not check deleted files
2016-10-08 20:49:14 -04:00
Matthew Brown
eecd35f10b
Also scan deleted files
2016-10-07 13:26:29 -04:00
Matthew Brown
d8d26a3f40
Add more robust in-psalm check
2016-10-07 00:58:08 -04:00
Matthew Brown
ed2c157762
Accept space-separated arguments
2016-10-05 17:08:20 -04:00
Matthew Brown
3f742ee954
Generate big graph of all files that could possibly be affected
2016-10-05 13:24:46 -04:00
Matthew Brown
2261ecf596
Add ability to look up a file's dependencies
2016-10-04 19:23:38 -04:00
Matthew Brown
ae75296469
Use psalm-return in place of return if available
2016-10-03 21:36:42 -04:00
Matthew Brown
f3ee908232
Improve error message
2016-10-03 16:47:14 -04:00
Matthew Brown
c060a75b24
Throw error if we are accessing object-like array with int offset
2016-10-03 16:40:46 -04:00
Matthew Brown
b8ba6ffbf6
Add return type checking of object-like types
2016-10-03 16:40:02 -04:00
Matthew Brown
efb7cd8218
Give parsers ability to manipulate object-like types
2016-10-03 16:39:42 -04:00
Matthew Brown
7565ee3fac
Update docblock checker to see object-like types
2016-10-03 16:37:31 -04:00
Matthew Brown
936630892e
Fix reconciling of elseifs
2016-10-03 11:39:32 -04:00
Matthew Brown
49baa62224
Fix doblocks and invalid refs
2016-10-03 11:38:59 -04:00
Matthew Brown
89bc501e17
Make sure to set object-like property type if available
2016-10-03 10:41:21 -04:00
Matthew Brown
e04441b8ac
Add ObjectLike check in
2016-10-03 01:35:54 -04:00
Matthew Brown
1d10d8e8a2
Add hasType check
2016-10-03 01:01:24 -04:00
Matthew Brown
41278260b8
Fix nested array adjust
2016-10-03 00:43:24 -04:00
Matthew Brown
575ee55d1b
Now make string dictionaries object-like
2016-10-02 22:00:42 -04:00
Matthew Brown
c22fc15bfa
clobber better
2016-10-02 22:00:05 -04:00
Matthew Brown
a84587e6c3
Clobber empty array when combining with object-like
2016-10-02 19:33:46 -04:00
Matthew Brown
bcd2b73c43
Add check for ObjectLike
2016-10-02 18:59:37 -04:00
Matthew Brown
047b932e46
Support combining ObjectLike types
2016-10-02 18:59:16 -04:00
Matthew Brown
79d7a87539
Ignore classes checked in class_exists
2016-10-02 13:05:49 -04:00
Matthew Brown
b4de3fc2d8
Add null check when updating type
2016-10-02 11:08:15 -04:00
Matthew Brown
a6f1eaeee2
Add support for -1 and +1 in property declarations
2016-10-02 10:30:44 -04:00
Matthew Brown
ff17dcf1ee
Fix while loop unset issue
2016-10-02 10:26:13 -04:00
Matthew Brown
91ea6844ba
Prevent error on string array assignment
2016-10-02 10:13:35 -04:00
Matthew Brown
a141ffe3cf
Add support for iteration over object-like arrays
2016-10-02 09:50:24 -04:00
Matthew Brown
fb30b79a11
Fix descendant removal
2016-10-01 23:10:15 -04:00
Matthew Brown
dd57a85f54
Make sure we do not neglect main-scope method calls
2016-10-01 22:47:32 -04:00
Matthew Brown
ceeaa5467c
Make sure we set return type to mixed
2016-10-01 21:02:13 -04:00
Matthew Brown
478ef9b551
Make sure object-like is not considered an object
2016-09-22 13:45:22 -04:00
Matthew Brown
f00eb66690
Do not assign array values on object
2016-09-22 13:43:53 -04:00
Matthew Brown
42c8923981
Fix isset assertions
2016-09-22 12:26:24 -04:00
Matthew Brown
2e371aca00
Create ObjectLike entities
2016-09-22 00:49:48 -04:00
Matthew Brown
5113ffefee
Add a fully-parsable representation of object-like types
2016-09-22 00:31:07 -04:00
Matthew Brown
baf9bcd4d7
Make a class for arrays
2016-09-21 22:15:46 -04:00
Matthew Brown
abae0a9cae
Fix erroneous array assignment
2016-09-21 19:14:44 -04:00
Matthew Brown
37aae5d731
Allow type assertions on array keys
2016-09-21 19:14:29 -04:00
Matthew Brown
5d768d4fbe
Ignore object-like issue
2016-09-21 18:26:26 -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
93a5e6775d
Add object-like type to represent cheating arrays
2016-09-20 21:45:49 -04:00
Matthew Brown
e9a30ca556
Remove descendent types when assigning
2016-09-17 11:57:44 -04:00
Matthew Brown
dff23e9d74
Be more general with arrays
2016-09-15 16:42:50 -04:00
Matthew Brown
24fd84617f
Fix include check and nest function arg check
2016-09-15 16:31:36 -04:00
Matthew Brown
55fc146c57
Fix possible reference error if interface name is bad
2016-09-15 16:30:18 -04:00
Matthew Brown
6027687ad9
Fix callmap incorrect value
2016-09-15 16:29:58 -04:00
Matthew Brown
58835c0ad5
Add getArrayVarId for making assertions about array keys
2016-09-13 18:58:49 -04:00
Matthew Brown
352f5e64b3
Do not overboil
2016-09-13 18:23:09 -04:00
Matthew Brown
70d01c8138
Fix nullref
2016-09-13 18:10:41 -04:00
Matthew Brown
c1ca6c27d5
If we do not know, do not assume
2016-09-13 17:35:30 -04:00
Matthew Brown
884648b56c
Improve type combination when evaluating array types
2016-09-12 23:24:26 -04:00
Matthew Brown
324b5ecdae
Remove bad $this
2016-09-12 19:44:33 -04:00
Matthew Brown
9d38d8c197
Simplify reported array type to avoid errors
2016-09-12 19:30:57 -04:00
Matthew Brown
d94a6fdaa0
Account for commas in stuff
2016-09-12 19:29:24 -04:00
Matthew Brown
7298b41c45
Do not throw access errors when array might be empty
2016-09-12 12:23:51 -04:00
Matthew Brown
6a9bcea901
Improve typing of properties
2016-09-12 11:32:44 -04:00
Matthew Brown
677614f23e
Fix offset issues
2016-09-12 00:34:38 -04:00
Matthew Brown
0563f508ca
Fix automatic array creation checks
2016-09-12 00:02:26 -04:00
Matthew Brown
e663c1da19
Add support for object negation
2016-09-12 00:01:47 -04:00
Matthew Brown
564c4e2bf3
If we see an object type assertion, filter out non-object types
2016-09-11 19:12:56 -04:00
Matthew Brown
554791e6ac
Fix aliased class casing and misc errors
2016-09-09 23:17:56 -04:00
Matthew Brown
9ab0ee45a5
Add a bunch of docblocks
2016-09-09 20:07:36 -04:00
Matthew Brown
288ac91c4a
Add protections
2016-09-09 18:54:24 -04:00
Matthew Brown
f455851f89
Fix bugs in array key checks
2016-09-09 18:36:35 -04:00
Matthew Brown
8c5adf477a
Add support for key/value array typing
2016-09-09 16:21:49 -04:00
Matthew Brown
97a8e447d7
Check uses before checking functions
2016-09-02 16:16:11 -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
99649f2f09
Fix reference errors
2016-09-01 00:07:29 -04:00
Matthew Brown
b40e057090
Add checks for !== true
2016-09-01 00:07:20 -04:00
Matthew Brown
47f66bf4dd
Add support for exposing errors in external files
2016-08-31 23:12:35 -04:00
Matthew Brown
4ccf9cf06f
Do not just return last successful type found
2016-08-31 17:08:04 -04:00
Matthew Brown
b8c5bc4968
proc_open can return false
2016-08-31 15:10:29 -04:00
Matthew Brown
330199c9a3
Add support for callable checks
2016-08-31 15:10:11 -04:00
Matthew Brown
bad1271744
Add more coverage for scalar types
2016-08-31 13:25:29 -04:00
Matthew Brown
f28485ddad
Never set a null $var_name
2016-08-30 15:47:44 -04:00
Matthew Brown
89d04186b1
Add missing isResource method
2016-08-30 00:40:08 -04:00
Matthew Brown
7d11b4b9b0
Add support for numeric types
2016-08-30 00:39:17 -04:00
Matthew Brown
d689996fde
Support all is_* checks
2016-08-30 00:25:15 -04:00
Matthew Brown
8212284675
Map function return types for builtins
2016-08-30 00:05:13 -04:00
Matthew Brown
4a88a376df
Improve handling of switch and change method name
2016-08-30 00:04:10 -04:00
Matthew Brown
7e018d3c35
Revamp include file reporting
2016-08-24 19:00:44 -04:00
Matthew Brown
1327b9e604
Add better file location recognition for imports
2016-08-24 18:13:22 -04:00
Matthew Brown
e5a6f0d42f
Add support for Closure->callable types
2016-08-24 17:06:41 -04:00
Matthew Brown
4d388d197c
Fix analysis of switch statements
2016-08-24 17:06:20 -04:00
Matthew Brown
0e68179bb4
Pass in the right context
2016-08-24 00:22:38 -04:00
Matthew Brown
212edcd16b
Only warn about undefined this vars once
2016-08-23 23:51:01 -04:00
Matthew Brown
9dc0a088ea
Support while loop property updates
2016-08-23 23:41:06 -04:00
Matthew Brown
f91c0a048d
Avoid nullref when updating properties
2016-08-23 23:39:43 -04:00
Matthew Brown
0e1a969e55
Add a bunch of boilerplate to solve redefining loop vars
2016-08-23 22:09:06 -04:00
Matthew Brown
25ed89940d
Re-calculate else context types
2016-08-23 20:56:18 -04:00
Matthew Brown
92aa7217af
Pass in loop context, not specific vars
2016-08-23 18:09:34 -04:00
Matthew Brown
6637bb653c
Fix type assignment after empty check
2016-08-22 23:02:03 -04:00
Matthew Brown
e0b9c876fb
Improve logic for updating context
2016-08-22 20:06:28 -04:00
Matthew Brown
bac747d563
Add slight refinement
2016-08-22 19:45:34 -04:00
Matthew Brown
2cba7a83bf
Do not investigate null types
2016-08-22 19:29:06 -04:00
Matthew Brown
a4a1fd9557
Explicitly return array of strings for explode
2016-08-22 18:09:52 -04:00
Matthew Brown
093c5447ae
Avoid unnecessary interface casing errors
2016-08-22 16:41:45 -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
b1c525bef0
Also inspect array_merge
2016-08-18 17:36:54 -04:00
Matthew Brown
39b4cb54b3
Add array_filter type reflection
2016-08-18 16:51:10 -04:00
Matthew Brown
474f1b0ff2
Add array_map function typing
2016-08-18 16:19:37 -04:00
Matthew Brown
c56c148f70
Fix type fleshing-out
2016-08-15 20:00:02 -04:00
Matthew Brown
35b54bfd48
Do not evaluate falsey
2016-08-15 16:22:32 -04:00
Matthew Brown
f7003bc53e
Rename ClassMethodChecker to MethodChecker
2016-08-15 15:14:28 -04:00
Matthew Brown
f270d67db6
Fix trait mapping
2016-08-15 14:20:06 -04:00
Matthew Brown
adbac24f8e
Catch attempts to call methods on object type
2016-08-15 13:59:23 -04:00
Matthew Brown
116cb3064d
Remove trailing backslash when checking method
2016-08-15 13:59:02 -04:00
Matthew Brown
666f570fb2
Allow case errors correctly
2016-08-15 13:51:43 -04:00
Matthew Brown
374c045ff6
Allow case-invariant function names
2016-08-15 13:37:21 -04:00
Matthew Brown
14ff5b00ac
Allow non-this properties to be passed by reference
2016-08-15 12:22:43 -04:00
Matthew Brown
98b120b70c
Avoid treating abstract classes as declaring classes
2016-08-15 12:22:23 -04:00
Matthew Brown
84b4e09873
Simplify clearCache calls
2016-08-15 11:01:50 -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
ccad9978f5
Put back function hoisting
2016-08-15 00:58:30 -04:00
Matthew Brown
cd36893b9f
Fix trait reuse
2016-08-15 00:52:25 -04:00
Matthew Brown
d23242e4e7
Fix what methods get assigned
2016-08-15 00:31:34 -04:00
Matthew Brown
3f24af3031
Big refactor to limit reflection
2016-08-14 23:24:16 -04:00
Matthew Brown
d559196c96
Fix reference errors
2016-08-14 13:13:53 -04:00
Matthew Brown
affa6c306b
Fix class case sensitivity
2016-08-14 13:00:41 -04:00
Matthew Brown
94a3930ddb
Doubles are really floats
2016-08-14 12:07:19 -04:00
Matthew Brown
8ba4f5141c
Simplify class registration
2016-08-14 12:06:53 -04:00
Matthew Brown
fe90018660
Add support for checking user-defined constants
2016-08-14 00:38:29 -04:00
Matthew Brown
719f6d1d62
Fix include call checks
2016-08-13 23:26:45 -04:00
Matthew Brown
399892031f
Fix #16 - dd more info to context and type constants
2016-08-13 21:14:32 -04:00
Matthew Brown
defc4cebc1
Add support for checking inherited constants
2016-08-13 19:44:24 -04:00
Matthew Brown
fd63f3e056
Abandon use of undersocres and fix interface parsing
2016-08-13 18:54:49 -04:00
Matthew Brown
7d1a106fd5
Big file reorg with ClassLikeChecker as new ClassChecker
2016-08-13 14:20:46 -04:00
Matthew Brown
b32ead15d3
Add docblocks for methods and fix bugs
2016-08-13 11:28:06 -04:00
Matthew Brown
eafdaf9db0
Fix trait visibility
2016-08-13 11:10:57 -04:00
Matthew Brown
274448d014
Fix casing of simplexml returns
2016-08-12 20:45:34 -04:00
Matthew Brown
06ac1f1186
Improve array assignment checks;
2016-08-12 17:45:23 -04:00
Matthew Brown
f1fa5ca42f
Add false vals referenced in https://github.com/etsy/phan/pull/316
2016-08-12 16:36:27 -04:00
Matthew Brown
a0dcabe4e1
Look once the vars have been set
2016-08-11 22:00:27 -04:00
Matthew Brown
a62a7899e0
Add overrides for some methods
2016-08-11 17:36:22 -04:00
Matthew Brown
300375c4bd
Add preliminary call map
2016-08-10 19:37:40 -04:00
Matthew Brown
53b94f339e
Fix errors found via self-inspection
2016-08-10 19:21:03 -04:00
Matthew Brown
8d6871d29e
Remove underscores
2016-08-10 18:10:12 -04:00
Matthew Brown
cf90f5af4a
Add support for static in return types
2016-08-10 13:52:16 -04:00
Matthew Brown
2adf377d94
Fix closure & elseif checks
2016-08-10 02:13:55 -04:00
Matthew Brown
1c3993eaf7
Improve $context->update again
2016-08-10 01:54:45 -04:00
Matthew Brown
8345526fc8
Simplify context update logic
2016-08-10 01:28:38 -04:00
Matthew Brown
b274c7dd68
Fix tests
2016-08-10 01:09:47 -04:00
Matthew Brown
8131f806d8
Protect possibility of bad get_class call
2016-08-09 19:14:50 -04:00
Matthew Brown
24d67e9615
Add support for special typeof types (used in get_class checks)
2016-08-09 18:10:46 -04:00
Matthew Brown
02ce85e383
Add support for bool checks
2016-08-09 18:10:17 -04:00
Matthew Brown
55f466b2ed
Fix how params are set
2016-08-09 15:02:30 -04:00
Matthew Brown
b0f6a020da
Exit early for invalid class or interface
2016-08-09 12:11:58 -04:00
Matthew Brown
588ae82ffb
Do not skip if we want to check class methods
2016-08-09 12:07:50 -04:00
Matthew Brown
054032354d
Exit early if ReflectionError
2016-08-09 12:07:26 -04:00
Matthew Brown
0d35f1c14b
Allow suppression of type errors and add better treatment of static
2016-08-08 18:55:22 -04:00
Matthew Brown
daf49bdf0b
Add separate undefined this property to demarcate those errors
2016-08-08 16:06:28 -04:00
Matthew Brown
902c05d3a7
Check traits in context of class
2016-08-08 14:36:18 -04:00
Matthew Brown
be5fc52da8
Use $context->self var instead of $this->_absolute_class
2016-08-08 11:28:14 -04:00
Matthew Brown
92134b60ec
Add support for checking new self/parent/static
2016-08-07 16:27:00 -04:00
Matthew Brown
06891106fb
Add clearer error messages
2016-08-07 16:13:36 -04:00
Matthew Brown
ccaea8fa51
Allow docblock param types in function checker
2016-08-07 16:13:08 -04:00
Matthew Brown
a881191f1d
Be more lenient with certain assignments
2016-08-07 15:15:21 -04:00
Matthew Brown
b7dfb5e134
Skip empty arrays when looking inside foreach loops
2016-08-07 14:36:24 -04:00
Matthew Brown
c58458ed20
Add code to handle SimpleXMLElement
2016-08-07 13:58:46 -04:00
Matthew Brown
620d4afd68
Fix tokenisation of ? nullable shorthand
2016-08-07 12:50:21 -04:00
Matthew Brown
7a1cded329
Add better class visibiity checks
2016-08-07 12:23:29 -04:00
Matthew Brown
4d26b9b3af
Add more issues to solve
2016-08-07 11:35:27 -04:00
Matthew Brown
d254bc0aa2
Improve type checking of properties
2016-08-06 20:27:13 -04:00
Matthew Brown
f72ad63dac
Add beginnings of non-this property checks
2016-08-05 17:45:47 -04:00
Matthew Brown
81c72f2900
Evaluate parent classes proper-like
2016-08-05 15:11:20 -04:00
Matthew Brown
9d4271f023
Allow better handling of questionmark type annotations
2016-08-04 14:43:33 -04:00
Matthew Brown
944a8c24eb
Add ability to suppress info output from command line
2016-08-04 14:38:43 -04:00
Matthew Brown
bff796ceb7
Add TooManyArguments to default suppressed list
2016-07-30 19:54:53 -04:00
Matthew Brown
9cb7a5feeb
Fix #14 - add support for checking too many and too few arguments
2016-07-29 14:48:04 -04:00
Matthew Brown
f45e7c7539
Only load autoloader if provided
2016-07-26 15:03:43 -04:00
Matthew Brown
6b3fe14f1e
Allow specification of custom autoloaders
2016-07-26 15:03:43 -04:00
Matthew Brown
c4a222171b
Fix undefined var name
2016-07-26 15:03:43 -04:00
Matthew Brown
9718893232
Exit early if parent class cannot be found
2016-07-26 15:03:43 -04:00
Matthew Brown
7701a2ec23
Change config filename
2016-07-25 18:39:36 -04:00
Matthew Brown
df28d24803
Change name to Psalm
2016-07-25 18:37:44 -04:00
Matthew Brown
c32179f1a1
Improve type adjustment in switch statements
2016-07-25 18:30:49 -04:00
Matthew Brown
1ebe333bb2
Fix self-checking errors
2016-07-25 15:05:58 -04:00
Matthew Brown
08dd92ac00
Add numeric type support to properties
2016-07-25 12:03:21 -04:00
Matthew Brown
37e3e9d85a
Protect implements checks
2016-07-25 09:23:38 -04:00
Matthew Brown
53f0e6ea8b
Add case-sensitive class logging
2016-07-25 09:02:30 -04:00
Matthew Brown
967d3c8503
Add checks to prevent special types being tested as classes
2016-07-25 00:31:29 -04:00
Matthew Brown
f3d4e35a52
Add gotchas
2016-07-25 00:12:02 -04:00
Matthew Brown
e35c328e89
We can do more with boolean ors
2016-07-24 23:40:53 -04:00
Matthew Brown
bd90dd7ee9
Add better checks for subclassed type comparison
2016-07-24 23:40:23 -04:00
Matthew Brown
ef1d662882
Memoize common reflection tasks
2016-07-24 23:38:52 -04:00
Matthew Brown
0e77403625
Fix generic switch checks
2016-07-24 18:02:03 -04:00
Matthew Brown
94b7e0b01f
Always return after UndefinedClass and UndefinedMethod issues
2016-07-24 17:10:16 -04:00
Matthew Brown
c195f48e35
Make sure generic type params are always unions
2016-07-24 17:08:40 -04:00
Matthew Brown
8844bd0c1e
Do incremental processing of statements
2016-07-24 17:06:54 -04:00
Matthew Brown
03693e5cb8
Allow issue suppression in classchecker
2016-07-24 17:06:36 -04:00
Matthew Brown
479e93fd56
Improve return type checks on generic functions
2016-07-24 16:21:42 -04:00
Matthew Brown
94702bd914
Unify check method call format
2016-07-23 10:58:53 -04:00
Matthew Brown
079175532b
Add deprecated method checks and issue suppression
2016-07-22 13:29:46 -04:00
Matthew Brown
840adbc4ce
Fix fleshing out of variable type
2016-07-18 19:04:51 -04:00
Matthew Brown
0a7f39715c
Add support for enumerating empty collections
2016-07-18 18:17:47 -04:00
Matthew Brown
13f35914c2
Do not die when reflected class cannot be loaded
2016-07-13 11:19:07 -04:00
Matthew Brown
c7dc5dd9f9
Add support for numeric type
2016-07-13 11:18:07 -04:00
Matthew Brown
00a6a54cf5
Allow empty arrays to change type after block
2016-07-12 01:28:41 -04:00
Matthew Brown
8e32c2eed6
Move methods around and improve scalar type handling
2016-07-12 00:50:16 -04:00
Matthew Brown
5ab4d0aa84
Allow support for generic object type
2016-07-11 20:11:00 -04:00
Matthew Brown
f2a53fa463
Add InvalidScalarArgument issue to warn about bad casts
2016-07-11 19:58:37 -04:00
Matthew Brown
24300cc8f6
Suppress mixed method call warnings
2016-07-11 19:57:39 -04:00
Matthew Brown
32f07fd823
Only update type from docblock if it gives more info
2016-07-11 19:57:01 -04:00
Matthew Brown
6e2fc6141a
Add more robust fix for nullable kludge
2016-07-11 10:19:06 -04:00
Matthew Brown
04be1fb50e
Add slight kludge if method is nullable
2016-07-11 10:15:32 -04:00
Matthew Brown
348e06ffb9
Fix treatment of param types
2016-07-10 16:09:09 -04:00
Matthew Brown
855ffbd9c1
Suppress mixed method call issues by default
2016-07-07 19:40:00 -04:00
Matthew Brown
70a92e006d
Check for mixed method calls
2016-07-07 19:38:33 -04:00
Matthew Brown
a8501be75f
Allow method chaining
2016-06-30 00:27:47 -04:00
Matthew Brown
4f8fa010a5
Allow more characters in classnames
2016-06-30 00:27:33 -04:00
Matthew Brown
d59739d9c7
use safer check for ending statments
2016-06-29 18:30:27 -04:00
Matthew Brown
e0c16308a8
Improve switch checking (again) and fix null arg types
2016-06-29 18:10:41 -04:00
Matthew Brown
a93c54da0d
Improve type resolution of params
2016-06-29 16:42:30 -04:00
Matthew Brown
2e4e52f0f3
Reduce nesting
2016-06-29 10:57:15 -04:00
Matthew Brown
59acb5cfb7
Make sure to return bool where necessary
2016-06-29 10:57:02 -04:00
Matthew Brown
50aff4bcb7
Fix combination of type assertions
2016-06-28 15:43:21 -04:00
Matthew Brown
4bd0e7c90f
Use the clever methods when evaluating expression
2016-06-28 15:36:35 -04:00
Matthew Brown
35e08f5cd2
Fix if/ternary negation
2016-06-28 15:28:05 -04:00
Matthew Brown
5b182fecea
Support absolute files
2016-06-28 14:28:45 -04:00
Matthew Brown
71eea36b9c
Improve switch type analysis
2016-06-28 13:56:44 -04:00
Matthew Brown
638c2999e3
Reove PHP 5.6 features
2016-06-27 15:10:13 -04:00
Matthew Brown
fdc4b0703f
Only set to mixed if not yet set
2016-06-27 14:30:33 -04:00
Matthew Brown
16fda10e67
Only show variable errors where applicable
2016-06-27 13:22:16 -04:00
Matthew Brown
bd694459f3
Prepopulate all object properties
2016-06-27 10:46:27 -04:00
Matthew Brown
e4c590d7b7
Fix tests by adding a config flag for throwing exceptions
2016-06-26 22:40:57 -04:00
Matthew Brown
7f0139d27f
Add pretty colours
2016-06-26 22:03:37 -04:00
Matthew Brown
eb9084dbad
Add support for parsing bracket syntax
2016-06-26 22:02:23 -04:00
Matthew Brown
ad4943ead3
Allow custom config to be passed in
2016-06-26 15:33:51 -04:00
Matthew Brown
2ab3e3af40
Make sure IssueBuffer::finish is called after each public ProjectChecker method
2016-06-26 15:25:38 -04:00
Matthew Brown
5f60bc3a8b
Actually rename file
2016-06-26 15:24:12 -04:00
Matthew Brown
2d9f39e3f4
Change IssueHandler to IssueBuffer
2016-06-26 15:18:40 -04:00
Matthew Brown
bf96b4de3a
Add smart config identification
2016-06-26 13:45:20 -04:00
Matthew Brown
73eda1632e
Add extra alerts for invalid docblocks
2016-06-24 18:18:11 -04:00
Matthew Brown
a1fb6294dc
Add checking of object properties
2016-06-23 18:45:46 -04:00
Matthew Brown
9f20175b14
Change ExceptionHandler to IssueHandler and add error levels
2016-06-20 19:30:38 -04:00
Matthew Brown
6f9cb1d99c
Use mixed type if we detect expression error
2016-06-20 18:10:55 -04:00
Matthew Brown
162a8a2c2b
Search in while & try/catch
2016-06-20 18:10:24 -04:00
Matthew Brown
2b8c95a19d
Use correct paths
2016-06-20 18:10:08 -04:00
Matthew Brown
f8fda8febb
Do not check return types if we ignore for that file
2016-06-20 18:09:04 -04:00
Matthew Brown
66535fb225
Allow void return type reporting
2016-06-20 16:54:43 -04:00
Matthew Brown
cf101b0fe0
Mixed cannot be substituted
2016-06-20 16:54:30 -04:00
Matthew Brown
0ecbfdbd64
Improve handling of binary ops
2016-06-20 16:54:02 -04:00
Matthew Brown
2dc64aafe3
Add foreach possibly-in-scope vars back
2016-06-20 16:30:31 -04:00
Matthew Brown
a6eed85ba5
Add better scope analysis
2016-06-20 16:18:31 -04:00
Matthew Brown
08ce4dbbf9
Fix for/foreach context handling
2016-06-20 12:38:31 -04:00
Matthew Brown
9019530721
Simplify view checks for now
2016-06-20 01:29:30 -04:00
Matthew Brown
edd9a92d51
Dogfooding: fix codeinspector issues
2016-06-20 01:05:44 -04:00
Matthew Brown
444c39097f
Create Context, new if checks & file extension support
...
Add Context object to hold in-scope vars, rework if checks accordingly with copious use of clone, and finally add support for handling different filetypes
2016-06-20 00:38:13 -04:00
Matthew Brown
5f2d9a66ee
Add plugin architecture
2016-06-18 14:45:55 -04:00
Matthew Brown
684455acf0
Make sure _fleshOutReturnTypes actually does stuff
2016-06-17 18:03:29 -04:00
Matthew Brown
4b0c37f8b4
Improve error messages
2016-06-17 17:34:52 -04:00
Matthew Brown
af3577aeee
Fix support for $var ?: $other_var ternary form
2016-06-17 17:12:07 -04:00
Matthew Brown
4c0b50dab0
Protect against array assignment to strings
2016-06-17 16:58:15 -04:00
Matthew Brown
84fecaa2a5
Fix closure bug
2016-06-17 16:16:54 -04:00
Matthew Brown
5c1b7bb0bc
Fix a few type inference bugs
2016-06-17 16:05:28 -04:00
Matthew Brown
433de5c799
Make use dictionary-keyed vars in union types
2016-06-17 13:21:57 -04:00
Matthew Brown
9cc8d485ca
Fix a thing maybe
2016-06-16 19:02:29 -04:00
Matthew Brown
32e18aa29e
Redo a bunch of if statement checking logic
2016-06-16 18:52:12 -04:00
Matthew Brown
53abce127a
Exit early if method does not exist, fix ternary checks
2016-06-16 12:05:37 -04:00
Matthew Brown
fb56e3b757
Change returnType to inferredType
2016-06-16 12:04:55 -04:00
Matthew Brown
276889fc9a
Fix negation bugs and add ternary type setting
2016-06-16 11:57:12 -04:00
Matthew Brown
7c62568ac5
Remove var_dump
2016-06-16 02:31:02 -04:00
Matthew Brown
12e23d8086
Re-enable property checks
2016-06-16 02:30:02 -04:00
Matthew Brown
218edb5bf4
Add numerous fixes
2016-06-16 01:19:52 -04:00
Matthew Brown
2cf5691fb0
Fix case bug
2016-06-15 20:22:57 -04:00
Matthew Brown
0c617f9519
Fix many many bugs
2016-06-15 20:16:40 -04:00
Matthew Brown
a17e1fb163
Create new system of storing types
2016-06-14 19:22:29 -04:00
Matthew Brown
4e614436b5
Add TypeParser
2016-06-14 01:23:57 -04:00
Matthew Brown
2449e9aaac
Fix ref
2016-06-13 19:58:25 -04:00
Matthew Brown
933c60b06a
Add array assignment checks and remove Error suffix
2016-06-13 19:57:32 -04:00
Matthew Brown
01247558d6
Add checkDir method
2016-06-13 15:33:18 -04:00
Matthew Brown
82bca7a8b4
Do not negate types unnecessarily
2016-06-13 01:48:29 -04:00
Matthew Brown
5507798077
Add support for is_a checks
2016-06-10 18:18:37 -04:00
Matthew Brown
cefb0f3021
Smarter type comparisons and cleaner error output
2016-06-10 17:20:04 -04:00
Matthew Brown
46005ddd29
Read more from config and fix switch snafu
2016-06-10 14:47:44 -04:00
Matthew Brown
4edd11cd44
Down with exceptions, up with issues
2016-06-09 18:08:25 -04:00
Matthew Brown
50a884a755
Add outline of config loader
2016-06-06 01:07:50 -04:00
Matthew Brown
38b43f2d46
Remove var dumps and class properties exceptions
2016-06-05 20:31:10 -04:00
Matthew Brown
7bcaa08db8
Remove check_nulls protection
2016-06-05 20:28:02 -04:00
Matthew Brown
d8854fd4ef
Transition to more flexible error handling
2016-06-05 20:25:16 -04:00
Matthew Brown
281751d85c
Check parent calls
2016-06-02 19:21:48 -04:00
Matthew Brown
14ca6c291e
Be more diligent about assigning inherited methods
2016-06-02 19:21:35 -04:00
Matthew Brown
2ae893120e
Ignore trailing slashes in user-supplied classes
2016-06-02 17:56:27 -04:00
Matthew Brown
9428941598
Do not break on coercion and mocks
2016-06-02 17:50:19 -04:00
Matthew Brown
d8404037be
Be smarter about looping through params
2016-06-02 17:47:28 -04:00
Matthew Brown
57f289bb5f
Ignore nulls where appropriate, and do not check closure method calls under certain circumstances
2016-06-02 17:44:50 -04:00
Matthew Brown
3bea4368e0
Add checking of function argument types
2016-05-24 12:11:17 -04:00
Matthew Brown
97cab3c14e
Undo stupid
2016-05-24 10:21:22 -04:00
Matthew Brown
fc1ee03390
Prevent variable redefinition if it has already been typed
2016-05-22 18:09:10 -04:00
Matthew Brown
e8d207cd12
Support passing string types
2016-05-22 18:08:36 -04:00
Matthew Brown
39f459ac27
Isset treated as !null
2016-05-22 16:01:40 -04:00
Matthew Brown
c9b5554b69
Streamline reflection/registration checks to fix trait bug
2016-05-22 12:14:48 -04:00
Matthew Brown
ea9ab43229
Implementing methods not inherited methods
2016-05-20 19:07:05 -04:00
Matthew Brown
3112a40258
Make the right context get passed
2016-05-20 19:06:42 -04:00
Matthew Brown
d258e0debd
Speed up deep checks by quite a bit
2016-05-20 00:24:26 -04:00
Matthew Brown
333caeaeaa
Add a little caching
2016-05-16 18:10:59 -04:00
Matthew Brown
2ed9d2bff7
Add more useful return type data
2016-05-16 16:12:02 -04:00
Matthew Brown
316f2714b7
Added awareness of traits and deep method analysis
2016-05-15 23:06:03 -04:00
Matthew Brown
59c9ae6174
Allow suppression of null checks for certain files
2016-05-10 14:00:44 -04:00
Matthew Brown
7fd8955fea
Add $this->var to be passed by ref
2016-05-10 11:46:36 -04:00
Matthew Brown
1bd61e89af
Treat self as absolute calss
2016-05-09 15:58:48 -04:00
Matthew Brown
734aee73a5
More conservative post type assignment
2016-05-09 15:49:02 -04:00
Matthew Brown
a30901be48
Add $this->var analysis and improve else semantics
2016-05-09 08:56:07 -04:00
Matthew Brown
6046507578
Add better type inspection in loops
2016-05-05 21:20:15 -04:00
Matthew Brown
dfa7078937
Register all variables even if not checking
2016-04-30 17:31:49 -04:00
Matthew Brown
f24eea342c
Fix nested calls
2016-04-30 15:43:06 -04:00
Matthew Brown
45d0d41ffa
Remove effect checking
2016-04-30 15:22:20 -04:00
Matthew Brown
286158e07d
Do not throw error when reflectionmethod fails
2016-04-30 15:02:16 -04:00
Matthew Brown
cb59baec87
Improve type resolution
2016-04-30 14:14:22 -04:00
Matthew Brown
d5545918d6
Fix return type application
2016-04-28 15:18:36 -04:00
Matthew Brown
43375c2908
Add return types
2016-04-26 18:42:48 -04:00
Matthew Brown
0ab3710213
Fix bad replace
2016-04-26 18:42:22 -04:00
Matthew Brown
67d05d8df5
Fix generation generation
2016-04-26 18:32:37 -04:00
Matthew Brown
a6afbe736d
Add effect checking and new docblock generation
2016-04-26 18:18:49 -04:00
Matthew Brown
bd494daabd
Do better checking of types
2016-04-26 18:17:47 -04:00
Matthew Brown
27891e87a1
Use elseif type assertions within body of elseif
2016-04-21 12:02:12 +01:00
Matthew Brown
4be345a007
Flesh out nested types
2016-04-20 18:36:46 +01:00
Matthew Brown
edecae7983
Reduce scope where statements_checker is live
2016-04-20 18:35:59 +01:00
Matthew Brown
8472233bd3
Obey my own rules
2016-04-20 18:35:22 +01:00
Matthew Brown
7c72465325
Remove ClassChecker and Traversable lookups
2016-04-20 15:23:46 +01:00
Matthew Brown
c770146bac
Add void variable detection
2016-04-20 11:55:26 +01:00
Matthew Brown
2e6f518e48
Add detection of inaccessible methods
2016-04-18 13:31:59 -04:00
Matthew Brown
92a05355aa
Make CodeExceptions all self-contained
2016-04-17 16:20:36 -04:00
Matthew Brown
b9b639e968
Add support for Yoda comparisons
2016-04-17 15:22:10 -04:00
Matthew Brown
acf16db64f
View function declarations are not methods
2016-04-17 14:48:57 -04:00
Matthew Brown
079ddb66ee
Be more conservative with how we inspect inherited methods
2016-04-17 12:27:47 -04:00
Matthew Brown
bac2ab6027
Port over method custom calls
2016-04-17 11:26:29 -04:00
Matthew Brown
851c6418d3
Register more methods to prevent namespacing difficulties when reflecting
2016-04-17 11:22:18 -04:00
Matthew Brown
4adae3eb06
Add checking of nested namespace nodes
2016-04-17 10:25:43 -04:00
Matthew Brown
56d4d1c684
Split code out from StatementsChecker so it isn't so monolithic
2016-04-16 16:28:25 -04:00
Matthew Brown
f4910b0b96
Remove Vimeo-specific code and improve class checking
2016-04-16 11:28:19 -04:00
Matthew Brown
14b6b3dae2
Do not empty out $new_vars if a return statement is found
2016-04-16 10:18:40 -04:00
Matthew Brown
278d2cb642
Comment out type coercion warnings
2016-04-15 13:24:20 -04:00
Matthew Brown
6684d80041
Add warning for type coercion
2016-04-15 13:11:49 -04:00
Matthew Brown
8c039151de
Fix FQCN resolution for registerMethod
2016-04-15 12:57:35 -04:00
Matthew Brown
fbc6cdb346
Fix name resolution for subclasses
2016-04-15 12:48:41 -04:00
Matthew Brown
c82a3a00a9
Fix isMock check
2016-04-12 16:22:25 -04:00
Matthew Brown
2bfe45ce24
Add more lenient method checking and permit object traversal
2016-04-12 16:12:20 -04:00
Matthew Brown
27ef730836
Support nested generic types
2016-04-12 11:59:27 -04:00
Matthew Brown
e4846cd62f
Add protective isset
2016-04-12 11:30:11 -04:00
Matthew Brown
ff578f8468
Add support for square bracket array declarations is_array checks
2016-04-12 11:28:36 -04:00
Matthew Brown
d07e340d66
Add support for iterator generics
2016-04-11 19:13:50 -04:00
Matthew Brown
283180115b
Fix incorrect test & implementation
2016-04-04 16:33:26 -04:00
Matthew Brown
321a0b8288
Fix ternary checks and be more lenient with null issues
2016-04-04 15:00:57 -04:00
Matthew Brown
208b6e833b
Remove var_dump
2016-04-04 14:29:32 -04:00
Matthew Brown
6ec754d21d
Add redefined var scanning to switch statements
2016-04-04 14:29:02 -04:00
Matthew Brown
ba4d5e6376
Do not check deeply-nested concatenations
2016-04-04 14:06:29 -04:00
Matthew Brown
5c132274f4
Add support for $this->x vars
2016-04-04 01:21:28 -04:00
Matthew Brown
9032aa065a
Fix variable redefinition
2016-04-04 00:17:19 -04:00
Matthew Brown
265df0f4cb
Improve message
2016-04-03 20:20:46 -04:00
Matthew Brown
13e9923cd5
Fix ternary else check
2016-04-03 20:14:19 -04:00
Matthew Brown
f4dd4cb782
Support testing statements
2016-04-03 19:41:54 -04:00
Matthew Brown
83b7896d2b
Move all files to PSR-4-compliant folder structure
2016-04-03 19:41:22 -04:00