Matthew Brown
4ab15067de
Speed up unnecessary else checks
2018-05-31 22:20:38 -04:00
Matthew Brown
ee9fef050a
Add support for function checking plugins
2018-05-31 22:00:11 -04:00
Matthew Brown
dda9b4e48c
Fix #783 - allow ternarys to declare vars
2018-05-31 22:00:11 -04:00
Bruce Weirdan
6ecea35837
array_column return type inference ( #787 )
...
* Exception message typo fixed
* array_column return type inference
It takes a safe approach and only tries to be smart when array row type
is definite single shape
* cs fix
2018-05-31 21:14:06 -04:00
Matt Brown
c31d963918
Allow constants in array offsets to be reasoned about
2018-05-31 16:49:01 -04:00
Matt Brown
ef992612d9
Fix $_SERVER var reconciliation
2018-05-31 15:30:39 -04:00
Matt Brown
2b697a34f8
Fix #786 - improve treatment of array isset checks
2018-05-31 15:07:03 -04:00
Matthew Brown
258e862c92
Only assign global vars to mixed if they don’t already exist
2018-05-31 09:02:57 -04:00
Matthew Brown
72f65cf544
Fix global tests
2018-05-30 22:56:46 -04:00
Matthew Brown
6b8e019a07
Bleed global variables declared in functions into main context
2018-05-30 22:09:46 -04:00
Matthew Brown
df89c8d7f2
Fix variadic check for included file functions
2018-05-30 21:01:50 -04:00
Matthew Brown
33a38113f3
Fix isset check
2018-05-30 20:54:03 -04:00
Matt Brown
eb10b15cfc
Improve reliability of elseif resolution
2018-05-30 18:56:44 -04:00
Matt Brown
549e90eca4
Treat required files the same as the files that require them, reporting-wise
2018-05-30 16:19:18 -04:00
Matt Brown
4fb6bbf5ee
Prevent clause size from ballooning
2018-05-30 13:57:45 -04:00
Matt Brown
1462020cd4
Properly analyse nested traits
2018-05-30 13:08:56 -04:00
Matt Brown
68dbe509a8
Fix #731 - report issues in files required by the source
2018-05-30 12:23:53 -04:00
Matt Brown
9227e61097
Fix #715 - no redundant condition for is_a(self::class,...) checks inside trait
2018-05-30 10:13:55 -04:00
Matthew Brown
1a4891c2e0
Fix #781 - prevent DuplicateArrayKey warning unnecessarily
2018-05-30 07:42:00 -04:00
Tyson Andre
39a1ecfd89
Remove unused variables ( #777 )
2018-05-29 10:08:56 +01:00
Matthew Brown
81ae1ca222
Fix #747 - allow Generator to replace Traversable in templated params
2018-05-28 22:26:43 +01:00
Matthew Brown
aac01f0670
Fix #766 and fix #765 - improve handling of ^ and xor
2018-05-28 20:31:20 +01:00
Matthew Brown
d98261507f
Fix #769 - add @psalm-assert and @psalm-assert-if-true annotation support
2018-05-28 20:07:42 +01:00
Matthew Brown
62486c1adb
Fix #772 - allow closures to be defined on a single line
2018-05-25 18:42:39 +01:00
Matt Brown
086b6d0372
Seal the output of switch statments
2018-05-24 14:26:29 -04:00
Matthew Brown
c8faaf0ca9
Remove unused vars
2018-05-23 21:27:01 -04:00
Matthew Brown
e61ba336be
Rewrite ifs as big switch
2018-05-23 21:17:14 -04:00
Matthew Brown
c217849737
Improve handling of projects that use include/require heavily
2018-05-22 23:39:01 -04:00
Matt Brown
5007a3a3b6
Only scan user-defined constructors for property initialisations
2018-05-21 13:06:11 -04:00
Matt Brown
aebbd473d9
Fix issues reconciling class-string params to actual types
2018-05-21 12:40:39 -04:00
Matthew Brown
228337415b
Fix #761 - add support for class constants in enums
2018-05-21 00:46:56 -04:00
Matthew Brown
19ca1c9311
Suppress enum redundant conditions too
2018-05-20 18:58:34 -04:00
Matthew Brown
3805893c5a
Improve error messages for literal types
2018-05-20 17:43:02 -04:00
Matthew Brown
6250c2a14c
Fix #16 - add support for enums
2018-05-20 17:19:53 -04:00
Matthew Brown
a3e2b98f7c
Fix #743 - put InvalidArgument messages before PossiblyFalseArgument
2018-05-20 13:14:31 -04:00
Matthew Brown
cdcba6152d
Add ability to infer return type for method calls
2018-05-20 12:47:26 -04:00
Matthew Brown
5bd9ba6207
Make TClassString inherit from TLiteralString
2018-05-20 00:27:53 -04:00
Matthew Brown
34a39b895c
Support checks for array emptiness
2018-05-19 20:31:48 -04:00
Matthew Brown
ea465852e1
Move TypeCombination logic into its own class
2018-05-19 19:44:03 -04:00
Matthew Brown
09eb316a9c
Fix #755 - add support for inferring explicit true checks
2018-05-19 00:41:07 -04:00
Matt Brown
f2a70fef85
Fix #745 - give iterator_to_array back its type info
2018-05-18 18:10:10 -04:00
Matthew Brown
b0733254bb
Use individual type objects for each string ( #757 )
...
* Experiment with individual types for each string
* Fix bunch of errors
* Fix a few more issues
* Fix a whole bunch of bugs
* Fix most remaining bugs
* Fix isset warnings
* Fix psalm errors in psalm
* Limit big string size
* Fix falsiness of ints
* Fix issue with type widening, allowing value set in nested if to be altered
* Don’t complain if type is mixed
* Add skipped-for-now test
* Add specific test to address issue
2018-05-18 11:02:50 -04:00
Matthew Brown
ec381308dd
Fix #753 - prevent some strings from becoming literals
2018-05-17 01:46:01 -04:00
Matt Brown
3119a1f68a
Allow resolution of class constants in const arrays
2018-05-14 17:39:08 -04:00
Matt Brown
a0281e5716
Improve clause eradication after ifs
2018-05-14 16:29:51 -04:00
Matt Brown
02c72f6de5
Fix buggy if checks
2018-05-14 12:25:58 -04:00
Matthew Brown
af8705502e
Improve impossible case location reporting
2018-05-13 22:31:45 -04:00
Matthew Brown
557c3ddace
Limit to the case condition
2018-05-13 22:25:08 -04:00
Matthew Brown
05c3d1ab03
Improve reporting of duplicate case statements
2018-05-13 22:02:10 -04:00
Matthew Brown
dbc0e6dfcb
Use arrays instead of strings for assertions
2018-05-12 19:38:43 -04:00
Matthew Brown
7dd86efa13
Add support for checking negative values
2018-05-12 18:46:47 -04:00
Matthew Brown
759516d01f
Fall back to $method_id if no defining method id found
2018-05-12 13:19:19 -04:00
Matthew Brown
313a010355
Add workaround for Closure::__invoke
2018-05-12 13:02:53 -04:00
Matthew Brown
4fe5ac87b6
Fix #712 - rewrite switch statement fallthroughs to understand logic better
2018-05-12 12:55:24 -04:00
Matthew Brown
8de8ce2ef4
Only assign new offset types when it’s safe to do so
2018-05-12 11:19:31 -04:00
Matthew Brown
5589aa89be
Fix #736 - only remove offset type when it doesn’t contain const array type
2018-05-12 11:17:41 -04:00
Matthew Brown
56a1f744a0
Fix #734 - allow DOMDocument::appendChild to mirror its first arg
2018-05-12 00:28:21 -04:00
Matthew Brown
1b8fd75a77
Suppress possibly-invalid key issue
2018-05-11 23:24:50 -04:00
Matthew Brown
b9b2a909a1
Fix #729 and prevent impossible const array access
2018-05-11 23:14:44 -04:00
Matt Brown
5c0f4a999c
Move a bunch of classes to better places
2018-05-11 18:35:02 -04:00
Matt Brown
ef519ade72
Don’t adjust vars unless they’re passed by ref
2018-05-11 18:09:11 -04:00
Matthew Brown
a33d52d935
Add support for referencedProperty error restrictions
2018-05-11 00:07:41 -04:00
Matt Brown
92bb22ccca
Fix misfire with similarly named class constants
2018-05-10 14:12:50 -04:00
Matt Brown
444dd33118
Fix issue with undefined class constant keys
2018-05-10 13:01:55 -04:00
Matt Brown
ad94761e15
Fix undefined property fetch redundant condition
2018-05-09 12:54:31 -04:00
Matthew Brown
318220a1bf
Fix #728 - remove statement return type when re-analysing
2018-05-09 09:30:23 -04:00
Matthew Brown
b4c0ffbe9d
Also match substr_replace
2018-05-09 00:39:45 -04:00
Matthew Brown
8149573754
Treat str_ireplace like str_replace
2018-05-09 00:34:44 -04:00
Matthew Brown
77d4629896
Fix #714 - fix trait class constants
2018-05-08 22:32:57 -04:00
Matthew Brown
8f9b4098bc
Allow scalar to work with false
...
Fixes #718
2018-05-08 22:18:58 -04:00
Matthew Brown
2c0dd36035
Fix get type return types
2018-05-08 22:01:05 -04:00
Matthew Brown
5c39fb5ab1
Fix #716 - uss string inference to inform property names
2018-05-08 21:21:22 -04:00
Matthew Brown
c1440c11dc
Create separate file for magic properties
2018-05-08 20:25:39 -04:00
Matthew Brown
e50ef8bf03
Support __invoke return types
2018-05-08 19:49:25 -04:00
Tyson Andre
9a9f6d1856
Make the string concatenation of two known values into a known value ( #717 )
...
* Make the string concatenation of two known values into a known value
address review comments
* Add vim temporary files to .gitignore
2018-05-08 19:11:18 -04:00
Matt Brown
6e259bed03
Always evaluate closures, even when passed as mixed call args
2018-05-08 18:11:10 -04:00
Matt Brown
53ff05783c
Clean up code slightly
2018-05-08 17:43:26 -04:00
Matt Brown
4f678f5f99
Fix bad comparisons
2018-05-08 17:42:02 -04:00
Matt Brown
03ea65cff8
Don’t complain about false values on properties when we don’t care
2018-05-08 16:57:16 -04:00
Matt Brown
bc17d23788
Fix mixed empty checks
2018-05-08 16:34:08 -04:00
Matt Brown
3c9e42f884
Fix string assertion for ternaries
2018-05-07 17:52:18 -04:00
Matt Brown
f858924b60
Fix erroneous string matching after oring
2018-05-07 17:40:16 -04:00
Matt Brown
6460d907f9
Improve array handling when offsets hard to define
2018-05-07 16:22:04 -04:00
Matt Brown
c0729a02cd
Fix remaining issues with logic checks
2018-05-07 14:52:45 -04:00
Matthew Brown
61aeea6375
Fix whole bunches of things
2018-05-07 01:26:06 -04:00
Matthew Brown
3b9b4a8a6f
Improve binary op function layout
2018-05-06 12:11:40 -04:00
Matthew Brown
c31f787f7c
Convert DNF conditions to CNF
2018-05-06 12:11:40 -04:00
Matthew Brown
00838d19b5
Fix #534 - fix bug in type simplification
2018-05-06 12:05:55 -04:00
Matthew Brown
04bd492360
Fix erroneous scope resolution
2018-05-05 20:52:10 -04:00
Matthew Brown
8d8fdad924
Always set array offset type
2018-05-05 17:50:19 -04:00
Matthew Brown
21261172a8
Fix #713 - support offsets of known array types
2018-05-05 17:30:18 -04:00
Matthew Brown
85c69f1335
Make sure div operations return GMP too
2018-05-05 13:14:59 -04:00
Matthew Brown
3718bd5c61
Fix GMP arithmetic operations
2018-05-05 12:59:30 -04:00
Matthew Brown
1a4ddc7cdd
Support value types ( #707 )
...
* Add first idea
* Add initial count experiments
* Remove false positives
* Fix getId to support changes in conditionals
* Add better tests
* Strip types when not exists
* Fix array offsets
* More fixes
* Add class constant value types
* Clone constants everywhere
* Don’t complain unnecessarily
* Be more lenient with possibly invalid __sets
* Fix mixed issues
* Fix bug concerning orred string equality
* Remove unnecessary casts
2018-05-03 13:56:30 -04:00
Matt Brown
521237dc56
Fix #705 - don’t be so strict about undefined constants
2018-05-03 13:20:42 -04:00
Matthew Brown
7ccc17cd98
Fix #324 - improve undefined array handling
2018-05-02 20:10:08 -04:00
Matthew Brown
fa95dede08
Fix #455 - allow unset to alter object-like arrays
2018-05-02 19:39:11 -04:00
Matt Brown
4513d24b7d
If there’s any overlap in types use PossiblyInvalidArgument
2018-05-01 14:27:05 -04:00
Matthew Brown
b36b50784d
Fix #703 - prevent undefined param offset
2018-04-30 22:18:41 -04:00
Matthew Brown
15e1003c37
Warn about impossible empty
2018-04-30 22:13:13 -04:00