1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-03 10:07:52 +01:00
Commit Graph

1026 Commits

Author SHA1 Message Date
Matt Brown
5a2f6ff0e0 Fix #624 - change some innaccurate issue names 2018-04-17 14:07:02 -04:00
Matt Brown
6afaf5aae9 Make Psalm compatible with PHP Parser 4 2018-04-17 13:06:02 -04:00
Matt Brown
df5d369443 Fix #677 - handle get_class checks more accurately 2018-04-17 10:28:49 -04:00
Matt Brown
b28cc19fd2 Fix bitwise operations on strings 2018-04-16 18:19:18 -04:00
Matt Brown
55153f9542 Fix #676 - bitwise operators didn’t have int return type 2018-04-16 16:36:06 -04:00
Matt Brown
3cc549384f Type explode more accurately 2018-04-16 16:03:04 -04:00
Matthew Brown
7345a44494 Fix callable parse issue 2018-04-15 18:16:31 -04:00
Matt Brown
6502eba658 Don’t invalidate object vars after callmap functions 2018-04-13 11:24:59 -04:00
Matt Brown
564cebbaad Fix #669 - improve signatures of mysql 2018-04-13 10:51:18 -04:00
Radosław Kowalewski
15c1a82d8c Few fixes to make tests pass on windows
* changed / to DIRECTORY_SEPARATOR in expected messages
* cahnged most occurences PHP_EOL to "\n" in tests and src
* added output buffering in test to avoid marking test as risky
2018-04-12 22:41:13 -04:00
Matthew Brown
1d6e75b06e Fix #662 - allow callable void return types to be widened 2018-04-11 20:29:16 -04:00
Matt Brown
6426dbbf0e Propagate array key updates after assertions to base array 2018-04-11 14:19:42 -04:00
Matt Brown
fe46e4e63d Make tests a bit more specific 2018-04-10 15:47:04 -04:00
Matt Brown
fe033f1b6c Fix #663 - infer array return types for closures 2018-04-10 13:05:31 -04:00
Matthew Brown
f15c26d7f4 Change how type impossibilities are treated to improve message types 2018-04-10 01:27:26 -04:00
Matthew Brown
5915718013 Fix #660 - always refer closure types 2018-04-09 22:00:36 -04:00
Matt Brown
47255fb19b Fix array key check after direct assignment 2018-04-09 18:02:45 -04:00
Matt Brown
6eabdf326d Fix display of closure objects 2018-04-09 16:45:54 -04:00
Matt Brown
2b9a2d36cf Don’t allow non-existent vars to be overridden 2018-04-09 14:32:22 -04:00
Matt Brown
cf6326f5e6 Fix #658 - empty always returns bool 2018-04-09 10:19:23 -04:00
Matthew Brown
0b95f1017e Fix issues with callmap callable types 2018-04-08 12:57:56 -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
797cab22f8 Fix support for Closure(int):int annotation 2018-04-08 10:02:41 -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
6d572096d6 Prohibit bad characters from types 2018-04-05 14:11:57 -04:00
Matt Brown
4927dfd337 Fix issue with InvalidArrayOffset from falsable 2018-04-05 13:57:01 -04:00
Matt Brown
0b268eb602 Allow scalars to be empty 2018-04-05 12:11:58 -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
Matthew Brown
78d5adb17d Make key work with typed arrays 2018-04-05 00:21:14 -04:00
Matt Brown
1282f74931 Allow coercion from generic array to objectlike with possible keys 2018-04-04 18:01:53 -04:00
Matt Brown
b4fba8f805 Allow capitalised reserved words 2018-04-04 12:39:05 -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
Matt Brown
fef56c7633 Fix #639 - add scalar to psalm-recognised types 2018-04-03 11:24:23 -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
Matt Brown
734b6915db Fix #635 - type combinations should copy over possibly undefined flag 2018-04-02 14:36:33 -04:00
Matthew Brown
faa2d6f2e1 Fix #634 - prevent prefixing objectlike keys with namespaces 2018-04-02 00:39:59 -04:00
Matthew Brown
ef37f0cfe8 Fix #626 - check __invoke methods 2018-03-31 18:57:13 -04:00
Matthew Brown
3a77504730 Add test to find bad behaviour 2018-03-30 19:15:24 -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
Matthew Brown
17b27b31e8 Fix erroneous input/output lines 2018-03-29 10:26:26 -04:00
Matthew Brown
7a0c7f4d1e Improve handling of ||
Ref #630
2018-03-29 02:20:19 -04:00
Matthew Brown
211b87ce8d Add test for empty callable 2018-03-28 10:53:26 -04:00
Matt Brown
3213695c95 Fix off-by-one error
Fixes #625
2018-03-27 14:43:39 -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
3ef7073862 Add callmap updates from Phan 2018-03-27 01:05:37 -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
74aa376ec7 Fix #617 - catch exception on bad square brackets 2018-03-24 21:02:44 -04:00
Matt Brown
f5ef864168 Improve checks to prevent breaking existing typehints when running psalter 2018-03-23 16:34:45 -04:00
Matt Brown
06e850867d Allow combined keys to be possibly undefined 2018-03-23 13:14:00 -04:00
Matthew Brown
a4a618c9e5 Fix rules regarding always-defined object-like properties 2018-03-23 01:36:56 -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
a96ce89e9f Allow arbitrary bracketing of types 2018-03-22 22:28:06 -04:00
Matthew Brown
5ff6f27178 Fix #615 - numeric-string is always still a string 2018-03-22 21:48:26 -04:00
Matthew Brown
c8fe9e89f3 Fix parsing of array{a:int}[]
Fixes #614
2018-03-22 21:21:04 -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
bc0c4322d5 Allow object-like with all optional vars to be compared to empty array 2018-03-21 10:46:21 -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
7a5d4b8516 Fix the right thing 2018-03-20 23:55:26 -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
Matthew Brown
3f90bceabf Use objects for type parsing 2018-03-20 20:26:58 -04:00
Matt Brown
24490aac0e Fix #609 - fix callable coercion in reconciliation step 2018-03-20 13:24:16 -04:00
Matthew Brown
b8a8e9bc5b Add two skipped (bug-identifying) tests 2018-03-20 09:30:37 -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
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
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
6b793db5c6 Allow some intersection types
Fixes #600 Ref #594
2018-03-18 13:57:28 -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
def0d87782 Add test for phpstorm generic property 2018-03-17 15:40:57 -04:00
Matthew Brown
3578c49bf2 Add test for #587 2018-03-17 15:02:25 -04:00
Matthew Brown
10d18481a2 Add syntax support for optional array types
Ref #458
2018-03-16 23:37:10 -04:00
Matt Brown
d6e0708e88 Fix #577 - allow int in second param of strpos 2018-03-15 17:32:03 -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
Matt Brown
a253463ba8 Use strings for numeric string key offsets 2018-03-15 10:16:11 -04:00
Matt Brown
822d0a116e Reflect all numeric types passed to abs
Fixes #576
2018-03-14 18:05:36 -04:00
Matt Brown
92ada48433 Allow the iterable pseudo-type to be treated as array|Traversable
Fixes #574
2018-03-14 17:50:55 -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
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
3059a54768 Fix #569 - fix trait method mapping bug 2018-03-12 23:37:21 -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
Matthew Brown
67312be2a9 Fix #562 - allow if/else blocks to initialise vars 2018-03-08 09:30:31 -05:00
Matt Brown
79c373c121 Add more LessSpecificReturnTypeTests 2018-03-07 13:11:36 -05:00
Matt Brown
692edd44c9 Use properly namespaced generic object 2018-03-07 12:00:33 -05:00
Matt Brown
4bf652863b Also check for non-false returns on LessSpecificReturnType 2018-03-07 11:16:56 -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
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
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
b90a58533b Fix tests and return types 2018-03-03 15:25:35 -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
Matthew Brown
ee6a9b98fb Allow arrays to be called (ugh) 2018-03-02 00:49:53 -05:00
Matthew Brown
54cbee1265 Add TooManyArguments for closure test 2018-03-02 00:12:41 -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
2846e549dd Fix #546 - allow iterable phpstorm generics 2018-03-01 11:19:23 -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
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
2be2769008 Don’t adhere to assert rules with ored truths 2018-02-25 11:30:45 -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
441506ad6f Fix #216 - scan assert* functions for assertions, then apply to current context 2018-02-23 15:39:33 -05:00
Matt Brown
95642aafb4 Fix #339 - when a class is also in the callmap, use the user-defined behaviour 2018-02-22 13:42:34 -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
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
a99e89495b Add end line/column data for LSP support 2018-02-19 18:16:09 -05:00
Matthew Brown
81fd016120 Fix #193 - allow caching of storages 2018-02-19 00:27:39 -05:00
Matthew Brown
59dc239c89 Fix #522 - prevent interface instantiation 2018-02-17 18:53:02 -05:00