1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-14 02:07:37 +01:00
Commit Graph

1327 Commits

Author SHA1 Message Date
Matt Brown
4b573bde1f Fix get_class($e) !== checks 2017-11-06 12:04:38 -05:00
Matt Brown
81493a639e Add more robust property assignment when property not defined 2017-11-03 12:27:01 -04:00
Matthew Brown
a651fad6f0 Fix #263 - add support for @psalm-param and @psalm-var annotations 2017-11-02 21:45:17 -04:00
Matt Brown
b163c296ff Fix templated return types in traits 2017-11-02 15:07:39 -04:00
Matthew Brown
aeb9882281 Add back support for TObject property fetch 2017-10-29 17:44:13 -04:00
Matthew Brown
35e6cf8108 Change MissingInclude to MissingFile 2017-10-29 17:36:02 -04:00
Matthew Brown
afc8cb4068 Check for property fetch mocks 2017-10-29 17:33:26 -04:00
Matthew Brown
b618bd798d Add new issues for missing required files 2017-10-29 14:39:23 -04:00
Matthew Brown
51280c1670 Allow byref args of socket_select to pass through unchanged 2017-10-28 16:26:45 -04:00
Matthew Brown
24980cd7d7 Constrain user-defined functions and methods 2017-10-28 16:05:35 -04:00
Matthew Brown
45df0292b1 Never constrain by-ref array variables 2017-10-28 15:33:29 -04:00
Matthew Brown
bee14d184f Add better check for property 2017-10-28 15:17:32 -04:00
Matthew Brown
02dde911ce Allow DateTimeImmutable::__construct arg to be nullable 2017-10-28 14:53:25 -04:00
Matthew Brown
323da5ce13 Add callmap updates from Phan 2017-10-28 14:02:33 -04:00
Matthew Brown
30acb9e3b7 Improve array function byref understanding by hard-coding rules 2017-10-28 13:56:29 -04:00
Matthew Brown
3f9bd530fd Fix #262 - allow return type of simplexml functions to be false 2017-10-27 20:15:00 -04:00
Matt Brown
8b7d82ddf6 Fix #2 - suppress errors for single lines 2017-10-26 18:19:19 -04:00
Matt Brown
d06e844748 Fix issue simplifying callable types 2017-10-26 16:05:57 -04:00
Matt Brown
897c70f8f5 Add back support for switch-getclass ::class constants 2017-10-26 15:07:36 -04:00
Steffen Weber
30465518f7 Fix signature of "gmp_import"
According to the PHP manual, the second and third argument of "gmp_import" have default values and are therefore optional.

https://php.net/gmp_import
2017-10-25 09:12:20 -04:00
Matthew Brown
122b354c4c Ignore get_class and instanceof checks for arbitrary classes in traits 2017-10-24 00:01:43 -04:00
Matthew Brown
467bbba593 Prevent falsy values from leaking into the type system 2017-10-23 22:04:07 -04:00
Matt Brown
0c33db0a3e Fix #258 - tempnam can return false 2017-10-23 13:13:07 -04:00
Matt Brown
c850ef644d Add PossiblyFalseReference and PossiblyFalseArgument issues
Useful for catching error cases
2017-10-23 11:47:00 -04:00
Matthew Brown
a34de5b79c Fix #257 - prevent collapsing callable into string 2017-10-23 08:00:28 -04:00
Matthew Brown
e41e1fa57d Fix #256 - don’t crash when encountering types that match one another 2017-10-23 07:35:28 -04:00
Matthew Brown
2c18686c8c Fix #247 - allow is_callable checks on array 2017-10-22 21:07:06 -04:00
Matthew Brown
a85cd1db8a Add support for get_class and get_type negation checks 2017-10-22 20:17:04 -04:00
Matthew Brown
4d32c72ef8 Fix #250 and fix #255 - handle switch statements like PHP does 2017-10-22 19:53:53 -04:00
Matthew Brown
c7d55bf6de Improve aseertion finding by digging deeper into trivial comparisons 2017-10-22 19:11:28 -04:00
Matthew Brown
f9032924e6 Allow == true comparisons to be evaluated to !falsy 2017-10-22 12:09:22 -04:00
Matthew Brown
f6e01b5925 Change empty type assertions to "falsy"
As empty has a special meaning
2017-10-22 11:57:41 -04:00
Matthew Brown
032cd3b897 Fix #254 - catch parse exception when improving function types 2017-10-22 01:04:35 -04:00
Matt Brown
3c6a8a0b24 Fix #251 - allow Psalm to analyse Wordpress 2017-10-19 19:19:29 -04:00
Matt Brown
c395930a06 Fix missing function issue ref #251 2017-10-19 18:23:18 -04:00
Matt Brown
dbcec1be38 Fix #249 - get out of nested class 2017-10-19 14:40:38 -04:00
Matthew Brown
2e00fb19ee Fix #246 - amend return type for DateTime::createFromFormat 2017-10-16 00:47:48 -04:00
Matthew Brown
295792d550 Fix #235 - add psalm.xml option to support igbinary serializer 2017-10-15 12:38:47 -04:00
Matthew Brown
657d154288 CacheProvider -> ParserCacheProvider 2017-10-15 11:57:44 -04:00
Matthew Brown
00aaa4adaf Fix #242 - add --no-cache option 2017-10-13 21:27:20 -04:00
Matthew Brown
8c4a3734a3 Revert serialisation changes 2017-10-12 20:27:33 -04:00
Matthew Brown
38c8a1d9cf Stop analysing statements if expression has errors 2017-10-12 20:24:22 -04:00
Matthew Brown
b7f6d15a24 Don’t freak out over incorrectly-cased classes 2017-10-12 19:53:12 -04:00
Matthew Brown
d455e24958 Make shallow type comparison case insensitive ref #240 2017-10-12 19:46:00 -04:00
Matt Brown
024bcbc371 Fix #239 - warn about bad brackets 2017-10-12 14:02:06 -04:00
Bruce Weirdan
ed3e429d2c s/'mixed'/''/g 2017-10-12 09:21:49 -04:00
Bruce Weirdan
52962db24c Adjusted Closure methods signatures
This fixes the following false-positive:
```php
function a(): bool {
  $a = function(): bool { return true; }
  return $a->call(new stdClass);
}
```
where psalm previously complained about (wrongly) inferred type to be
Closure
2017-10-12 09:21:49 -04:00
Matthew Brown
1b7a5c2944 Fix #236 - incorrect operand issue text 2017-10-12 08:51:57 -04:00
Bruce Weirdan
f080e32ef0 Corrected case of Traversable typehints
Affected functions/methods:
* `iterator_apply()`
* `iterator_count()`
* `IteratorIterator::__construct()`
* `iterator_to_array()`

