Matthew Brown
1d3e66c798
Fix #982 - treat intersection types of traversables as first-order citizens
2018-09-09 20:10:50 -04:00
Matthew Brown
80cd77832b
Fix #980 - allow literal int types to be coerced from mixed
2018-09-09 13:01:16 -04:00
Matthew Brown
2c3244e93b
Fix #981 - allow interfaces to be equal
2018-09-09 12:20:49 -04:00
Matthew Brown
53e265e963
Fix #984 - allow magic methods to be invoked on $this->xxx
2018-09-09 11:45:52 -04:00
Matthew Brown
046025576e
Fix issue merging class constants and inherited interface ones
2018-09-09 11:18:20 -04:00
Matt Brown
bafd3cde1f
Fix #983 - allow more than two types to be intersected
2018-09-07 11:09:07 -04:00
Matt Brown
4d676afaef
Fix #985 - strip null from object type where possible
2018-09-07 11:01:10 -04:00
Matt Brown
6e5a9bf076
Fix #986 - use better return type for array_slice
2018-09-07 10:53:56 -04:00
Matthew Brown
44c742c849
Fix #976 - make sure misplaced { doesn’t halt execution
2018-09-06 00:41:07 -04:00
Matthew Brown
3e920b1227
Fix unexpected method with return type
2018-09-05 22:40:52 -04:00
Matthew Brown
e6d1a44a59
Fix #974 - fix handling of brackets
2018-09-05 22:36:32 -04:00
Matthew Brown
84459286ac
Fix #973 - allow types to reference other new types in a given docblock
2018-09-04 22:27:55 -04:00
Matthew Brown
7c274431f0
Fix #975 - don’t check things at all when there’s a duplicate class
2018-09-04 21:22:05 -04:00
Matt Brown
add7c14b44
Fix #965 - invalidate cache when changing plugins
2018-09-04 15:28:03 -04:00
Matt Brown
b97972ebb3
Fix Psalm-found issues
2018-09-04 14:37:33 -04:00
Matt Brown
cbfebb7a69
Fix #971 - be more robust in face of duplicate classes
2018-09-04 14:34:14 -04:00
Matt Brown
5d6fb4efdf
Copy inferred type when suppressing errors
2018-09-04 13:57:05 -04:00
Matt Brown
681b5fb4a5
Fix #970 - improve handling of yield from statements
2018-09-04 13:29:35 -04:00
Matt Brown
e1bc9c65fc
Add ksort to list of no-op by ref functions (vis-a-vis their argument shape
2018-09-04 13:14:44 -04:00
Matthew Brown
84d7504036
Fix #834 - warn about __toString in array offset
2018-08-31 20:24:50 -04:00
Matthew Brown
d5b0d5a996
Fix #964 - warn about imposible offsets
2018-08-31 20:02:36 -04:00
Matthew Brown
3e69a333c9
Prevent fatal error with function_exists after autoloading
2018-08-29 20:54:48 -04:00
Matt Brown
7dd3273a62
Fix #959 - allow nullable followed by parentheses
2018-08-29 16:03:16 -04:00
Matt Brown
17ea48eda4
Add ability to pretend that a file has declare(strict_types=1)
2018-08-29 15:10:56 -04:00
Matt Brown
956a7c749b
Improve handling of array_search and strstr, and restrict ini_set types
2018-08-29 13:58:07 -04:00
Matt Brown
f844f86a6c
Improve type coercion checks in strict mode
2018-08-28 17:42:39 -04:00
Matt Brown
1037485a60
Convert InvalidScalarArgument to InvalidArgument when declare(strict_types=1) is set
2018-08-28 12:37:25 -04:00
Matt Brown
2599d8bd62
Allow some folders to be excluded from type stats collection
2018-08-24 17:46:13 -04:00
Matt Brown
caf65ca8a9
Fix #957 - allow assertions on $_GET, $_POST, $_SERVER etc
2018-08-24 16:48:14 -04:00
Matt Brown
4ef2aafdd8
Fix #955 - always check third argument of array_splice
2018-08-24 16:12:07 -04:00
Matt Brown
0691763803
Fix issue reconciling class strings
2018-08-23 11:43:53 -04:00
Matthew Brown
867ebd4441
Fix #953 - support spaces either side of |
2018-08-22 22:53:44 -04:00
Matt Brown
ebc65baa91
Fix issues with coerced class-string
2018-08-21 17:59:06 -04:00
Matt Brown
91100edcc9
Fix issue mixing class strings and class string constants
2018-08-21 14:47:28 -04:00
Matt Brown
699a34fc9d
Fix #952 - improve checks for string array offsets
2018-08-21 11:40:29 -04:00
Matthew Brown
bf79169a1d
Fix #914 - check for correct character when setting calculated field
2018-08-21 00:43:45 -04:00
Matthew Brown
4ad3522448
Fix #918 - improve handling of associative array offsets
2018-08-21 00:28:39 -04:00
Matthew Brown
36e2b1dd67
Fix #925 - set correct flag when coercing class-like string to specific
2018-08-20 22:25:10 -04:00
Matthew Brown
8814dff3c1
Fix #947 - interpret type hints of unpacked args
2018-08-20 22:11:01 -04:00
Pieter De Schepper
14e336e69a
Fix for not suppressing MethodSignatureMismatch and InvalidReturnType ( #939 )
...
* Fix for not suppressing MethodSignatureMismatch
If you have an inherited class that overrides a method with a different return type, you can now suppress it with
@psalm-suppress MethodSignatureMismatch
* Fix for non-suppressable InvalidReturnType
2018-08-20 21:37:21 -04:00
François Kooman
53ddb893e2
various DateTime/DateInterval argument type fixes ( #949 )
2018-08-18 16:18:55 -04:00
Matt Brown
070e7903df
Allow suppression of TooManyArguments by function/method id
2018-08-16 16:49:33 -04:00
Bruce Weirdan
3b3863f3a8
Scan entire file/dir list at once ( #944 )
...
fixes vimeo/psalm#943
2018-08-15 11:57:40 -04:00
Matt Brown
366f625c83
Improve handling of coerced-to-array strings in array_splice
2018-08-14 11:51:17 -04:00
Matt Brown
cb63f4f70f
Add support for checking DeprecatedTrait and DeprecatedConstant
2018-08-10 13:25:25 -04:00
Matthew Brown
2fee699d25
Fix #908 - dont’t emit UnresolvableInclude after file_exists check
2018-08-09 23:29:30 -04:00
Matthew Brown
abc19d7136
Fix #915 - never care about falsable/nullable issues when matching functions from callmap
2018-08-08 23:28:30 -04:00
Matthew Brown
b9018a4a03
Fix #936 - add support for class constants in enums
2018-08-08 23:12:12 -04:00
Matthew Brown
7c10a09ead
Fix #911 - properly substitute alias types
...
Also improve handling of array_splice
2018-08-08 22:33:31 -04:00
Matthew Brown
9880e2bede
Prevent leading-number constants in docblocks
2018-08-08 21:36:33 -04:00
Matthew Brown
6670dd31e1
Fix #927 - improve typing of object-like arrays containing class like strings
2018-08-08 21:31:13 -04:00
Matthew Brown
d9af167e38
Fix #931 - replace self in enum declaration where possible
2018-08-08 20:59:21 -04:00
Matthew Brown
55be2c3ce4
Fix #934 - allow numbers in class constant enums
2018-08-08 20:36:16 -04:00
Matt Brown
226aa27686
Fix issue resolving namespaced constants
2018-08-08 16:13:37 -04:00
Matt Brown
2636b194db
Fix #920 - support @var self properties in static method calls
2018-08-07 14:43:05 -04:00
Matt Brown
0304201d91
Fix #932 - allow obvious string vars to be used for includes
2018-08-07 13:17:23 -04:00
François Kooman
c54534c640
fix return values of imagettfbbox and imagettftext ( #929 )
2018-08-03 11:01:45 -05:00
Matthew Brown
37be70a465
Fix issue calling possibly magic method
2018-08-02 16:14:53 -05:00
Matthew Brown
c9a2ca9321
Allow output of get_parent_class to be used in new without check
2018-08-02 13:43:13 -05:00
François Kooman
b1e81c2c25
fix ldap_bind parameters, allow null for bind_rdn and bind_password
2018-08-02 13:14:41 -05:00
Tyson Andre
06abf52d94
Fix typos detected by misspell
( #924 )
...
Both of initiali[sz]e were used, z was more common.
2018-08-02 00:40:51 -04:00
François Kooman
9ebf748eb9
fix return value of headers_list ( #919 )
2018-08-02 00:40:10 -04:00
Matthew Brown
d3fc9a51e0
Improve callmap with PHPStan’s additions
...
cc @TysonAndre
2018-07-22 19:15:40 -04:00
Matthew Brown
b6372f8342
Analyse SimpleNameResolver too
2018-07-22 18:00:08 -04:00
Matthew Brown
4de33e509b
Fix linting issues
2018-07-21 22:55:16 -04:00
Matthew Brown
cc28ff7ad6
Fix #904 - scan all docblocks for possible @psalm-type annotations
2018-07-21 22:24:33 -04:00
Matthew Brown
200ea70334
Check that non-user-defined abstract methods are implemented, too
2018-07-21 20:50:42 -04:00
Matthew Brown
bc23f732a4
Fix #905 - ignore interface case when checking for extended interfaces
2018-07-21 20:38:55 -04:00
Matthew Brown
79d547d0a0
Add support for second dirname arg
...
Fixes #900
2018-07-21 20:22:42 -04:00
Matthew Brown
c97329da06
Fix #903 - make sure parent::foo is executed in context of method’s class
...
and not immediate parent
2018-07-21 20:01:58 -04:00
Matt Brown
ad3e449982
Allow rescanning of classes when we need more info
2018-07-18 11:44:01 -04:00
Matthew Brown
2af7ea05da
Fix #897 - understand static class comparisons in is_a
2018-07-17 22:50:30 -04:00
Matt Brown
6a06f06044
Improve API for disabling extensions and disable apc as well
2018-07-17 16:40:03 -04:00
Matt Brown
516b2eea5d
Fix SoapClient::__call param type
2018-07-17 14:16:22 -04:00
Matt Brown
73aa0df08a
Restart without grpc if running in threaded mode
2018-07-17 14:08:40 -04:00
Matthew Brown
9a9adf897d
Fix #896 - improve ReflectionParameter::getType return
2018-07-17 08:45:42 -04:00
Matthew Brown
0fa7cbeb02
Fix #895 - check __call magic method args
2018-07-16 22:48:53 -04:00
Matthew Brown
39870f97c4
Fix #894 - check magic methods with given return types
2018-07-16 20:32:16 -04:00
Matt Brown
92aa3f8117
Fix dumb regression
2018-07-16 16:07:18 -04:00
Matt Brown
b80440f1e3
Fix #893 - improve error message for missing intersection type method
2018-07-16 11:52:38 -04:00
Matthew Brown
95b9b8b51e
Remove PHP 5-incompatible things from SimpleNameResolver
2018-07-16 00:03:03 -04:00
Matthew Brown
e836f69ca2
Fix #502 - check for bad generator return in more places
2018-07-15 17:47:58 -04:00
Matthew Brown
1e54c61fde
Fix #18 - add support for @psalm-type
2018-07-15 17:23:17 -04:00
Matthew Brown
f9ba8d7167
Fix #573 - improve required param message
2018-07-13 20:17:29 -04:00
Matthew Brown
fee705f90c
Fix #489 - support @psalm-template
2018-07-13 19:09:35 -04:00
Matthew Brown
91f7cdf134
Fix #890 - improve reporting site for some method issues
2018-07-13 18:47:21 -04:00
Matthew Brown
1589b2a01e
Fix #269 - allow trigger_error to count as exit statement
2018-07-13 18:36:25 -04:00
Matthew Brown
4172952e8b
Fix #306 - add support for typing generators
2018-07-13 17:34:44 -04:00
Matthew Brown
a8a504c3b9
Fix #889 - allow variables defined in try
to avoid isset issues
2018-07-13 14:06:01 -04:00
Matthew Brown
677e6edcb1
Fix nullref
2018-07-13 09:58:35 -04:00
Matthew Brown
3a235ad757
Fix #887 - resolve get_class($c) === self::class to current class name
2018-07-13 09:52:15 -04:00
Matthew Brown
d41a9a8dcc
Fix #806 - allow specification of functions and static methods that exit
2018-07-12 23:26:08 -04:00
Matthew Brown
5ea8b86b7c
Resolve as many names as possible in the parsing stage
2018-07-12 21:25:06 -04:00
Matt Brown
7713c7a8d6
Use continue 2 in place of continue
2018-07-12 18:04:05 -04:00
Matt Brown
f6b15a4a5a
Fix #847 - only warn about LessSpecificReturnType when method is not overridden
2018-07-12 16:57:24 -04:00
Matt Brown
4f9d4b7094
Fix #885 - allow suppression of UndefinedMethod at method level
2018-07-12 12:12:28 -04:00
Matt Brown
c2bc8bde55
Fix #866 - prevent false positive inside do
2018-07-12 12:08:15 -04:00
Matt Brown
c498356f9d
Fix property map for static call prop
2018-07-11 13:01:03 -04:00
Matt Brown
8b3fa21b41
Fix #884 - don’t error on static calls that aren’t user defined
2018-07-11 12:05:50 -04:00
Matt Brown
42e1090647
Add support for static method call assertions
2018-07-11 11:32:12 -04:00
Matt Brown
661803a020
Fix #883 - add @psalm-assert-if-true support to methods
2018-07-11 11:22:07 -04:00
Matt Brown
0ef71a49cb
Fix #882 - allow STDOUT and STDERR as constants
2018-07-10 17:40:34 -04:00
Tyson Andre
66f6d4b1ea
Allow empty default of 0
for optional parameter in magic method ( #880 )
...
Fixes #879
`!= ''` will reject both null and '', but not `0`
2018-07-10 16:01:44 -04:00
Matt Brown
5bb5bb2476
Check this properties for redundant conditions
2018-07-10 12:32:53 -04:00
Matthew Brown
21001668df
Don’t double-quote string
2018-07-10 00:39:33 -04:00
SignpostMarv
3eb027d371
875 addendum ( #876 )
...
* testing port
* testing return values with port
* removing redundant assertions
* forgot to return ¬_¬
* Fix build
2018-07-10 00:08:53 -04:00
Matt Brown
166706a35d
Fix #875 - improve return types for parse_url
2018-07-09 14:37:14 -04:00
Matt Brown
bbf48bbdfe
Fix #873 - allow unpacking of all iterables
2018-07-09 09:59:51 -04:00
Matthew Brown
3b12ce4a31
Fix #874 - add support for is_iterable
2018-07-09 08:31:43 -04:00
Matthew Brown
cd4bb75d80
Fix #871 - handle gettimeofday args
2018-07-07 20:35:24 -04:00
Matthew Brown
0d62431cfb
Fix #870 - improve magic method type handling
2018-07-07 00:06:05 -04:00
Tyson Andre
a3b1bebb5b
Fix misuse of preg_quote ( #869 )
...
1. Variable ids can contain slashes or dots, e.g. for `${'my/var'} = 2`
or psalm's local representation of properties or array indexes
(I forget which)
2. preg_quote's escape character should **always** be the same as the
pattern starting character.
Using DIRECTORY_SEPARATOR will fail to escape '/' on windows.
2018-07-06 19:16:31 -04:00
Matt Brown
e62b711c36
Fix docblock
2018-07-06 14:14:24 -04:00
Matt Brown
a887d09ca9
Fix #867 - make some system constant types more broad
2018-07-06 13:35:36 -04:00
Matt Brown
7e09f59825
Fix #868 - improve return type of version_compare
2018-07-06 13:09:05 -04:00
Matthew Brown
ced0aef34d
Clean out assertions before re-examining loop
2018-07-06 00:36:11 -04:00
Matthew Brown
8a4d7e12bd
Fix issues found by scanning PHPCS
2018-07-05 23:02:09 -04:00
Matthew Brown
c4fd6aa18d
Allow break/continue inside do
2018-07-05 21:03:44 -04:00
Matthew Brown
8bdeb5ed65
Fix #864 - only create intersection types when dealing with classes & interfaces
2018-07-05 19:46:33 -04:00
Matt Brown
71b2420c83
Fix #865 - support literals in return types
2018-07-05 17:25:26 -04:00
Matt Brown
af14d6982f
Fix #863 - MixedTypeCoercion is more appropriate in many cases
2018-07-05 10:11:04 -04:00
Matthew Brown
5cb23b7f47
Always scan class if autoloaded from same location
2018-07-04 15:33:48 -04:00
Matthew Brown
6090355241
Add possible fix for unevaluated classlikes
2018-07-04 14:32:58 -04:00
Matthew Brown
7d747be5d5
Fix checks for possibly null right part of binary op
2018-07-03 19:52:40 -04:00
Matt Brown
b8636eb326
Improve memoisation of chained calls
2018-07-03 12:45:29 -04:00
Matt Brown
534876085d
Fix #857 - improve handling of hard-to-reconcile while conditionals
2018-07-03 12:27:14 -04:00
Matt Brown
4a4d091c02
Fix #858 - scan files before autoloading them
2018-07-03 11:17:52 -04:00
Matthew Brown
ec1f7ba7be
Add exception for case that shouldn’t appear
2018-07-03 08:09:00 -04:00
Matthew Brown
5623aa1c19
Don’t memoise assertions - it messes with trait analysis
2018-07-03 00:51:57 -04:00
Matthew Brown
5860fcf59d
We can reason about ORed conditions in while loops now
2018-07-02 23:46:51 -04:00
Matthew Brown
76e369d330
Allow multiple matching types to be captured in if
2018-07-02 22:53:17 -04:00
Matthew Brown
c354a024d8
Fix #856 - perform better class filtering based on parent classes
2018-07-02 21:59:40 -04:00
Matt Brown
6287f52dd5
Fix loop analysis for byref vars, likely performance hit
2018-07-02 16:44:32 -04:00
Matthew Brown
16e270f0ee
Improve loading of stub file and autoload file information
...
Ref #849
2018-06-30 15:29:37 -04:00
Matthew Brown
745acaea71
Allow bracketing as part of union type
...
Ref #854
2018-06-30 13:09:05 -04:00
Matthew Brown
bca3b1797c
Fix #852 - improve handling of variables updated in do conditional
2018-06-30 12:56:42 -04:00
Matthew Brown
5ed062257b
Allow dead code detection to capture last do checks
2018-06-30 11:08:51 -04:00
Matthew Brown
6267fa7d1d
Fix #850 - allow is_numeric to refine scalar type
2018-06-30 10:52:45 -04:00
Matthew Brown
b5c89084fc
Fix #851 - prevent null being removed in simplifyUnionType
2018-06-30 10:38:37 -04:00
Matt Brown
1ca5ef9bf7
Prevent duplicate classes in same file
2018-06-29 15:39:17 -04:00
Matt Brown
7dc982138d
Fix possibly null DuplicateClass issue
2018-06-29 15:31:17 -04:00
Matt Brown
89cc63846f
Improve handling of autoloaded files
...
Fixes #848
2018-06-29 15:28:45 -04:00
Matthew Brown
c1052c0a6a
Only create intersections for types that don’t contain each other
2018-06-29 00:49:46 -04:00
Matt Brown
5f251a9d88
Allow intersection creation of interface then class
2018-06-28 18:13:06 -04:00
Matt Brown
c872f9179e
Remove mixed in @method param types
2018-06-28 17:39:25 -04:00
Matt Brown
2fc816a6e1
Fix repeated use of spread operator
2018-06-28 17:05:50 -04:00
Matt Brown
376c3c54c0
Add better checks for array_reduce
...
Fixes #846
2018-06-28 16:01:53 -04:00
Matthew Brown
ce1fda46a6
Fix hard-to-resolve constant values
2018-06-27 21:53:25 -04:00
Matt Brown
2c4b8e8ce3
Fix division-by-zero error
...
Fixes #844
2018-06-27 13:41:50 -04:00
Matt Brown
192d7769bd
Fix #843 - make FilesystemIterator::current more general
2018-06-27 12:04:24 -04:00
Matt Brown
72b110af3f
Analyse RHS of instanceof expressions if expression
2018-06-27 10:07:40 -04:00
Matthew Brown
685ae67435
Fix #839 - check args for __call methods
2018-06-26 23:11:16 -04:00
Matthew Brown
5867ef45ff
Check method args even if the methods themselves cannot be checked
2018-06-25 19:38:15 -04:00
Matt Brown
ffda44c3ba
Fix #838 - check assertions, even outside conditionals
2018-06-25 18:02:05 -04:00
Matt Brown
f2d96eefe7
Fix #837 - detect issues with constants
2018-06-25 15:03:45 -04:00
François Kooman
83dd5a9418
fix return value of ldap_explode_dn ( #835 )
2018-06-25 14:53:09 -04:00
Matthew Brown
23e90edc50
Fix SplFixedArray::__construct first arg can be left out
2018-06-25 00:03:09 -04:00
Matthew Brown
e1d922e9df
Add support for ignoredExceptions
2018-06-22 01:26:10 -04:00
Matthew Brown
e3ae1bf26f
Fix #15 - check for uncaught throws if config flag is set
2018-06-22 01:13:49 -04:00
Matt Brown
dcc2c7671e
Fix callmap regressions cc @jaydiablo
2018-06-20 15:41:09 -04:00
Matt Brown
ae5ff1abad
Improve callmap from Phan thanks to @ondrejmirtes
2018-06-20 13:55:14 -04:00
Matt Brown
740279352e
Fix #830 - unpack template param args appropriately
2018-06-20 10:40:50 -04:00
Matthew Brown
4688cf7a92
Fix #831 - ignore falsable issues when getting callmap function params
2018-06-20 09:09:03 -04:00
Matt Brown
e10b2c0fd4
Fix #805 - allow dead code detection from methods just called internally
2018-06-19 16:14:51 -04:00
Matt Brown
f7845616b6
Allow SplFileObject::current to return false
2018-06-19 14:06:20 -04:00
Matt Brown
11240eb193
Fix #826 allow better template replacements
2018-06-19 13:19:41 -04:00
François Kooman
89f78befa7
glob can return false ( #828 )
2018-06-19 10:15:05 -04:00
Matt Brown
2be0f68d87
Add better checks on increment/decrement operators
2018-06-18 13:16:51 -04:00
Matt Brown
75e2be8aec
Fix #825 - ignore falsable issues on builtin *methods*
2018-06-18 10:07:05 -04:00
Matthew Brown
d4107f9e5e
Fix issue erasing nullability of boolean
2018-06-17 13:47:31 -04:00
Matthew Brown
2c245b0a08
Fix #823 - trigger redundant condition on impossible assertions
2018-06-17 13:20:37 -04:00
Matthew Brown
5ddd74e7d2
Catch unused foreach key when it’s already in scope
2018-06-17 00:52:32 -04:00
Matthew Brown
805bfa6f2d
Improve handling of switch statement assignments
2018-06-17 00:12:26 -04:00
Matthew Brown
89affb6c2c
Fix #822 - improve dead code detection on assignop expressions
2018-06-16 23:40:25 -04:00
Matthew Brown
fa51c39902
Improve dead code analysis of switch statements
2018-06-16 21:54:44 -04:00
Matthew Brown
f38da967dd
Fix a few issues with dead code detection
2018-06-16 21:14:19 -04:00
Matthew Brown
3670f066bb
Improve dead code detection
2018-06-16 20:01:41 -04:00
Matt Brown
3afd6053fd
Fix #819 - only add is_a assertion if static::class known
2018-06-15 10:51:30 -04:00
François Kooman
1d8799ce70
fix PDOStatement::fetchColumn, can also return false
( #821 )
2018-06-15 10:51:00 -04:00
Matt Brown
47a40b2ffc
Fix #817 - allow methods named "global" in @method annotations
2018-06-14 17:20:02 -04:00
Matt Brown
7fb4c4acad
Allow 0 in type
2018-06-14 15:58:49 -04:00
Matt Brown
d56dd6bed6
Fix #818 - prevent class of 0
2018-06-14 13:49:16 -04:00
Matthew Brown
dc02ca8a7a
Fix - #816 - check we’re not just replacing a key with itself
2018-06-13 08:38:07 -04:00
Matt Brown
45a94af015
Fix #814 - remove literal types when removing base key
2018-06-12 11:19:35 -04:00
Matthew Brown
3891b08fc2
Fix #812 - deal with errant colon without crashing
2018-06-12 09:11:13 -04:00
Matt Brown
54893fdd55
Fix #808 - detect badly-placed ampersand early
2018-06-11 17:23:28 -04:00
Matt Brown
6542a0a784
Fix #810 - convert void array map return to null
2018-06-11 17:00:26 -04:00
Matt Brown
d35a3996fa
Fix #811 - improve handling of closure vars
2018-06-11 16:54:20 -04:00
Matthew Brown
26fa003fe2
Revert "Convert mixed return types to empty string for compactness"
...
This reverts commit 94ecbc113a
to maintain compatibility with Phan cc @TysonAndre
2018-06-10 15:41:04 -04:00
Matthew Brown
58f16f0d58
Add changes from Phan
2018-06-10 11:31:59 -04:00
Matthew Brown
94ecbc113a
Convert mixed return types to empty string for compactness
2018-06-10 11:30:31 -04:00
Matthew Brown
04758a48c6
Remove never-used function
2018-06-10 10:49:51 -04:00
Matthew Brown
3a2fa99969
Improve coverage of Reconciler and fix issues with float type comparison
2018-06-10 10:48:19 -04:00
Matthew Brown
82715a03ea
Improve test coverage of PropertyAssignmentChecker
2018-06-10 10:02:46 -04:00
Matthew Brown
d47980df13
Fix #416 - make sure trait methods are treated better by dead code detection
2018-06-09 23:10:42 -04:00
Matthew Brown
04cc920101
Fix #378 - improve handling of InvalidScope
2018-06-09 11:50:17 -04:00
Matthew Brown
eae563e9e4
Fix space after function
2018-06-09 10:51:02 -04:00
Matthew Brown
7a02d300d6
Fix closure return type
2018-06-09 10:23:04 -04:00
Matthew Brown
6d4d0cf825
Fix #794 - use template types to restrict input
2018-06-09 10:14:18 -04:00
Matthew Brown
3a3c10d044
Improve handling of ? before type
2018-06-08 23:54:07 -04:00
Matthew Brown
068dc50b21
Fix #792 - allow docblock array form of variadic arg
2018-06-08 21:18:49 -04:00
Matthew Brown
a2b1838e23
Fix #803 - trait methods are evaluated correctly now
2018-06-08 20:06:05 -04:00
Matt Brown
29a971d40e
Fix #793 - make sure in_array informs literal types
2018-06-08 13:53:42 -04:00
Matt Brown
091fa53c72
Fix #798 - update magic property handling so it corresponds to PHP behaviour
2018-06-08 11:08:57 -04:00
Matthew Brown
dfc32216b3
Fix #800 - treat array access offsets as mixed for reconciliation purposes
2018-06-08 09:31:21 -04:00
Matthew Brown
c1586ee347
Remove union types in magic methods for now
2018-06-07 19:56:28 -04:00
Matt Brown
6873e60847
Optimise flow of if evaluation
2018-06-07 15:04:22 -04:00
Matt Brown
5819ba2b67
Fix #801 - bust assertions on assignment in || op
2018-06-07 15:04:22 -04:00
Matt Brown
f030f4f40d
Allow docblock types to be merged with param default ones
2018-06-07 12:23:21 -04:00
Matthew Brown
fb3bc2661e
Fix #797 - check backup included file for defined function
2018-06-06 21:47:26 -04:00
Matt Brown
7c2ec06de8
Fix #795 - don’t use colons in generated anonymous class name
2018-06-06 15:32:03 -04:00
Matthew Brown
ea4dc9f2b8
Improve simplexml function inference
2018-06-05 23:42:02 -04:00
Matthew Brown
952bc9bdfd
Fix #84 - add pattern matching for files as well as directories
2018-06-05 20:15:18 -04:00
Matt Brown
51e7042022
Fix #789 - allow union types in @method params
2018-06-05 17:59:32 -04:00
Matt Brown
e53783f8f4
Add an option to hide code snippets
2018-06-04 10:19:20 -04:00
Matthew Brown
53bfafa02a
Make sure that ignoreFiles files never appear in errors
2018-06-04 00:15:28 -04:00
Matthew Brown
5ea7196d3f
Skip bad param type in @method docblock
2018-06-03 22:13:19 -04:00
Matthew Brown
a20bdaef45
Fix issue evaluating negated assertion
2018-06-03 20:24:23 -04:00
Matthew Brown
b5cb2b34a2
Fix #380 - don’t complain about legitimate (if archaic) self calls
2018-06-03 19:11:07 -04:00
Matthew Brown
e18b3699a6
Fix return type
2018-06-03 18:34:25 -04:00
Matthew Brown
6bfde90db4
Improve Psalm type inference summary to include required files
2018-06-03 18:31:43 -04:00
Matthew Brown
b47d732993
Fix to support PHP Parser 4.0.2
2018-06-03 10:05:50 -04:00
Matthew Brown
8107587929
Always hoist constants if in config
2018-06-03 09:13:14 -04:00
Matt Brown
033bf3db16
Add IssetTest
2018-06-01 11:16:42 -04:00
Matt Brown
9bbe437f22
Fix issue with initially undefined variable in isset
2018-06-01 10:52:26 -04:00
Matthew Brown
55fdef250e
Add config to allow hoisting constants to the top of a file
2018-06-01 09:07:22 -04:00
Matthew Brown
ccc0c3f7d8
Fix negation of @psalm-assert-if-true/false
2018-05-31 22:46:22 -04:00
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
Jay Klehr
cabc818e1a
Fixing mysqli callmap ( #784 )
2018-05-31 09:50: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
Matt Brown
14f3f7a998
Fix #763 - always force rescanning of files if issues were found first time around
2018-05-29 10:13:26 -04:00
Matt Brown
d55afc1fb1
Fix #779 - allow docblock to take on nullablility of typehint
2018-05-29 09:44:38 -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
Matt Brown
772fd496b7
Fix issue with array_key_exists not having an effect
2018-05-24 12:23:50 -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
9de5e1406d
Fix class casing issue when scanning ::class constants
2018-05-22 11:59:57 -04:00
Matt Brown
056194bde5
Fix issues that cause exceptions
2018-05-21 18:33:39 -04:00
Matt Brown
5007a3a3b6
Only scan user-defined constructors for property initialisations
2018-05-21 13:06:11 -04:00
Matt Brown
a30d229040
Fix issue with slashes after ? in type
2018-05-21 12:55:44 -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
38252689b9
Remove typehints
2018-05-20 17:31:04 -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
Bruce Weirdan
be522c623e
Updated MessageFormatter (ICU) signatures ( #759 )
...
Manual update of MessageFormatter methods signatures, based on PHP.net
docs
2018-05-20 11:33:16 -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
Matt Brown
c6aa396dea
Fix #741 - make sure closures are cloned properly
2018-05-18 17:47:40 -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
Jay Klehr
80b6347a72
Updating openssl callmaps to reflect php documentation
2018-05-18 10:46:38 -04:00
Matthew Brown
ec381308dd
Fix #753 - prevent some strings from becoming literals
2018-05-17 01:46:01 -04:00
Matt Brown
3263b64301
Filter conditions better when encountering parent instanceof
2018-05-16 11:47:39 -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
Matt Brown
02d65b617b
Allow weak comparison between floats and ints
2018-05-14 12:02:06 -04:00
Matt Brown
58c68c355e
Allow weak equality between scalar types
2018-05-14 10:36:41 -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
5c1726cece
Fix return type of ReflectionParameter::getDefaultValue
...
Fixes #739
2018-05-13 19:35:57 -04:00
Matthew Brown
c00fdd0fe3
Add better type inference for next and prev
...
Fixes #738
2018-05-13 19:20:05 -04:00
Matthew Brown
d46997b196
Make sure weak equality clauses don’t generate ParadoxicalCondition
2018-05-13 01:27:45 -04:00
Matthew Brown
9f28be415a
Fix reconciliation of ored types
2018-05-13 00:54:12 -04:00
Matthew Brown
69338abf7c
Allow rough equality assertions to be negated too
2018-05-12 20:08:22 -04:00
Matthew Brown
8e90334428
Allow assignment to numeric string via assertion
2018-05-12 19:56:17 -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
071558ec83
Fix #733 - DomNodeList implements ArrayAccess
2018-05-11 23:21:53 -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
Matt Brown
64b8603ee4
Remove further ??
2018-05-11 17:57:18 -04:00
Matt Brown
87a11bd86a
Remove PHP7-only language
2018-05-11 17:34:10 -04:00
Matt Brown
e9411eec76
Fix #730 - improve handling of templated closure params
2018-05-11 16:17:21 -04:00
Matt Brown
e3b6b9c273
Fix #724 - ignore any return types after return/throw/break/continue
2018-05-11 11:26:32 -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
31121cfc6d
Fix substr return in Union::__toString
2018-05-09 01:13:25 -04:00
Jay Klehr
242f46ac35
Updating stubs for several string functions ( #727 )
2018-05-09 00:40:06 -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
3380de16a2
Fix #709 - detect intersection template matches a bit better
2018-05-08 23:17:11 -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
Jay Klehr
21c1f54af2
Updating zlib function stubs to match php.net docs ( #725 )
2018-05-08 22:14:11 -04:00
Matthew Brown
bfa21e1108
Fix #721 by allowing @property annotations to be inheritable
2018-05-08 22:13:26 -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
Bruce Weirdan
2afe364ee0
simplexml callmap update ( #723 )
...
* simplexml callmap update
fixes vimeo/psalm#722 and includes a number of manual updates to
simplexml function/method signatures (based on php.net docs)
* minor fixes
- s/qname/name/
- explicit void return type for `SimpleXMLElement::addAttribute()`
2018-05-08 13:50:32 -04:00
Matt Brown
0eda76b742
Fix strict reconciliation of bools
2018-05-07 18:09:40 -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
2299cecd23
Fix strict isset reconciliation
2018-05-07 17:15:27 -04:00
Matt Brown
6460d907f9
Improve array handling when offsets hard to define
2018-05-07 16:22:04 -04:00
Matt Brown
091d13b73f
Fix reconciliation of non-isset array vars
2018-05-07 16:00:56 -04:00
Matt Brown
c6ed1b0458
Fix bad offset
2018-05-07 15:47: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