1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-17 03:47:04 +01:00
Commit Graph

1518 Commits

Author SHA1 Message Date
Matt Brown
47255fb19b Fix array key check after direct assignment 2018-04-09 18:02:45 -04:00
Matt Brown
af63d28b56 isset always returns bool 2018-04-09 10:20:18 -04:00
Matt Brown
cf6326f5e6 Fix #658 - empty always returns bool 2018-04-09 10:19:23 -04:00
Matthew Brown
7e3a1ec9c3 Add support for checking callable/closure param types
Fixes #580
2018-04-08 12:03:35 -04:00
Matthew Brown
3fe9a0606e Fix #654 - warn about MixedArgument when inferredType property does not exist
And handle str_replace more leniently when args unknown
2018-04-07 15:16:46 -04:00
Matthew Brown
0f0f405b9f Allow mixed property assignment when the user wants it
Fixes #652
2018-04-07 12:13:30 -04:00
Matthew Brown
3771ea206c Fix #648 - stop scanning when encountering a duplicate class 2018-04-07 11:38:41 -04:00
Matt Brown
60c6bb4021 Fix #650 - be more judicious about inserting mixed into places 2018-04-06 18:28:22 -04:00
Matt Brown
c932ed7764 Fix #651 - allow Psalm to understand assertions on properties of array objects 2018-04-06 16:23:10 -04:00
Matt Brown
6abbc23947 Catch type exception when fixing local type 2018-04-05 17:18:49 -04:00
Matt Brown
e97750c761 Check for empty values properly
Ref #647
2018-04-05 14:28:33 -04:00
Matt Brown
4927dfd337 Fix issue with InvalidArrayOffset from falsable 2018-04-05 13:57:01 -04:00
Matt Brown
24f307d568 Fix #645 - add isa- prefix for strings as well as class constants 2018-04-05 12:03:36 -04:00
Matt Brown
1282f74931 Allow coercion from generic array to objectlike with possible keys 2018-04-04 18:01:53 -04:00
Matthew Brown
03b3a764e3 Fix #641 - allow is_a to operate on strings as well 2018-04-03 23:14:23 -04:00
Matthew Brown
4552e69ef2 Allow classes to be instantiated by their name only
Ref #641
2018-04-03 22:20:00 -04:00
Matthew Brown
1395299e28 Fix #637 - allow int|string array key types to be compared to mixed 2018-04-02 22:40:29 -04:00
Matthew Brown
4ff7db09f9 Fix var_export return type
Fixes #636
2018-04-02 22:19:58 -04:00
Matthew Brown
ef37f0cfe8 Fix #626 - check __invoke methods 2018-03-31 18:57:13 -04:00
Matthew Brown
75e59f29ea Check as many autoloaded files as possible
and ignore reflected function docblocks - fixes #629
2018-03-30 20:03:56 -04:00
Matthew Brown
6a6d6465f5 Fix #619 - don’t use capitalised letters to discriminate classes 2018-03-30 19:04:21 -04:00
Matthew Brown
c8c216edb2 Fix #610 - add slightly hacky check for multiple callmap options 2018-03-30 18:51:59 -04:00
Matthew Brown
2a544c3076 Fix #560 - ignore @param $var annotations 2018-03-30 17:46:12 -04:00
Matt Brown
fd9e783a37 Emit InvalidDocblock for bad static keyword in @var
Ref #623
2018-03-27 11:34:48 -04:00
Matthew Brown
44cccb5b3d Fix build 2018-03-27 01:05:11 -04:00
Matthew Brown
fb802540d6 Fix variadic format cc @TysonAndre and allow callable param types
Ref #580
2018-03-27 00:12:41 -04:00
Matthew Brown
58115599a1 Add support for callable(...) syntax
Ref #580
2018-03-26 22:13:10 -04:00
Matthew Brown
871a91c850 Add debug-by-line option 2018-03-26 09:08:55 -04:00
Matt Brown
f5ef864168 Improve checks to prevent breaking existing typehints when running psalter 2018-03-23 16:34:45 -04:00
Matthew Brown
7637eb5075 Allow possibly undefined object-like vars to not cause problems 2018-03-23 01:13:46 -04:00
Matthew Brown
5ff6f27178 Fix #615 - numeric-string is always still a string 2018-03-22 21:48:26 -04:00
Matt Brown
cc3aafe4c4 Improve intersection type parsing 2018-03-22 17:55:36 -04:00
Matthew Brown
ccbe9980f5 Fix issue with nested trait methods 2018-03-21 17:39:01 -04:00
Matthew Brown
49c4dd8a5d Fix trait method aliasing 2018-03-21 16:55:31 -04:00
Matthew Brown
c2002d0250 Add intersection iteration test 2018-03-21 12:21:46 -04:00
Matthew Brown
1f57876e48 Allow extract array to be passed by ref 2018-03-21 11:14:05 -04:00
Matthew Brown
bc0c4322d5 Allow object-like with all optional vars to be compared to empty array 2018-03-21 10:46:21 -04:00
Matthew Brown
452fd2e7c9 Make UndefinedClass an explicit class-related issue 2018-03-21 10:17:57 -04:00
Matthew Brown
49820b06dd Prevent variadic args disrupting required closure param count 2018-03-21 09:04:07 -04:00
Matthew Brown
9404de699d Allow list vars to have array keys 2018-03-21 08:48:30 -04:00
Matthew Brown
be72423980 Check for magic __call when analysing callables 2018-03-21 00:13:57 -04:00
Matthew Brown
7a5d4b8516 Fix the right thing 2018-03-20 23:55:26 -04:00
Matthew Brown
75e76eb327 Perform more granular scan for PossiblyInvalidPropertyAssignmentValue 2018-03-20 23:44:26 -04:00
Matthew Brown
f47012823e Fix incorrect issue type emitted for static properties 2018-03-20 23:19:26 -04:00
Matthew Brown
b634e1a1b7 Add more refined treatment of InvalidIterator 2018-03-20 22:59:22 -04:00
Matthew Brown
5384f193d1 Allow class and method issues to be suppressed by their identifiers
Ref #603
2018-03-20 22:36:03 -04:00
Matthew Brown
837f5d7096 Fix #594 - support intersection types (and catch errors) 2018-03-20 20:56:33 -04:00
Matt Brown
24490aac0e Fix #609 - fix callable coercion in reconciliation step 2018-03-20 13:24:16 -04:00
Matthew Brown
d17058e7d5 Fix #608 - only check callable type if string/array is not also there 2018-03-20 08:58:05 -04:00
Matthew Brown
8dcb878af4 Fix #606 - fatal error when evaluating array_key_exists 2018-03-19 19:14:55 -04:00
Matthew Brown
8ce46aabd2 Allow intersection types in comments 2018-03-18 20:46:45 -04:00
Matthew Brown
8b102d891c Allow intersection types in callable args 2018-03-18 20:29:41 -04:00
Matthew Brown
0defe84e01 Allow use of $argv and $argc in function use statements 2018-03-18 17:11:14 -04:00
Matthew Brown
80cf80dbda Reduce number of InvalidOperand issues further 2018-03-18 16:58:54 -04:00
Matthew Brown
e0bdfeb625 Fix erroneous message for invalid right operands 2018-03-18 16:46:26 -04:00
Matthew Brown
d7a585160f Add more granular error messages for invalid operands 2018-03-18 16:39:34 -04:00
Matthew Brown
33be97b1f8 Check for to-string casts in strict operands mode 2018-03-18 14:42:23 -04:00
Matthew Brown
4b014eaee1 Fix #600 - don’t implicitly convert object name to string 2018-03-18 14:16:47 -04:00
Matthew Brown
025b7049fd Allow $argv/$argc to be accessed from namespace 2018-03-18 10:38:08 -04:00
Matthew Brown
28522c4f94 Fix #588 - allow anonymous classes to call $this functions 2018-03-18 01:07:14 -04:00
Matthew Brown
2e0aded816 Fix issue with empty checks and array_key_exists for property keys 2018-03-17 19:28:01 -04:00
Matthew Brown
b0b3c9287e Fix array_key_exists calls on possibly undefined objectlike 2018-03-17 19:03:46 -04:00
Matthew Brown
e61815bb72 Fix #458 - fully support optional array keys 2018-03-17 18:05:50 -04:00
Matthew Brown
4175d1a887 Add PossiblyUndefinedVariable warning when using possibly undefined array key 2018-03-17 17:35:36 -04:00
Matthew Brown
61af2a924c Fix #575 - generated possibly-undefined keys when scanning objectlike return types
Ref #458
2018-03-17 16:53:11 -04:00
Matthew Brown
eb3750d8f3 Remove unnecessary @var annotations 2018-03-17 00:19:55 -04:00
Matt Brown
f806e16c10 Fix #516 - never show issues when finding references 2018-03-16 11:15:07 -04:00
Matt Brown
e5e0c56abc Don’t remove clauses on mixed, just substitute for wedges 2018-03-15 16:40:22 -04:00
Matt Brown
651b375c62 Fix #579 - improve checks for meta-type negation 2018-03-15 14:25:04 -04:00
Matthew Brown
d0fc48cfaf Remove unnecessary whitespace 2018-03-15 00:37:08 -04:00
Matt Brown
822d0a116e Reflect all numeric types passed to abs
Fixes #576
2018-03-14 18:05:36 -04:00
Matt Brown
d9ab5e62d6 Prevent unnecessary warnings when checking trait-required methods 2018-03-14 10:51:13 -04:00
Matt Brown
0bd229a86f Add better checks for trait-related fatal errors 2018-03-13 18:12:05 -04:00
Matt Brown
0637e02a6d Fix build bug 2018-03-13 13:50:53 -04:00
Matt Brown
52b6a5cbde Fix #571 - fix buggy handling of packed vars 2018-03-13 13:50:41 -04:00
Matt Brown
ef35cfc6fe Fix #566 - check for abstract methods inheriting from non-abstract ones 2018-03-13 12:52:00 -04:00
Matthew Brown
5cd8b3cccd Don’t ignore @function calls
Fixes #570
2018-03-12 23:48:10 -04:00
Matthew Brown
73fadab0b5 Make Phar more robust to object namespace changes 2018-03-12 00:01:52 -04:00
Matt Brown
b54fb06552 Handle variable paths in a less naive fashion
Fixes #564
2018-03-08 15:57:46 -05:00
Matt Brown
19ee843d6c Emit InvalidOperand if both sides are not numeric 2018-03-08 14:30:40 -05:00
Matt Brown
56bdb924f5 Fix #563 - improve error message and ignore falsable issues for strtotime 2018-03-08 14:04:00 -05:00
Matt Brown
4873228e52 Fix #561 - add all the do-defined vars before checking loop 2018-03-08 11:17:27 -05:00
Matt Brown
cd521e7ba5 Also flesh out object like array types 2018-03-07 13:54:46 -05:00
Matt Brown
4bf652863b Also check for non-false returns on LessSpecificReturnType 2018-03-07 11:16:56 -05:00
Matt Brown
4248cacbaf Flesh out template type before replacing 2018-03-06 14:23:41 -05:00
Matt Brown
6d767de043 Ignore nullable class strings where appropriate 2018-03-06 14:11:32 -05:00
Matt Brown
fac5554e13 Fix errors around static class constants in template vars 2018-03-06 13:59:59 -05:00
Matt Brown
b664c85642 Add new issue conditional on config flag 2018-03-06 12:19:50 -05:00
Matt Brown
357ad1aa82 Add config flags to allow stricter class invocation checks 2018-03-06 11:20:59 -05:00
Matt Brown
57bbdc8034 Replace classlike name with more accurate context self 2018-03-05 18:05:12 -05:00
Matt Brown
7c5986de01 Add return type checks for missing classes 2018-03-05 17:46:13 -05:00
Matt Brown
aff689deea Add support for __CLASS__ in template types 2018-03-05 17:36:08 -05:00
Matt Brown
57c2adb923 Fix #558 - add extra tests around functionality 2018-03-05 17:10:52 -05:00
Matt Brown
850998ed1a Add class-string type for enforcing use of ::class constants 2018-03-05 16:06:06 -05:00
Matt Brown
d8825701f5 Fix #556 - closure params with defaults can still accept extra 2018-03-05 10:29:19 -05:00
Matthew Brown
a0be2e390a Fix case of mapping function before analysis 2018-03-05 09:05:38 -05:00
Matthew Brown
67cad2063d Fix #555 - fix function name mapping class 2018-03-05 09:01:24 -05:00
Matthew Brown
806b032b13 Downgrade UndefinedMethod to PossiblyUndefinedMethod issue when one type has __call defined 2018-03-04 13:23:40 -05:00
Matthew Brown
a0ce8791d3 Detect fatal issues where property access is overridden
Fixes #547
2018-03-04 12:24:50 -05:00
Matthew Brown
3b48f43fdc Throw exception if function doesn’t exist 2018-03-03 16:52:48 -05:00
Matthew Brown
ecef628e21 Prevent iterating over undefined class 2018-03-03 16:52:04 -05:00
Matthew Brown
9fe4a97851 Fix issue with do 2018-03-03 13:21:52 -05:00
Matthew Brown
e419a8fe01 Exit early when there’s an issue in block-level elements
Fixes #550
2018-03-03 13:20:41 -05:00
Matt Brown
276c1a785d Allow underscores to be ignored by UnusedParam checks 2018-03-02 11:32:34 -05:00
Matthew Brown
d94abc42e8 Fix array location 2018-03-02 08:38:16 -05:00
Matthew Brown
ee6a9b98fb Allow arrays to be called (ugh) 2018-03-02 00:49:53 -05:00
Matthew Brown
154341577d Give expected/actual argument counts 2018-03-02 00:07:19 -05:00
Matthew Brown
799e81bc96 Improve callable issue message 2018-03-02 00:03:07 -05:00
Matthew Brown
6fbd8753d5 Fix $function_id when checking for method existence 2018-03-01 23:52:11 -05:00
Matthew Brown
cc19f50c04 Prevent missing classes from confounding callable arg checks 2018-03-01 23:43:52 -05:00
Matthew Brown
6660aa8a00 Fix #548 - check array_map/array_filter args for param matches 2018-03-01 23:33:21 -05:00
Matt Brown
80864b1ce8 Don’t be concerned about unused params named $_
Fixes #540
2018-02-27 11:39:26 -05:00
Matt Brown
1f358e36ef Fix #544 - remove possibly assigned try vars from catch initialisations 2018-02-27 11:25:27 -05:00
Matthew Brown
115e647c3c Fix #543 - register static vars properly so their references can be caught 2018-02-26 19:32:26 -05:00
Matt Brown
30c6aa5c68 Add missing spaces 2018-02-26 11:09:17 -05:00
Matt Brown
93b714d7c8 Fix #541 - make array_map on object-like more accurate 2018-02-26 11:01:30 -05:00
Matt Brown
9d165bee7b Fix generic return type for array_map
Ref #541
2018-02-26 10:39:48 -05:00
Matthew Brown
47cb74ddd1 Fix issue where namespaced function could be treated as root 2018-02-25 11:13:00 -05:00
Matthew Brown
956972b4a4 Fix #539 - evaluate global variable usage 2018-02-25 10:43:54 -05:00
Matt Brown
ad3fe0974f Fix indentation 2018-02-23 15:41:07 -05:00
Matt Brown
441506ad6f Fix #216 - scan assert* functions for assertions, then apply to current context 2018-02-23 15:39:33 -05:00
Matt Brown
25400e8010 Simplify logic to avoid Psalm bug 2018-02-22 11:57:15 -05:00
Matt Brown
1f7d95dde0 Add better typing rules for generic objects 2018-02-22 11:20:03 -05:00
Matt Brown
09d708981a Add mixed checks to property __set calls 2018-02-21 19:34:21 -05:00
Matt Brown
5471b89391 Make array coercion an error 2018-02-21 18:59:31 -05:00
Matt Brown
a81c73301b Warn early if the file being analysed has not been properly scanned 2018-02-21 13:54:11 -05:00
Matt Brown
316dd78e6a Fix #509 - don’t complain about a missing param type when system parent has one 2018-02-21 11:57:52 -05:00
Matt Brown
e04c4f866c Fix #524 - prevent fatal error when checking stubbed function from namespace 2018-02-21 11:32:52 -05:00
Matthew Brown
d10212b393 Fix perpetual diff builds 2018-02-19 23:36:36 -05:00
Tyson Andre
cdcec69536 Support the pylint output format
This is a compact output format that is easy to write scripts that parse.
(And errors fit on a single line)