This fixes the following false-positive:
```php
class Iter extends IteratorIterator {
    public function __construct(Traversable $a) {
	parent::__construct($a);
    }
}
```
where psalm previously wanted `parent::__construct()` argument to be
`traversable` (all-lowercase).
2017-10-12 08:49:24 -04:00
Matthew Brown
deb489e82d Fix #232 - discard clauses when evaluating catch block 2017-10-10 23:09:19 -04:00
Matthew Brown
862d22e83c Fix #230 - invalidate root vars on $arr[]= assignment 2017-10-10 23:01:52 -04:00
Matthew Brown
b43c2d5f0c Fix #231 - add special case for === false checks 2017-10-10 22:36:33 -04:00
Matthew Brown
7ebffbcd2d Bump parser version 2017-10-07 15:06:47 -04:00
Matthew Brown
beea51d7bf Fix property check 2017-10-07 15:05:05 -04:00
Matthew Brown
cbc889a498 Add cache-clearing mechanism 2017-10-07 14:41:16 -04:00
Matthew Brown
e47198b326 Add workaround for Psalm checking itself on PHP 5.6 2017-10-07 11:38:51 -04:00
Matthew Brown
6ab693ceeb Add missing class 2017-10-07 11:31:18 -04:00
Matthew Brown
9774131876 Fix #224 - explicit string casts fail when no __toString present 2017-10-07 11:27:54 -04:00
Matthew Brown
483b4c75f3 Fix #223 - array_map with too few args should have issue 2017-10-07 10:33:19 -04:00
Matthew Brown
6b4bd47ddb Fix #181 and #225 - resolve problems with self in comments/return statements 2017-10-07 10:22:52 -04:00
Matthew Brown
1cc13bdeeb Prevent TNamedObject from having a leading slash 2017-10-06 23:35:16 -04:00
MacFJA
a38c36c597 Always generate report files, even if no errors and warnings 2017-10-02 07:38:22 -04:00
Steffen Weber
4145119268 Fix case of ZipArchive properties
The properties "numFiles" and "statusSys" use camelCase.

