1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-14 18:36:58 +01:00
Commit Graph

4526 Commits

Author SHA1 Message Date
orklah
76bb8bc655
Merge pull request #7113 from trowski/first-class-callables
Added support for first-class callables
2021-12-10 22:40:16 +01:00
Aaron Piotrowski
3c5e99ed1e
Revert reorder of getting method return type and checking args
Skipping checking args for first-class callables, but fixes handling of other methods.
2021-12-09 19:02:58 -06:00
orklah
ae765dfba8
Merge pull request #7054 from orklah/6933
fix missing case for displaying varId
2021-12-09 23:54:37 +01:00
Aaron Piotrowski
d5519fc53a
Use $stmt->args directly instead of creating new VariadicPlaceholder 2021-12-09 15:51:48 -06:00
Aaron Piotrowski
1f3a37ff02
Add support for first-class callables 2021-12-09 10:54:49 -06:00
orklah
eefdb95765
Merge pull request #7093 from orklah/7090
don't stop analyzing array, even if we already have a type and we can't create an object like
2021-12-08 22:37:57 +01:00
orklah
604f47d52a
Merge pull request #7106 from orklah/7098
fix reconciliation between positive-int and inferior/superior assertions
2021-12-08 22:29:15 +01:00
Bruce Weirdan
eb2f4dca89
Merge pull request #7103 from AndrolGenhald/feature/3938-decimal-operator-overloads 2021-12-08 23:22:24 +02:00
orklah
edeaada8af simplify reconciliation of literal ints with inferior/superior assertions 2021-12-08 22:13:19 +01:00
orklah
be9037f7b1 fix reconciliation between positive-int and inferior/superior assertions 2021-12-08 21:38:12 +01:00
AndrolGenhald
a89e8ec28c Fix non-empty-literal-string to behave as subtype of non-empty-string (fixes #7095). 2021-12-08 13:38:32 -06:00
AndrolGenhald
ba881c80bf Use maybeAdd instead of accepts. 2021-12-08 12:15:32 -06:00
AndrolGenhald
b29fc6ad3c Allow operator overloading for Decimal extension (fixes #3938). 2021-12-08 10:59:37 -06:00
Matthew Brown
8daf9c42a9 Remove useless chunk of code in ScopeAnalyzer 2021-12-07 23:42:17 -05:00
orklah
c17af4128e don't stop analyzing array, even if we already have a type and we can't create an object like 2021-12-07 19:38:52 +01:00
Bruce Weirdan
2530b33dbd
Merge pull request #7076 from klimick/fix-generic-assertion 2021-12-07 08:08:48 +02:00
orklah
257d237192 ignore ComplexMethod: didn't see any easy refactoring 2021-12-06 20:13:33 +01:00
orklah
75312d93b1 Don't crash when checking purity of __callStatic in a trait 2021-12-06 19:00:37 +01:00
Tomasz Mlynski
348c62db94
Remove unused function reference 2021-12-06 18:25:04 +01:00
Tomasz Mlynski
e4b0b9b305
Remove redundant condition 2021-12-06 18:17:52 +01:00
Tomasz Mlynski
5c73d77f28
Remove unused methods 2021-12-06 18:16:07 +01:00
Tomasz Mlynski
7e54c5172d
Deprecate unused methods 2021-12-06 17:59:43 +01:00
Tomasz Mlynski
0fcad43581 Simplify parser cache files maintenance
Delete files that were not modified during a no-diff run
2021-12-06 17:57:44 +01:00
Tomasz Mlynski
af23619653
Fix ParserCacheProvider::deleteOldParserCaches() 2021-12-06 17:49:40 +01:00
Ricardo Boss
2ec77fe29c Make name property of enum cases return non-empty-strings (vimeo/psalm#6964) 2021-12-06 00:33:57 +01:00
adrew
dee3fc4358 try to fix generic assertions for list and array 2021-12-06 02:25:40 +03:00
rarila
39402c233d
Return type hints (#7065)
Co-authored-by: ralila <>
2021-12-05 19:51:26 +02:00
orklah
f67a0ca143
Merge pull request #7068 from klimick/fix-yield
Detect yield in array expression
2021-12-05 16:25:21 +01:00
Ricardo Boss
8a230110e8 Fix vimeo/psalm#6968 2021-12-05 15:43:38 +01:00
adrew
bc61547bce detect yield in array expression 2021-12-05 15:33:18 +03:00
Bruce Weirdan
e9d9481ea6
Merge pull request #7060 from rarila/codingstyle-convert-fqn 2021-12-05 02:46:03 +02:00
ralila
9902898c4d Remove unnecessary bug circumvention and generate new baseline 2021-12-05 01:15:29 +01:00
ralila
da3a691c36 Import PhpParser\Node\Expr\Closure as ClosureNode 2021-12-05 00:32:38 +01:00
ralila
81c94f12c1 Revert \Composer\Autoload\ClassLoader in other Cli\*.php 2021-12-05 00:30:13 +01:00
ralila
2d199d1f13 Revert \Composer\Autoload\ClassLoader in Cli\Psalm.php 2021-12-04 23:07:54 +01:00
ralila
8fb2e0f885 Handle some partials 2021-12-04 21:55:53 +01:00
Bruce Weirdan
14dcbc908a
Don't output console links in CI env (#7049) 2021-12-04 19:49:24 +02:00
Matthew Brown
1956b85c41
Remove always-false args (#7056) 2021-12-04 10:40:52 -05:00
ralila
f833085a15 Fix fqn usage in php-doc 2021-12-04 03:37:19 +01:00
orklah
2612f5a5f1 fix missing case for displaying varId 2021-12-03 23:46:12 +01:00
ralila
30a65685a2 Import instead of using fqn classes 2021-12-03 21:40:18 +01:00
ralila
7c32325e03 Import instead of using fqn constants 2021-12-03 21:25:22 +01:00
ralila
2a956498bf Import instead of using fqn functions 2021-12-03 21:07:25 +01:00
ralila
711be643c6 Import instead of using fqn exceptions 2021-12-03 20:29:06 +01:00
ralila
245920e53c Import instead of using fqn 2021-12-03 20:11:20 +01:00
orklah
a7e9eea0ca
flag usage of get_class outside class without args (#7043) 2021-12-02 00:38:45 +02:00
Bruce Weirdan
28c4f86993
Merge pull request #7027 from rarila/issue-6914 2021-11-30 23:34:00 +02:00
orklah
2c6ea7c551
Merge pull request #7022 from orklah/7007
remove the remaining dynamic property assignment
2021-11-30 19:41:42 +01:00
ralila
98b0b052ce Remove some now superfluous casts 2021-11-30 05:08:56 +01:00
orklah
466137a4c4
Merge pull request #7025 from orklah/6256
flag DeprecatedProperty on static fetch
2021-11-29 23:46:25 +01:00
orklah
328dcb093b fix variable name 2021-11-29 23:41:47 +01:00
orklah
9de9c12851 flag DeprecatedProperty on static fetch 2021-11-29 23:32:27 +01:00
Dave Liddament
1879713dbb
Add --php-version to CLI help
As documented here: https://psalm.dev/docs/running_psalm/configuration/#phpversion
2021-11-29 20:21:33 +00:00
Matthew Brown
175ba83332
Migrate most IssueBuffer::accepts calls to IssueBuffer::maybeAdd (#7020) 2021-11-29 14:54:17 -05:00
orklah
8ca0fc209a remove the remaining dynamic property assignment 2021-11-29 20:12:59 +01:00
ralila
15eb8127ee Reverse parameter list vor preg_match 2021-11-29 14:23:33 +01:00
Bruce Weirdan
28a75652ac
Merge pull request #6997 from zoonru/list_values_paradox 2021-11-29 00:47:12 +02:00
925df22052
Use simplified, proper logic 2021-11-28 13:42:30 +01:00
orklah
8bc71fcf85
Merge pull request #7013 from orklah/6951
Allow overriding the signature type by a param docblock for promoted properties
2021-11-28 11:50:43 +01:00
orklah
a6e4230d2d Allow overriding the signature type by a param docblock for promoted properties 2021-11-28 11:10:55 +01:00
Bruce Weirdan
806db287d2
Infer ::from() and ::tryFrom() return types on backed enums
Fixes vimeo/psalm#6429
2021-11-28 09:47:01 +02:00
Bruce Weirdan
ac903c5634
Include enum cases in const wildcards
Refs vimeo/psalm#6471
2021-11-28 05:49:39 +02:00
Bruce Weirdan
03aea28c73
Merge pull request #6995 from vimeo/enum-constants 2021-11-27 21:49:13 +02:00
Bruce Weirdan
1797716cf7
Merge pull request #7006 from weirdan/show-php-version 2021-11-27 20:21:20 +02:00
Bruce Weirdan
97445b52f3
Correctly process constant references on enum-valued variables 2021-11-27 04:32:32 +02:00
Bruce Weirdan
d19aad7db1
Display target PHP version
Historically it was often not quite clear to users what PHP version
Psalm assumes, and why. This PR addresses this issue by printing the
version and where we got it from right before scanning the files.
2021-11-27 02:18:09 +02:00
Bruce Weirdan
3441197c60
Merge pull request #7004 from weirdan/drop-unused-property 2021-11-27 01:52:14 +02:00
Bruce Weirdan
2afced3101
Drop unused $fq_classlike_names property 2021-11-27 00:09:58 +02:00
orklah
72de3b66cc
Merge pull request #7003 from rarila/no-phpdoc-return-void
Use return type hints instead of php doc "@return void"
2021-11-26 23:03:28 +01:00
2145a2cbbd
Make sure that the keyed array is actually a list after unsetting 2021-11-26 21:52:34 +01:00
00ab986c06
Update IfElseAnalyzer.php 2021-11-26 21:47:17 +01:00
ee8c5c9c35
Remove some array_values 2021-11-26 21:47:17 +01:00
1129ab1475
Raise RedundantCast when using array_values on a list 2021-11-26 21:47:14 +01:00
orklah
a27e729263
Merge pull request #7002 from orklah/listkeyedarray
Disable list flag for TKeyedArray after unset
2021-11-26 21:32:55 +01:00
ralila
fdaed941ad use return type hints instead of php doc "@return void" 2021-11-26 20:59:41 +01:00
orklah
4f223db455 Disable list flag for TKeyedArray after unset 2021-11-26 20:52:34 +01:00
Bruce Weirdan
f215ed28d0
Drop special handling of constant references on enums
Internally enum cases are constants, and they should be resolved as
such.

Fixes vimeo/psalm#6994
2021-11-26 06:00:01 +02:00
orklah
2fbad1bbeb
Merge pull request #6993 from orklah/taint-numerics
Taint can't be transmitted through numerics nor bool
2021-11-25 23:20:38 +01:00
orklah
ab61eae5c9 Taint can't transmit through numerics nor bool 2021-11-25 22:51:35 +01:00
orklah
3bc06a8eab Taint can't transmit through numerics nor bool 2021-11-25 22:40:01 +01:00
orklah
b4d25cbf60
Merge pull request #6984 from orklah/enumcase-in-attribute
allow using EnumCase in an Attribute
2021-11-24 19:52:19 +01:00
orklah
049285add2 allow using EnumCase in an Attribute 2021-11-24 19:43:43 +01:00
orklah
fdf3a8dbb8
Merge pull request #6979 from orklah/6975
don't accept unresolved literal string as valid callable-strings
2021-11-23 21:41:04 +01:00
Paweł Tomulik
dac8c98613
attempt to fix #6973 2021-11-23 20:26:07 +01:00
orklah
b42c2814a9
Merge pull request #6971 from orklah/empty-keys
fix counting array properties when some are Never
2021-11-23 20:11:47 +01:00
orklah
9db43cdaae don't accept unresolved literal string as valid callable-strings 2021-11-23 19:54:09 +01:00
Paweł Tomulik
a7b9a241f3
attempt to fix #6937 2021-11-22 23:24:20 +01:00
orklah
eca56c0c1a
Merge pull request #6972 from orklah/unused-throws
prevent Psalm from considering throwing methods as unused just because they're immutable
2021-11-22 22:00:55 +01:00
orklah
1c1e352e5f prevent Psalm from considering throwing methods as unused just because they're immutable 2021-11-22 21:29:57 +01:00
orklah
0d47722195 fix counting array properties when some are Never 2021-11-22 21:13:25 +01:00
orklah
79fa7f5993
Merge pull request #6953 from orklah/callstatic-pure
check __callStatic purity instead of the pseudoMethod purity
2021-11-21 23:02:07 +01:00
orklah
46139272f6
Merge pull request #6952 from orklah/null_propagation_in_return
fix null propagation in return
2021-11-21 21:53:50 +01:00
orklah
3e56e859a9 fix inheritance 2021-11-21 21:53:24 +01:00
orklah
41fd460db5 check __callStatic purity instead of the pseudoMethod purity 2021-11-21 13:51:19 +01:00
orklah
6bdadfe0cb fix null propagation in return 2021-11-21 13:18:26 +01:00
Sebastian Kehr
511ed99e46 expand type aliases when comparing unions 2021-11-19 14:15:38 +01:00
Maximilian Bösing
6bf02657b6
qa: ensure array_merge has at least one argument
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 21:10:20 +01:00
Maximilian Bösing
68abcaab5c
feature: extract class constant by wildcard detection into dedicated resolver
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 18:27:19 +01:00
Maximilian Bösing
743f570f66
bugfix: remove preg_quote as that will also quote wildcard
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 18:06:39 +01:00
Maximilian Bösing
a050ff2878
bugfix: quote regular expression
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:56:40 +01:00
Maximilian Bösing
3e1be794c4
refactor: expand test cases and optimize handling of invalid class-constant references
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:56:39 +01:00
Maximilian Bösing
c6191643ab
qa: add Reconciler::RECONCILIATION_* constants
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:56:02 +01:00
Maximilian Bösing
49624169a5
bugfix: reconcile class-constant
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-11-15 17:53:26 +01:00
Bruce Weirdan
608e8d11fa
Merge pull request #6922 from weirdan/cases-references 2021-11-15 11:49:47 +02:00
Bruce Weirdan
0a9154b8bb
Allow references to enum cases in class constants 2021-11-15 05:56:09 +02:00
ralila
fe8f919495 Fix some CS issues 2021-11-15 04:00:38 +01:00
ralila
0d0a06e78f Avoid empty variable names instead of filtering them later 2021-11-15 03:00:08 +01:00
ralila
4fd87f2d77 Allow a comma as separator 2021-11-15 02:59:16 +01:00
ralila
7326f3b125 Remove useless brackets 2021-11-14 23:55:32 +01:00
Bruce Weirdan
45e1a1c69a
Merge pull request #6850 from gharlan/hyperlink 2021-11-14 23:20:09 +02:00
Bruce Weirdan
d61e31bbaf
Merge pull request #6912 from weirdan/mbstrotolower-produces-nonlowercase-strings-sometimes 2021-11-14 21:03:24 +02:00
Bruce Weirdan
d302ffba91
Drop duplicate constant 2021-11-14 05:19:20 +02:00
Bruce Weirdan
f5b71a3a5f
Infer mb_strtolower() result as string when encoding is specified
`mb_strtolower()` may return characters we generally consider uppercase
when it's given the encoding argument. This PR makes Psalm to err on the
side of caution and treat the return type as `string` rather than
`lowercase-string` in this case

Refs vimeo/psalm#6908
2021-11-14 03:57:10 +02:00
Aaron Piotrowski
1bb204db76
Fix detecting readonly promoted property visibility 2021-11-13 12:54:15 -06:00
Aaron Piotrowski
d06510833b
Fix detection of readonly on promoted properties 2021-11-13 12:37:08 -06:00
orklah
b35b9f92a6
Merge pull request #6895 from orklah/ignore-falsable
make ignore falsable/nullable dependent on the config
2021-11-13 11:37:57 +01:00
orklah
1464e8f91e make ignore falsable/nullable dependent on the config 2021-11-13 11:37:22 +01:00
Ricardo Boss
4a58739e00
Fix typos in message about Attribute usage 2021-11-12 23:11:59 +01:00
orklah
2d0758ab10
Merge pull request #6899 from pilif/fix-6887
don't stop processing for class usage after raising an issue
2021-11-12 09:42:49 +01:00
Philip Hofstetter
ece2bccf76
don't stop processing for class usage after raising an issue
this fixes #6887
2021-11-12 09:24:39 +01:00
8d20a83ed9
Use a proper assertion 2021-11-11 12:42:16 +01:00
2bcbc2f86c
Small fix 2021-11-11 12:16:04 +01:00
575fd1c55a
Small fixes 2021-11-11 12:05:03 +01:00
9dd8533806
ImagickPixel::getColor return type provider 2021-11-11 11:54:30 +01:00
Bruce Weirdan
85f2083acb
Flag duplicate constants
Fixes vimeo/psalm#6882
Addresses p1 from vimeo/psalm#6471
2021-11-11 00:44:17 +02:00
Nadyita
6b08f1741b Fix --enable-autocomplete=false 2021-11-10 18:04:47 +01:00
Philip Hofstetter
038df9cebe
detect unevaluated inline-html code after an rearly return
this is a followup after #6876

this fixes #6877
2021-11-10 13:11:50 +01:00
Philip Hofstetter
f407ac846a
do not treat __halt_compiler() as an expression being executed
this fixes #6875
2021-11-10 12:45:12 +01:00
orklah
a193ec4573
Merge pull request #6874 from orklah/fix-never-combination
fix never combination
2021-11-09 23:18:58 +01:00
orklah
830c898fec
Merge pull request #6872 from orklah/InvalidDocblockPromotedProperties
allow signature type for promoted property as well as property docblock
2021-11-09 23:17:43 +01:00
orklah
8d22676627 fix errors 2021-11-09 22:31:40 +01:00
orklah
21591b0f2a fix errors 2021-11-09 21:14:55 +01:00
orklah
db05dfeb4c fix never combination 2021-11-09 20:59:49 +01:00
orklah
d409c063f3 allow signature type for promoted property as well as property docblock (that will be used for param as well) 2021-11-09 19:38:18 +01:00
Thomas Bley
ca2fe166ee Added option to forbid eval() in codebase #6855 2021-11-07 21:06:22 +01:00
Bruce Weirdan
756be3b80c
Merge pull request #6843 from weirdan/enums-as-attributes 2021-11-07 17:53:19 +02:00
Bruce Weirdan
17ef25acd8
Merge pull request #6845 from sasezaki/cs_SelfMemberReference 2021-11-07 17:41:45 +02:00
orklah
4e6cb75094
Merge pull request #6848 from orklah/taint-comments
Taint comments
2021-11-07 15:55:37 +01:00
Gregor Harlan
ab0049d0ff
ConsoleReport: Add links to open file in editor 2021-11-07 15:04:14 +01:00
orklah
3322801903 ignore comments after taint-sink 2021-11-07 10:17:25 +01:00
sasezaki
5a01c8d601 Added phpcs SelfMemberReference rule, and applied 2021-11-07 15:47:39 +09:00
Bruce Weirdan
68495be147
Forbid declaring enums as attributes
This is in line with current Psalm behavior. We forbid non-instantiable
classlikes as attributes, including abstract classes and classes with
non-public constructors.

Refs vimeo/psalm#6841
2021-11-07 01:47:11 +02:00
Bruce Weirdan
9210bbcdd4
Forbid enum instantiation
Fixes vimeo/psalm#6837
2021-11-07 00:14:37 +02:00
orklah
b08d39e567
Merge pull request #6834 from orklah/unused-in-assert
don't consider calls to methods with assertions as Unused
2021-11-06 22:05:34 +01:00
orklah
e28659eb6c
Merge pull request #6838 from orklah/value_and_name_enum
better understands value and name properties for enum
2021-11-06 22:05:04 +01:00
orklah
18677bb108 better understands value and name properties for enum 2021-11-06 21:49:42 +01:00
Bruce Weirdan
0f8ef45110
Forbid properties on enums
Fixes vimeo/psalm#6472
2021-11-06 21:57:49 +02:00
orklah
9c9669ea44 don't consider calls to methods with assertions as Unused 2021-11-06 19:54:17 +01:00
orklah
aca8e12bf9
Merge pull request #6830 from orklah/isContainedBy
Mixed contain every types and Never is contained in every type
2021-11-05 22:05:32 +01:00
orklah
de9ad68ad0 Mixed contain every types and Never is contained in every type 2021-11-05 21:25:23 +01:00