- E.g. jenkins violation plugin works reliably with pylint.

The multi-line details are deliberately omitted.
An application can output 'console' to stdout and to
a pylint file at the same time.

Files with the extension .pylint will use this format.

Document the emacs and pylint output formats in `psalm --help`

An optional followup task would be to create unique issue codes,
I don't have any use cases for that.
2018-02-19 22:35:48 -05:00
Tyson Andre
7aeacebba4 Fix possible typos in comments and issue messages 2018-02-19 15:35:13 -05:00
Matthew Brown
81fd016120 Fix #193 - allow caching of storages 2018-02-19 00:27:39 -05:00
Tyson Andre
aea3779c96 Fix unused imports in psalm, wrong param order doc comments (#523)
(Some of the imports appear as strings elsewhere in the same file)
2018-02-18 17:55:11 -05:00
Matthew Brown
59dc239c89 Fix #522 - prevent interface instantiation 2018-02-17 18:53:02 -05:00
Matthew Brown
108ca54867 Fix #516 - make sure --find-references-to doesn’t output missing references 2018-02-17 17:45:30 -05:00
Matthew Brown
a0e88cb16f Fix #518 - improve dead code detection to cover variable method calls 2018-02-17 17:23:57 -05:00
Matthew Brown
b041797cd0 Fix #519 - warn about variable calls on non-objects 2018-02-17 17:16:22 -05:00
Matthew Brown
af1155239e Fix bug when assigning nested arrays with variable offsets 2018-02-17 12:32:19 -05:00
Matthew Brown
c87204acbf Don’t check for unused vars when checking for initialiasations
Fixes #517
2018-02-17 12:02:31 -05:00
Matthew Brown
09f86ceee7 Introduce MissingDependency issue, separate from UndefinedClass
Ref #511
2018-02-17 11:36:20 -05:00
Matthew Brown
88ca7d2fa7 Fix #515 - make Psalm aware of variable array keys 2018-02-17 11:24:08 -05:00
Matthew Brown
f56edd3c04 Fix issue found by better analysis 2018-02-17 11:21:45 -05:00
Matthew Brown
7940268a13 Fix #512 - check for undefined constant in param default 2018-02-15 20:27:42 -05:00
Matthew Brown
a6b54a3607 Fix #513 - make sure numeric is treated like a number 2018-02-15 19:50:50 -05:00
Matt Brown
279b0bc16e Fix #511 - check all class references for missing dependencies 2018-02-14 13:34:16 -05:00
Matt Brown
be75c143d4 Fix #510 - check that constructor parent classes and interfaces exist 2018-02-14 11:21:43 -05:00
Matt Brown
d0a2258806 Fix #508 - make sure trait missing property checks happen on correct file 2018-02-12 10:46:45 -05:00
Matthew Brown
affcaebc3d Use classes, not full method ids, for plugin execution 2018-02-11 22:49:19 -05:00
Matthew Brown
f159cd5146 Add declaring/appearing method ids to method check plugin 2018-02-11 21:07:19 -05:00
Matthew Brown
e862e4ddb1 Make all plugin methods static
cc @TysonAndre
2018-02-11 20:56:34 -05:00