https://secure.php.net/manual/en/class.ziparchive.php
2017-09-26 10:38:06 -04:00
Matthew Brown
5bd6228708 Fix #220 - don’t worry about parent property access 2017-09-24 08:17:27 -04:00
Matt Brown
ee655e6f33 Fix #218 - strings passed to format always return string 2017-09-22 10:18:44 -04:00
Bruce Weirdan
ed0e9702ae Adjusted signatures of DateTime and friends
* __wakeup is void -> void, see http://php.net/manual/en/language.oop5.magic.php#object.wakeup
* DateTime::__construct() does not accept null as time
* DateTimeZone::getLocation() has no last $object parameter
* ditto for DateTimeZone::getName()
* ditto for DateTimeZone::getTransitions()
2017-09-22 10:06:24 -04:00
Matt Brown
1012c23ff5 Fix assertion checks 2017-09-21 16:31:19 -04:00
Matt Brown
d949165eb6 Fix #217 - bad param count for DateTimeImmutable::getTimezone 2017-09-21 15:37:05 -04:00
Matt Brown
3bc497b18e Fix #217 - bad param count for DateTimeImmutable::getTimezone 2017-09-21 15:36:26 -04:00
Matt Brown
6f911c7386 Emit more specific operand issues 2017-09-20 11:22:17 -04:00
Matthew Brown
e42e590442 Add more descriptive exception messages 2017-09-20 08:43:54 -04:00
Matthew Brown
1a9592fc62 Fix #215 where ReflectionMethod implementing class is not a parent class or parent interface 2017-09-19 23:35:37 -04:00
François Kooman
eb79cb7172 fix running Psalm on itself due to its use of json_encode 2017-09-18 16:14:01 -04:00
François Kooman
8e35a72cc3 fix json_encode return values
`json_encode` can also return `false`
2017-09-18 16:14:01 -04:00
Matt Brown
d380bf3f19 Fix #209 - fix issue with file load order results change 2017-09-18 16:10:08 -04:00
Matthew Brown
e84586cfaa Fix return type space issue 2017-09-16 15:08:11 -04:00
Matthew Brown
7c261d7d1f Add return after every special type 2017-09-16 15:00:50 -04:00
Matthew Brown
391696bc83 Use a blacklist, not a whitelist 2017-09-16 13:28:33 -04:00
Matthew Brown
3a8efec728 Add error for pass by reference 2017-09-16 13:16:21 -04:00
Matthew Brown
fc6b663c8a Only write files if they’re changed 2017-09-16 12:52:46 -04:00
Matthew Brown
9a3cb742cb Refactor docblock manipulation and add tests for it 2017-09-16 12:45:20 -04:00
Matthew Brown
995e92a8c3 Remove empty if block 2017-09-14 00:36:38 -04:00
Matthew Brown
2a4a6fc490 Exit early if checking iterable for methods 2017-09-14 00:32:14 -04:00
Matthew Brown
313e1c383c Fix edge-case issue with abstract class not fully implementing interface 2017-09-13 23:57:11 -04:00
Matt Brown
5b3531b5a5 Fix null coalescing on nullable output 2017-09-13 14:35:42 -04:00
Matt Brown
eee8442af6 Fix #199 - allow classes to suppress PropertyNotSetInConstructor warnings 2017-09-13 11:32:13 -04:00
Matt Brown
439a1ddc97 Exit early if a bad class is detected 2017-09-11 11:58:11 -04:00
Matt Brown
d1807cfb95 Improve checks for switch types 2017-09-11 11:58:11 -04:00
François Kooman
8a28ab4b26 Fix some cURL function return values (#208)
At least the functions referenced here can also return boolean
`false` according to the PHP manual. Add this information to the
CallMap file.
2017-09-10 21:49:51 -04:00
MacFJA
c4ce8bede9 Add XML as possible output format + add report generation (#206)
* Add XML as possible output format + add report generation

* Add missing xml root node

* Change XML generator (previous one don't escape '<' and '>')

* Change option (only one option) + unit test
2017-09-08 11:18:48 -04:00
Matthew Brown
e89a2929d5 Infer types from numeric operations 2017-09-06 21:44:26 -04:00
Matthew Brown
9f9e8a1b30 Improve API for inference 2017-09-03 20:52:54 -04:00
Matthew Brown
11aa3558b7 Make sure encapsulated strings can also coerce param types 2017-09-02 19:48:59 -04:00
Matthew Brown
a0c27cee4f Allow param types to be inferred from presence of concat ops 2017-09-02 19:23:00 -04:00
Matthew Brown
a725009181 Only say we could not infer param type if we’re actively looking 2017-09-02 18:26:19 -04:00
Matthew Brown
6531e3bfb8 Throw exception if impossible state is reached 2017-09-02 18:22:44 -04:00
Matthew Brown
73694ab04e Suggest types when complaining of untype params
Ref #204
2017-09-02 18:15:52 -04:00
Matthew Brown
8aabcbce35 Introduce UntypedParam warnings when functions are missing param types 2017-09-02 11:18:56 -04:00
Matt Brown
1cc63fe718 Ignore leading slash in array_map methods 2017-08-30 13:45:41 -04:00
Matthew Brown
622217b708 Fix #205 - add file references at analysis stage too 2017-08-22 12:38:38 -04:00