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
orklah
ad57516765
create a temporary var for coalescing ternaries
2021-11-05 20:07:35 +01:00
orklah
b7834689e5
Merge pull request #6824 from orklah/session
...
Makes $_SESSION possibly undefined at the source
2021-11-05 20:07:24 +01:00
orklah
33aab6cc40
allow declaring functions and classLikes after a never-returning call
2021-11-05 18:09:40 +01:00
orklah
6e5f3db06c
makes $_SESSION possibly undefined
2021-11-04 22:45:46 +01:00
orklah
fffef80ec1
makes $_SESSION possibly undefined
2021-11-04 22:38:31 +01:00
orklah
915278e253
Merge pull request #6823 from orklah/variable_class
...
allow assertion to work on $var::class
2021-11-04 20:54:59 +01:00
orklah
834d831915
allow assertion to work on $var::class
2021-11-04 20:44:42 +01:00
orklah
5282e4728b
allow assertion to work on $var::class
2021-11-04 20:33:30 +01:00
orklah
cd74f665dc
Merge pull request #6813 from orklah/intTaint
...
don't register taints for numeric variables
2021-11-04 15:30:52 +01:00
orklah
e6dccaa07c
Merge pull request #6809 from orklah/binaryOpTaint
...
don't taint the result of most binary operations
2021-11-04 13:18:07 +01:00
orklah
bf993452a8
Merge pull request #6810 from orklah/castArrayTaints
...
Array cast pass taints
2021-11-04 13:17:20 +01:00
orklah
6e49c61fd0
fix comment
2021-11-04 00:31:22 +01:00
orklah
9fb74a4f28
exclude Plus on arrays too
2021-11-04 00:30:09 +01:00
orklah
3b01713257
don't taint the result of most binary operations
2021-11-04 00:30:09 +01:00
orklah
24137bdbad
Array cast pass taints
2021-11-04 00:29:36 +01:00
orklah
eca530d792
don't register taints for numeric variables
2021-11-04 00:29:07 +01:00
orklah
ff83c498a7
fix CS
2021-11-04 00:28:40 +01:00
orklah
fbe305e5bb
detect taint in backticks
2021-11-04 00:28:40 +01:00
Alexander Wühr
2d91b90690
Add pcntl_alarm to the list of impure functions
2021-11-03 10:16:10 +01:00
sasezaki
e3c6464a91
accept ::class constant strings for literal argument
2021-11-03 13:44:14 +09:00
Bruce Weirdan
0cdb0dc04a
Merge pull request #6768 from zoonru/psalm-self-out-templates
2021-11-02 21:41:16 +02:00
orklah
96ae8e7600
Merge pull request #6793 from orklah/unevaluatedCode
...
emit UnevaluatedCode after exit or never returning functionlike
2021-11-01 23:41:36 +01:00
orklah
68a4f9e930
emit UnevaluatedCode after exit or never returning functionlike
2021-11-01 22:13:29 +01:00
Bruce Weirdan
81ca05f3ab
Merge pull request #6790 from orklah/fix_yield
2021-11-01 20:25:54 +02:00
orklah
af129f8851
detect yield in new
2021-11-01 19:04:37 +01:00
Bruce Weirdan
ac098a52da
Allow to forbid exit()
and die()
2021-10-31 03:02:16 +03:00
Alexey Borzov
91ec5712ad
Add a means to switch return types based on PHP_VERSION_ID
...
As suggested in vimeo/psalm#6755
2021-10-29 22:19:38 +03:00
Bruce Weirdan
8c33b21261
Merge pull request #6776 from orklah/double-autoload-call
2021-10-29 11:25:14 +03:00
orklah
61a7cbe9c5
Merge pull request #6764 from orklah/promoted-property-docblock
...
allow documenting promoted properties with @var
2021-10-28 22:19:42 +02:00
orklah
67a3f3cd5c
fix spacing
2021-10-28 22:11:30 +02:00
orklah
d330b340d2
try without second call
2021-10-28 22:07:50 +02:00
orklah
067f8375cf
replace exception by InvalidDocblock
2021-10-28 22:05:43 +02:00
orklah
9823e87b80
Merge pull request #6774 from orklah/reconcileFalsyOrEmpty
...
fix local variable defined too early
2021-10-28 21:47:17 +02:00
orklah
b9effdb28a
Merge pull request #6742 from zoonru/fix_fewer_template_parameters
...
Fix template parameter collection for child classes with fewer parameters (fixes #6734 )
2021-10-28 20:06:11 +02:00
orklah
a7c44a1a19
fix local variable defined too early
2021-10-28 19:33:27 +02:00
597487c4c9
Assert that $lhs_var_id
is defined
2021-10-28 10:50:43 +02:00
5fae548e62
Add template support to @psalm-self-out
2021-10-28 10:44:37 +02:00
orklah
e17ca1ba10
fix CS/test
2021-10-27 22:45:16 +02:00
orklah
9b7eabe17f
allow documenting promoted properties with @var
2021-10-27 22:35:21 +02:00
9c59550e15
Fully fix recursive template parameter resolution
2021-10-27 10:58:33 +02:00
orklah
dc2ac427ca
Don't remove a type because they have a common parent
2021-10-26 22:54:55 +02:00
orklah
6fba5eb554
Merge pull request #6738 from orklah/generator_and_iterator
...
don't use is_a with user classes
2021-10-26 19:28:17 +02:00
orklah
70175d8fd2
Merge pull request #6744 from orklah/dont_assert_mixed
...
Don't assert mixed type
2021-10-26 19:23:13 +02:00
orklah
e8e2624c5f
Don't assert mixed type
2021-10-26 19:12:13 +02:00
c0e6f93deb
Fix template parameter collection for child classes with fewer parameters
2021-10-26 13:06:45 +02:00
Bruce Weirdan
4b0c8806a7
Merge pull request #6739 from orklah/instanceof_notliteral
2021-10-25 23:45:17 +03:00
orklah
caf9602cb8
don't emit redundant error when checking a named type against itself
2021-10-25 19:02:07 +02:00
orklah
86a9e5c13a
fix CS
2021-10-25 18:29:44 +02:00
orklah
dcd3601645
don't use is_a with user classes
2021-10-25 18:29:09 +02:00
orklah
9fb959150a
Merge pull request #6730 from orklah/int-template-arithmetics
...
don't emit issues when doing arithmetics on int templates
2021-10-24 20:39:54 +02:00
orklah
0161dedcdb
fix
2021-10-24 19:53:22 +02:00
orklah
2c5cec4a05
fix
2021-10-24 19:48:28 +02:00
orklah
af918a95a2
don't emit issues when doing arithmetics on int templates
2021-10-24 19:30:39 +02:00
orklah
d99f300043
fix concat
2021-10-24 19:15:18 +02:00
orklah
90d6239d74
strlen of strtolower of string is not always true
2021-10-24 18:40:13 +02:00
orklah
e33492398b
Merge pull request #6726 from orklah/crash_intrange
...
Don't crash on falsy with int ranges
2021-10-24 14:29:22 +02:00
orklah
c38139a87c
Don't crash on falsy with int ranges
2021-10-24 13:59:21 +02:00
orklah
68528985d6
Merge pull request #6724 from orklah/impure_callstatic
...
flag impure calls made through __callstatic
2021-10-24 10:30:56 +02:00
orklah
a0681a4498
flag impure calls made through __callstatic
2021-10-24 09:55:40 +02:00
orklah
0339815070
fix type leaking when using ternaries
2021-10-23 18:58:05 +02:00
orklah
307635fca5
Merge pull request #6721 from orklah/ftp_pasv
...
ftp_pasv is impure
2021-10-23 15:23:37 +02:00
orklah
fbd861c01e
ftp_pasv is impure
2021-10-23 15:17:49 +02:00
orklah
b63d877f48
Merge pull request #6720 from orklah/loop-template-regression
...
Don't refine empty/falsy assertions on templates inside loops
2021-10-23 14:31:10 +02:00
orklah
78a4c78187
Merge pull request #6718 from orklah/5651
...
fix literal string access on a non empty array
2021-10-23 12:11:39 +02:00
orklah
fb5a652e18
Don't refine empty/falsy assertions on templates inside loops
2021-10-23 11:17:47 +02:00
orklah
2cc5c555c2
fix literal string access on a non empty array
2021-10-22 18:17:08 +02:00
orklah
7bb37af1e5
Merge pull request #6714 from orklah/emptyorfalsy
...
More refactoring around Empty/falsy reconciliation
2021-10-21 23:40:01 +02:00
orklah
2d90631c87
Merge pull request #6689 from orklah/traversable&array
...
only fuse array & Traversable with phpstorm generics
2021-10-21 22:38:59 +02:00
orklah
1c0b802abb
fix regression
2021-10-21 21:10:12 +02:00
orklah
b43fd0037f
fix CS
2021-10-21 19:14:38 +02:00
orklah
513ae016f9
consistency
2021-10-21 19:14:38 +02:00
orklah
5f17ea9b63
improve empty/falsy
2021-10-21 19:14:36 +02:00
orklah
4b0e3d0c06
improve empty/falsy
2021-10-21 19:14:02 +02:00
orklah
31bbd5a967
Merge pull request #6707 from orklah/!falsy_on_empty-string
...
improve falsy on non-empty-string
2021-10-20 23:18:12 +02:00
orklah
7ce0c3a6e3
improve falsy on non-empty-string
2021-10-20 22:31:03 +02:00
orklah
1f02795e42
fix missing implicit __toString
2021-10-20 19:54:32 +02:00
orklah
cf8e443d10
use better issue types
2021-10-20 07:32:08 +02:00
orklah
4755131585
more consistency
2021-10-20 07:32:04 +02:00
orklah
1d59d2cd00
more consistency
2021-10-20 07:31:11 +02:00
orklah
9b8e483a4c
improve empty/falsy reconciliation
2021-10-20 07:31:11 +02:00
orklah
ec59876935
only fuse array & Traversable with phpstorm generics
2021-10-18 21:27:11 +02:00
orklah
f7a63361ad
Merge pull request #6679 from SCIF/bugfix-5694-arrayfilter
...
Improve handling of positive ints by array_filter()
2021-10-17 23:20:26 +02:00
Aleksandr Zhuravlev
b664850cdc
Added support of asserting properties of objects out of scope
2021-10-17 21:29:25 +13:00
Aleksandr Zhuravlev
978d9ec774
Improve handling of positive ints by array_filter()
2021-10-16 20:47:22 +13:00
orklah
7a47ebfcd6
fix
2021-10-16 00:26:00 +02:00
orklah
56c73142d6
don't emit InvalidReturnType when return type was inferred to never
2021-10-16 00:15:17 +02:00
orklah
1aad830392
Merge pull request #6654 from zoonru/fixes
...
Fix manipulation of intersection types, arrow functions, foreign static types, parameter static types, T|false|null unions.
2021-10-15 23:41:24 +02:00
Bruce Weirdan
c556920352
Revert "Merge remote-tracking branch 'upstream/master' into test5"
...
This reverts commit 043a0262f7
, reversing
changes made to cc4c29837d
.
2021-10-16 00:20:38 +03:00
orklah
043a0262f7
Merge remote-tracking branch 'upstream/master' into test5
2021-10-15 22:37:07 +02:00
orklah
99d8f92e4f
what would that do?
2021-10-15 22:33:04 +02:00
orklah
b8a2ba251f
Merge pull request #6672 from orklah/phpstorm-generics
...
prevent phpstorm generics from touching to signature types
2021-10-14 21:25:36 +02:00
orklah
8a770a1003
fix CS
2021-10-14 21:09:30 +02:00
orklah
a1b1080c4e
prevent phpstorm generics from touching to signature types
2021-10-14 21:04:53 +02:00
orklah
75c3f8716a
Merge pull request #6652 from orklah/is_a_stub
...
stub for is_a
2021-10-14 00:13:13 +02:00
orklah
64df00baba
Merge pull request #6660 from orklah/cleanup4
...
Code trimming
2021-10-14 00:12:21 +02:00
orklah
ae193ca4da
replace elvis operator by coalesce operator when applicable
2021-10-13 20:16:06 +02:00
orklah
dbc6f503b1
use of strtolower only once
2021-10-13 20:16:06 +02:00
orklah
e17290a9bc
Merge pull request #6613 from orklah/string-unpacking
...
String unpacking
2021-10-13 15:18:11 +02:00
orklah
91c3d788f6
Merge pull request #6656 from orklah/setAttribute
...
use Attribute feature of PHP-Parser to avoid dealing with dynamic properties
2021-10-13 14:46:22 +02:00
orklah
bee5b69f7f
use Attribute feature of PHP-Parser to avoid dealing with dynamic properties
2021-10-13 13:27:56 +02:00
orklah
9bb731182a
reintroduce errors for older versions
2021-10-13 11:22:40 +02:00
orklah
6e7aafe9b8
better behaviour in SimpleTypeInferer
2021-10-13 11:22:40 +02:00
orklah
66bbcc212c
remove unneeded argument
2021-10-13 11:22:40 +02:00
orklah
690c24f824
array unpacking with strings
2021-10-13 11:22:40 +02:00
b6e7201b5a
Forbid static in parameter typehint
2021-10-13 11:22:33 +02:00
1574751aef
Fix docblock manipulator for arrow closures
2021-10-13 10:23:06 +02:00
orklah
e7cd2eac0a
Merge pull request #6641 from orklah/weird-assertion-count
...
Union::getAssertionString with multiple types
2021-10-13 08:15:28 +02:00
orklah
78c4d9def7
fix
2021-10-12 22:16:35 +02:00
orklah
1efe272aed
stub for is_a
2021-10-12 22:12:51 +02:00
orklah
233fe11d12
SimpleXMLElement is not always truthy
2021-10-12 15:46:02 +02:00
orklah
c6fb81007c
Merge pull request #6629 from orklah/loops-tweaking
...
tweaking with loops
2021-10-11 20:45:54 +02:00
orklah
af414ffe59
Merge pull request #6642 from orklah/inside-conditional
...
Inside conditional
2021-10-11 20:45:14 +02:00
orklah
911076939c
Merge pull request #6628 from orklah/phpparser2
...
Php-Parser 4.13
2021-10-11 20:42:32 +02:00
orklah
b54dddf484
Merge pull request #6643 from orklah/never-closure
...
infer never on closures(and more?)
2021-10-11 20:42:02 +02:00
orklah
21456b85b1
add Never for throws. Add Never only if at top level
2021-10-11 19:35:18 +02:00
orklah
f9377c53fc
infer never on closures(and more?)
2021-10-11 18:52:26 +02:00
orklah
c4ebc34695
suppress or use the return type
2021-10-11 17:27:52 +02:00
orklah
9e7d3a4cd6
sets the inside_conditional flag after creating another context from it
2021-10-11 16:38:39 +02:00
orklah
4bcce010e4
loose comparison between int/float and string result in numeric-string
2021-10-11 16:11:05 +02:00
orklah
d08845900b
Merge pull request #6639 from orklah/refine-TKeyedArray-with-iterable
...
Refine TKeyedArray with iterable
2021-10-11 16:09:00 +02:00
orklah
2e64854a6c
don't allow getAssertionString to return a part of the Union
2021-10-11 16:07:57 +02:00
orklah
abebe4f7b4
add comments and suppress ComplexMethod
2021-10-11 13:36:56 +02:00
orklah
12a53345b5
allow filtering TKeyedArray using an iterable
2021-10-11 13:36:29 +02:00
orklah
3aee938910
Merge pull request #6636 from orklah/possibly-undefined-satisfy-nullable
...
Allow sending possibly_undefined inputs to optional params
2021-10-10 23:12:38 +02:00
orklah
cc82e6cf41
suppress warning
2021-10-10 13:58:09 +02:00
orklah
1b24b0309c
reduce complexity
2021-10-10 13:52:14 +02:00
orklah
69d412bfcb
fix error message when input is possibly undefined
2021-10-10 13:42:28 +02:00
orklah
fb8b07613d
Allow sending possibly_undefined inputs to optional params
2021-10-10 12:44:04 +02:00
orklah
5134a92e2a
Merge pull request #6623 from orklah/templated-array-key
...
Templated array key
2021-10-10 10:43:12 +02:00
orklah
f159ca76de
Merge pull request #6624 from orklah/float-always-float
...
invert the meaning of the errors
2021-10-10 10:42:37 +02:00
orklah
d5eb471688
every condition must be true
2021-10-10 10:27:22 +02:00
orklah
85668ed255
Add support for infinite for loops
2021-10-10 10:22:41 +02:00
orklah
39b85f574b
revert back wrong change
2021-10-10 10:06:37 +02:00
orklah
70bfce769c
revert back wrong change
2021-10-10 10:00:44 +02:00
orklah
da4a0fe9a9
return null when expression can't be stored as unresolved
2021-10-10 09:28:19 +02:00
orklah
e7a86148b0
Allow Psalm to store unresolved Unary Ops
2021-10-10 09:24:25 +02:00
orklah
df34daee52
more consistency
2021-10-10 00:51:47 +02:00
orklah
7c99878f58
tweaking with loops
2021-10-10 00:21:15 +02:00
orklah
ded92ef83c
forbid intersection types for now
2021-10-09 23:48:32 +02:00
orklah
870ee4ff93
->args to ->getArgs
2021-10-09 23:37:04 +02:00
orklah
bac0217890
add "!" to invert the meaning of the errors
2021-10-09 21:15:27 +02:00
orklah
2b963242d7
array-key is included is contained by a template with array-key as upper bound
2021-10-09 20:02:09 +02:00
orklah
f62c76a334
Merge pull request #6622 from orklah/return_0
...
fix @return 0
2021-10-09 18:25:46 +02:00
orklah
a1df08f718
fix an old test
2021-10-09 18:18:15 +02:00
orklah
d44d00fb6d
fix two more cases
2021-10-09 18:10:49 +02:00
orklah
a2f415e2e0
fix @return 0
2021-10-09 17:58:06 +02:00
orklah
950b21d10a
Merge pull request #6621 from orklah/incompatible-types-found-for-T
...
add a little details to the Incompatible types found for T error
2021-10-09 15:10:27 +02:00
orklah
b1f20dffa0
fix brackets
2021-10-09 15:02:49 +02:00
orklah
e9f3e8795f
add a little details to the Incompatible types found for T error
2021-10-09 15:01:13 +02:00
orklah
49abfcb71b
Merge pull request #6617 from orklah/nonspecific-literal-int
...
allow any integer range to be satisfied by TNonspecificLiteralInt
2021-10-09 01:12:46 +02:00
orklah
874a67a1b0
allow any integer range to be satisfied by TNonspecificLiteralInt
2021-10-09 01:04:31 +02:00
orklah
d40335ff37
Merge pull request #6612 from orklah/empty-array_is_list
...
array_is_list on empty array returns true
2021-10-08 17:16:35 +02:00
orklah
682784c886
array_is_list on empty array returns true
2021-10-08 17:05:35 +02:00
orklah
f35df421e2
Merge pull request #6604 from orklah/array-unshift-on-empty-array
...
Array unshift on empty array
2021-10-07 23:04:10 +02:00
orklah
87a5df6043
only put offset to 0 when there's only one argument
2021-10-07 20:38:10 +02:00
orklah
49bb065dc7
Merge pull request #6608 from orklah/foreach-on-list
...
foreach on list gives a positive|0 offset
2021-10-07 20:16:11 +02:00
orklah
3fc716ec3b
fix CS
2021-10-07 19:39:45 +02:00
orklah
a7c4f0052b
foreach on list gives a positive|0 offset
2021-10-07 19:32:25 +02:00
orklah
973da0a91a
allow considering a NonEmptyArray where the only offset value is 0 to be contained in a NonEmptyList
2021-10-07 11:04:46 +02:00
orklah
3a2eddf2d7
pass the method_id to be able to set the new offset type to 0 for array_unshift
2021-10-07 09:46:49 +02:00
orklah
6627055f3b
make TypeCombiner override empty-array
2021-10-07 09:46:17 +02:00
orklah
ad6229fe67
fix error
2021-10-05 20:27:13 +02:00
orklah
433474260c
revert confusing change
2021-10-05 19:27:07 +02:00
orklah
7321eed89d
don't add return type if it's the same than signature unless there is a description
2021-10-05 13:41:20 +02:00
orklah
902206b3ee
Merge pull request #6578 from orklah/psalter-psalm-param
...
Psalter psalm-param
2021-10-05 12:51:52 +02:00
orklah
3cf5dc5e89
makes Psalm understand templates in lhs
2021-10-05 11:34:17 +02:00
orklah
12ecaaa84d
makes Psalm understand templates in lhs
2021-10-05 11:30:29 +02:00
orklah
2c728546e4
Merge pull request #6485 from orklah/list-assert
...
assert that some type is a list
2021-10-04 13:31:34 +02:00
orklah
ac6a75ea7f
Merge pull request #6473 from orklah/double-assert2
...
assert both sides of an equality
2021-10-04 13:30:38 +02:00
orklah
0e83afdb86
Merge pull request #6518 from orklah/fix-truthy
...
improvements of alwaysTruthy/alwaysFalsy
2021-10-04 13:29:49 +02:00
orklah
b0842c6b6f
Merge pull request #6475 from orklah/range6
...
3> min/max, rand inference improvement with integer range
2021-10-04 13:23:03 +02:00
orklah
8b07e69645
Merge pull request #6514 from zoonru/if-this-is
...
Add if-this-is
2021-10-04 09:49:26 +02:00
orklah
942b3b619b
Merge pull request #6522 from MorrisJobke/fix/show-file-and-line-in-exception-message
...
Show file and line in case of an exception in a forked worker
2021-10-04 09:19:38 +02:00
orklah
aba9541451
Psalter add psalm-param modifying
2021-10-04 01:01:57 +02:00
orklah
53c0a4e63a
cleanup
2021-10-04 00:03:06 +02:00
orklah
d3bc179abd
cover the case where the call to the function is namespaced but the function doesn't exists in the namespace
2021-10-02 10:02:24 +02:00
orklah
e0b2cb5028
consistency
2021-10-02 10:02:24 +02:00
orklah
0b8681c8bf
check namespace before adding assertions
2021-10-02 10:02:24 +02:00
orklah
fa9990ae55
fix wrong method name
2021-10-02 10:02:24 +02:00
orklah
e02eec932e
refactor Assertions for is_ functions
2021-10-02 10:02:24 +02:00
orklah
f641d9e95a
assert that some type is a list
2021-10-02 10:02:22 +02:00
orklah
f8628ef68c
fix errors
2021-10-02 10:01:05 +02:00
orklah
b9e65f066a
refactor paradoxical conditions
2021-10-02 10:01:04 +02:00
orklah
85f16e9710
handle the case where analysis failed
2021-10-02 10:01:04 +02:00
orklah
597e9a99d7
Makes BooleanNot smarter
2021-10-02 10:01:04 +02:00
orklah
f8c2a89f23
use Int ranges to describe offset after array_fill when both args are known ints
2021-10-02 09:54:02 +02:00
orklah
b9f14f8687
improve min/max inference, add a return type provider for rand, mt_rand and random_int
2021-10-02 09:53:58 +02:00
orklah
7e1c66d837
add limit to the number of clauses simplifyCNF can handle
2021-10-02 09:52:19 +02:00
orklah
7f0d25374f
add comment
2021-10-02 09:52:19 +02:00
orklah
83ad836e88
assert both sides of an equality
2021-10-02 09:52:19 +02:00
Bruce Weirdan
2e7e343ef8
Merge pull request #6423 from orklah/count-equal-0-negated-assertion
2021-10-02 00:53:03 +03:00
Bruce Weirdan
97a3d673f4
Merge pull request #5091 from ohader/namespace-resolver
2021-10-01 02:00:33 +03:00
Bruce Weirdan
377d3bddf0
Merge pull request #6552 from orklah/manipulator
2021-09-30 21:54:55 +03:00
Bruce Weirdan
d232cc0d02
Merge pull request #6553 from orklah/exec-leak
2021-09-30 21:32:55 +03:00
orklah
02ef33c4ac
Merge pull request #6554 from simPod/use-a
...
Use correct English articles
2021-09-30 09:37:56 +02:00
Simon Podlipsky
4f5e30fd30
Use correct English articles
2021-09-30 09:19:08 +02:00
orklah
3133cd159a
fix NPE
2021-09-29 22:30:38 +02:00
orklah
2a2e7c5e32
prevent object leaking that lead to changes in callmap
2021-09-29 22:27:34 +02:00
orklah
5a99c9be94
offset the starting position of the function in case of attributes
2021-09-29 21:19:04 +02:00
Oliver Hader
51333e8f6e
[TASK] Resolve namespace of class related AST statements
...
This change allows using `Class_` namespaces like in
PhpParser's original `NameResolver` implementation.
```
if ($node instanceof \PhpParser\Node\Stmt\Class_) {
$fqcn = (string)($node->namespacedName ?? $node->name);
$extents = (string)($node->extends->getAttribute('resolvedName'));
}
```
Corresponding parts have been duplicated and modified from
https://github.com/nikic/PHP-Parser/blob/v4.10.4/lib/PhpParser/NodeVisitor/NameResolver.php#L69-L81
2021-09-27 11:19:24 +02:00
orklah
ab6efe49b2
fix CS
2021-09-26 23:41:26 +02:00
orklah
38dac34846
unnecessary null initialization
2021-09-26 23:34:32 +02:00
orklah
5d6d3df4cf
unnecessary identical child method
2021-09-26 23:34:32 +02:00
orklah
4577a11a2f
imports
2021-09-26 23:34:32 +02:00
orklah
c91bdfb689
old casts
2021-09-26 23:34:32 +02:00
orklah
9170b0af8f
replace list()
2021-09-26 23:34:32 +02:00
orklah
2315316b17
return types
2021-09-26 23:34:32 +02:00
orklah
72eab30a3a
coalesce operator
2021-09-26 23:34:31 +02:00
orklah
46801c4b98
clearer string operations
2021-09-26 23:34:31 +02:00
orklah
18b0c63de2
shorter operations
2021-09-26 22:44:33 +02:00
orklah
53e4719c19
boolean cast
2021-09-26 22:39:01 +02:00
orklah
ddf74919f6
if with common parts
2021-09-26 22:37:17 +02:00
orklah
c11b32d414
redundant variable check
2021-09-26 22:37:17 +02:00
orklah
998f91aa65
variable with single value
2021-09-26 22:37:17 +02:00
orklah
a85cba3973
dead code
2021-09-26 22:37:17 +02:00
orklah
ae1afd90c6
coalesce operator
2021-09-26 22:37:17 +02:00
orklah
dae29c8cee
missing visibility
2021-09-26 22:37:17 +02:00
orklah
6dd1e19254
unnecessary ref
2021-09-26 22:37:17 +02:00
orklah
a5aa824258
unnecessary local variable
2021-09-26 22:37:17 +02:00
orklah
be8406294c
unnecessary return
2021-09-26 22:37:16 +02:00
orklah
5777d02fed
missing types
2021-09-26 22:37:16 +02:00
orklah
5b684309fd
unnecessary ternary
2021-09-26 22:37:16 +02:00
orklah
fce60a018a
param defaults
2021-09-26 22:37:16 +02:00
orklah
b65af9bf2f
static in final class
2021-09-26 22:37:16 +02:00
orklah
153de33704
weird param always false
2021-09-26 22:37:16 +02:00
orklah
4481428f97
unused param
2021-09-26 22:36:17 +02:00
orklah
c0f6474bc6
merging exceptions
2021-09-26 22:36:17 +02:00
orklah
a03e55a110
array_push misused
2021-09-26 22:36:16 +02:00
orklah
966211e052
unused variable
2021-09-26 22:36:16 +02:00
orklah
afbda6d0f6
Merge pull request #6535 from orklah/SA
...
Improvements
2021-09-25 20:16:38 +02:00
orklah
a214b14388
CS fix
2021-09-25 18:38:01 +02:00
orklah
f4fa1f7a1b
CS fix
2021-09-25 18:35:18 +02:00
orklah
f1e5ecf876
CS fix
2021-09-25 18:28:25 +02:00
orklah
41ea541084
unset instead of reassign
2021-09-25 18:11:54 +02:00
orklah
06da96843a
interface compat
2021-09-25 18:09:49 +02:00
orklah
7447489133
better types
2021-09-25 17:57:18 +02:00
orklah
6c892125c3
interface compat
2021-09-25 17:33:12 +02:00
orklah
bff08670f5
put int instead of float
2021-09-25 17:32:04 +02:00
orklah
146d02e3e1
unset instead of reassign
2021-09-25 17:28:51 +02:00
orklah
7891e6136a
unparsable types
2021-09-25 17:19:50 +02:00
orklah
cc77abaa40
unparsable types
2021-09-25 17:19:45 +02:00
orklah
748d58a1d6
unparsable types
2021-09-25 17:14:57 +02:00
orklah
89f5c12be2
unparsable types
2021-09-25 17:14:10 +02:00
orklah
a9b1248e9f
unnecessary phpdoc is necessary
2021-09-25 17:13:58 +02:00
orklah
671a175deb
unnecessary phpdoc
2021-09-25 17:08:51 +02:00
orklah
f0b0540563
unparsable types
2021-09-25 17:08:38 +02:00
orklah
a865090a01
missing types
2021-09-25 17:06:49 +02:00
orklah
04afe1fb86
improved assertion
2021-09-25 16:59:34 +02:00
orklah
7b1ee0924e
unnecessary phpdoc
2021-09-25 16:59:23 +02:00
orklah
06f497fca9
missing return
2021-09-25 16:50:14 +02:00
orklah
ebef0de9b4
missing variable
2021-09-25 16:49:53 +02:00
orklah
e61d490662
missing return
2021-09-25 16:49:46 +02:00
orklah
b4e0f83186
unparsable types
2021-09-25 16:47:38 +02:00
orklah
2f82f25934
undefined param
2021-09-25 16:41:22 +02:00
orklah
1f2316f124
polymorphism
2021-09-25 16:40:52 +02:00
orklah
056f85bbc9
undefined property
2021-09-25 16:25:38 +02:00
orklah
3e6bf6f35f
remove unused nullable on param types
2021-09-25 16:05:47 +02:00
orklah
a92fee8ae3
better combining
2021-09-25 11:21:06 +02:00
orklah
97e91e6bf0
code trimming
2021-09-25 02:34:21 +02:00
orklah
e6ba6092a6
turn inside_loop to true for do...while
2021-09-23 21:24:17 +02:00
orklah
d3d11471b7
allow arithmetics on variables as long as we're out of loops
2021-09-23 21:24:16 +02:00
orklah
012b65de78
try to improve behaviour
2021-09-23 21:24:16 +02:00
orklah
2b56d52760
rename vars for better diff
2021-09-23 21:24:16 +02:00
orklah
efde3f9180
change order for better diff
2021-09-23 21:24:16 +02:00
orklah
5ec9e6543d
try with everything except Variables
2021-09-23 21:24:16 +02:00
orklah
c6949760f8
activate arithmetic operations on properties too
2021-09-23 21:24:16 +02:00
orklah
a70e7032e9
activate arithmetic operations on method calls too
2021-09-23 21:24:16 +02:00
orklah
c4b47d3786
activate arithmetic operations on func calls
2021-09-23 21:24:16 +02:00
orklah
cc6ab8340b
improve type when min = max and add test
2021-09-23 21:24:16 +02:00
orklah
ba7f2a5b3b
allow range int to be positive
2021-09-23 21:24:16 +02:00
orklah
ea80373006
AssertionFinder refactor
2021-09-23 21:24:16 +02:00
orklah
a7fa63547e
add tests, improve count behaviour on keyed arrays using integer range
2021-09-23 21:24:16 +02:00
orklah
7bf9df4360
restore paradox checking
2021-09-23 21:24:16 +02:00
orklah
667eec2ac8
consider count === 0
2021-09-23 21:24:16 +02:00
Morris Jobke
ebf777a5dc
Show file and line in case of an exception in a forked worker
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2021-09-23 20:51:44 +02:00
83d596e2e5
Fixes
2021-09-22 10:36:54 +02:00
741c9ee471
Fixes
2021-09-22 10:26:21 +02:00
orklah
9b60c86206
Merge pull request #6508 from thomasbley/master
...
fixed Uncaught Error: Call to undefined function shell_exec()
2021-09-21 20:39:15 +02:00
f8a959c079
Fix silly bug
2021-09-21 14:11:33 +02:00
ba2c2bdaa2
Fix tests
2021-09-21 13:00:13 +02:00
7e0b489efe
Merge remote-tracking branch 'origin/master' into if-this-is
2021-09-21 12:12:15 +02:00
Thomas Bley
6f958fe919
Merge branch 'master' of github.com:thomasbley/psalm
2021-09-20 16:55:58 +02:00
Thomas Bley
e60d9e5ec5
return 1 if shell_exec is not available for getCpuCount()
2021-09-20 16:55:16 +02:00
orklah
d32b1be5a3
Merge pull request #6498 from MorrisJobke/fix/catch-ComplicatedExpressionException-in-ArrayFilterReturnTypeProvider.php
...
Catch ComplicatedExpressionException in ArrayFilterReturnTypeProvider
2021-09-20 16:53:48 +02:00
orklah
55fd9c6713
Merge pull request #6478 from whsv26/bugfix/trait-template-invalid-arg
...
Fix invalid argument bug in generic trait context
2021-09-20 16:53:12 +02:00
orklah
994c927b6a
Merge pull request #6445 from TysonAndre/negate-in_array-v2
...
Fix false positive ParadoxicalCondition in negation of in_array
2021-09-20 16:49:15 +02:00
Thomas
ecb368ff2b
Merge branch 'vimeo:master' into master
2021-09-20 12:19:43 +02:00
Thomas Bley
449ef0d994
fixed Uncaught Error: Call to undefined function shell_exec()
2021-09-20 12:18:49 +02:00
orklah
90e1662964
Merge pull request #6241 from orklah/range5
...
Range arithmetics and assertions
2021-09-20 07:15:43 +02:00
orklah
0f17a2590c
fix Mod
2021-09-19 19:30:03 +02:00
orklah
25f78b5d54
refine Mod with positives everywhere
2021-09-19 19:30:03 +02:00
orklah
f87bd56105
fix Pow
2021-09-19 19:30:03 +02:00
orklah
5a2df475ca
changes after review
2021-09-19 19:30:03 +02:00
orklah
81e8bf3ff5
allow Literals to be combined with preexisting IntRange
2021-09-19 19:30:03 +02:00
orklah
086d3777eb
fix wrong assertion
2021-09-19 19:30:03 +02:00
orklah
3d7dc740c2
fix UnaryMinus
2021-09-19 19:30:03 +02:00
orklah
e75e390449
refactor big methods away
2021-09-19 19:30:03 +02:00
orklah
6b5e6eeecc
fix wrong type
2021-09-19 19:30:02 +02:00
orklah
a6630c49a2
fix mod calculation with ranges
2021-09-19 19:30:02 +02:00
orklah
c226285a4b
fix Mul and Pow operations
2021-09-19 19:30:02 +02:00
orklah
f789ab0655
add test and allow checking in already inferred types instead of just relying on statements from PHPParser for assertions
2021-09-19 19:30:02 +02:00
orklah
ae0586b0e6
fix shift inference
2021-09-19 19:30:02 +02:00
orklah
bae5b2cf96
remove type when assertion contradicts the current type
2021-09-19 19:30:02 +02:00
orklah
e0e34bec33
allow intersections and add test
2021-09-19 19:30:02 +02:00
orklah
c26f403e7e
fix an old bug with inverting positive int + allow inverting TIntRange
2021-09-19 19:30:02 +02:00
orklah
488c13b7c5
handle bit operations and add test
2021-09-19 19:30:02 +02:00
orklah
9994a91915
help Psalm understand the types
2021-09-19 19:30:02 +02:00
orklah
6f050359ce
refactor int vs int range arithmetic by converting everything to range and add tests
2021-09-19 19:30:02 +02:00
orklah
0227894176
fix code
2021-09-19 19:30:02 +02:00
orklah
d2f73d3adb
fix and test minus case
2021-09-19 19:30:01 +02:00
orklah
d919a53674
rename method too
2021-09-19 19:30:01 +02:00
orklah
9ab46ff3e0
rename class because it handles Div too now
2021-09-19 19:30:01 +02:00
orklah
2dd16f9e22
simplify code
2021-09-19 19:30:01 +02:00
orklah
def7d31566
fix positive-numeric assertion
2021-09-19 19:30:01 +02:00
orklah
6d059b9c8f
fix CS
2021-09-19 19:30:01 +02:00
orklah
b5b2677ee3
allow negating inferiorto/superiorto
2021-09-19 19:30:01 +02:00
orklah
b3a62c76dd
add tests and use getNewHighestBound at one place
2021-09-19 19:30:01 +02:00
orklah
c20c1b5002
better div and modulo inference
2021-09-19 19:30:01 +02:00
orklah
05fb0c326d
fix CS
2021-09-19 19:30:01 +02:00
orklah
3ad60cfdb9
Allow combining and improve comparison
2021-09-19 19:30:00 +02:00
orklah
55b45853de
try not to remove null after a positive-numeric assertion
2021-09-19 19:30:00 +02:00
orklah
219e425894
handle nightmare isset assertions
2021-09-19 19:30:00 +02:00
orklah
ee75586fbf
expand test and fix assertions
2021-09-19 19:30:00 +02:00
orklah
d2e1388473
Allow inferior-to and superior-to even with negated numbers
2021-09-19 19:30:00 +02:00
orklah
21ceaa7dc7
reconcile positive-int with superior/inferior to
2021-09-19 19:30:00 +02:00
orklah
61d1d1660d
handle the div case when even if min/max are integers, there may be float between them
2021-09-19 19:30:00 +02:00
orklah
9505411738
remove type by key instead of targetting global int
2021-09-19 19:30:00 +02:00
orklah
c3afe103c5
allow asserting positive int on an int range
2021-09-19 19:29:59 +02:00
orklah
4682c4be5e
remove unnecessary var
2021-09-19 19:29:59 +02:00
orklah
86afff61c5
allow combining TIntRange with other ints
2021-09-19 19:29:59 +02:00
orklah
8325378e23
support inverted comparison and remove null after value comparison
2021-09-19 19:29:59 +02:00
orklah
ca4c18c30d
put assertions back
2021-09-19 19:29:59 +02:00
orklah
1dcdaea117
int range arithmetics
2021-09-19 19:29:59 +02:00
Bruce Weirdan
3082a82a21
Merge pull request #6505 from orklah/DomDocumentProperties
...
add PropertyTypeProvider for DomDocument
2021-09-18 14:05:57 +03:00
orklah
57d0336a9c
fix wrong result type
2021-09-18 08:49:52 +02:00
orklah
a1bd339cc1
add PropertyTypeProvider for DomDocument
2021-09-18 08:40:34 +02:00
Bruce Weirdan
37362b333c
Merge pull request #6503 from orklah/TClassString_inference
2021-09-17 21:54:54 +03:00
orklah
e9f3d5ba06
assert from TClassString
2021-09-17 20:05:25 +02:00
Morris Jobke
cf49eea09e
Catch ComplicatedExpressionException in ArrayFilterReturnTypeProvider
...
Many errors like this happened:
```
Uncaught Exception: Psalm\Exception\ComplicatedExpressionException
Stack trace in the forked worker:
#0 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Algebra.php(606): Psalm\Internal\Algebra::groupImpossibilities(Array)
#1 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Algebra/FormulaGenerator.php(255): Psalm\Internal\Algebra::negateFormula(NULL)
#2 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/ArrayFilterReturnTypeProvider.php(249): Psalm\Internal\Algebra\FormulaGenerator::getFormula(2818034, 2818034, Object(PhpParser\Node\Expr\BinaryOp\Identical), 'Guzzle\\Plugin\\C...', Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(Psalm\Codebase))
#3 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Provider/FunctionReturnTypeProvider.php(159): Psalm\Internal\Provider\ReturnTypeProvider\ArrayFilterReturnTypeProvider::getFunctionReturnType(Object(Psalm\Plugin\EventHandler\Event\FunctionReturnTypeProviderEvent))
#4 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/FunctionCallReturnTypeFetcher.php(59): Psalm\Internal\Provider\FunctionReturnTypeProvider->getReturnType(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), 'array_filter', Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context), Object(Psalm\CodeLocation))
#5 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/FunctionCallAnalyzer.php(197): Psalm\Internal\Analyzer\Statements\Expression\Call\FunctionCallReturnTypeFetcher::fetch(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(Psalm\Codebase), Object(PhpParser\Node\Expr\FuncCall), Object(PhpParser\Node\Name), 'array_filter', true, false, NULL, Object(Psalm\Type\Atomic\TCallable), Object(Psalm\Internal\Type\TemplateResult), Object(Psalm\Context))
#6 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(263): Psalm\Internal\Analyzer\Statements\Expression\Call\FunctionCallAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context))
#7 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(43): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::handleExpression(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context), false, NULL, false)
#8 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentsAnalyzer.php(200): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context))
#9 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/FunctionCallAnalyzer.php(149): Psalm\Internal\Analyzer\Statements\Expression\Call\ArgumentsAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Array, Array, 'array_values', true, Object(Psalm\Context))
#10 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(263): Psalm\Internal\Analyzer\Statements\Expression\Call\FunctionCallAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context))
#11 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php(43): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::handleExpression(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context), false, NULL, false)
#12 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/ReturnAnalyzer.php(144): Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Expr\FuncCall), Object(Psalm\Context))
#13 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(517): Psalm\Internal\Analyzer\Statements\ReturnAnalyzer::analyze(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Stmt\Return_), Object(Psalm\Context))
#14 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/StatementsAnalyzer.php(185): Psalm\Internal\Analyzer\StatementsAnalyzer::analyzeStatement(Object(Psalm\Internal\Analyzer\StatementsAnalyzer), Object(PhpParser\Node\Stmt\Return_), Object(Psalm\Context), Object(Psalm\Context))
#15 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FunctionLikeAnalyzer.php(433): Psalm\Internal\Analyzer\StatementsAnalyzer->analyze(Array, Object(Psalm\Context), Object(Psalm\Context), true)
#16 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php(1782): Psalm\Internal\Analyzer\FunctionLikeAnalyzer->analyze(Object(Psalm\Context), Object(Psalm\Internal\Provider\NodeDataProvider), Object(Psalm\Context))
#17 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ClassAnalyzer.php(404): Psalm\Internal\Analyzer\ClassAnalyzer->analyzeClassMethod(Object(PhpParser\Node\Stmt\ClassMethod), Object(Psalm\Storage\ClassLikeStorage), Object(Psalm\Internal\Analyzer\ClassAnalyzer), Object(Psalm\Context), Object(Psalm\Context))
#18 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/FileAnalyzer.php(214): Psalm\Internal\Analyzer\ClassAnalyzer->analyze(Object(Psalm\Context), Object(Psalm\Context))
#19 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(348): Psalm\Internal\Analyzer\FileAnalyzer->analyze(NULL)
#20 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php(194): Psalm\Internal\Codebase\Analyzer->Psalm\Internal\Codebase\{closure}(369, '/Users/morris/P...')
#21 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(414): Psalm\Internal\Fork\Pool->__construct(Array, Object(Closure), Object(Closure), Object(Closure), Object(Closure))
#22 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(277): Psalm\Internal\Codebase\Analyzer->doAnalysis(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 7)
#23 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(640): Psalm\Internal\Codebase\Analyzer->analyzeFiles(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 7, false, true)
#24 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Cli/Psalm.php(359): Psalm\Internal\Analyzer\ProjectAnalyzer->check('/Users/morris/P...', true)
#25 /Users/morris/Projects/abc/vendor/vimeo/psalm/psalm(4): Psalm\Internal\Cli\Psalm::run(Array)
#26 {main} in /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php:366
Stack trace:
#0 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Fork/Pool.php(400): Psalm\Internal\Fork\Pool->readResultsFromChildren()
#1 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(488): Psalm\Internal\Fork\Pool->wait()
#2 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/Analyzer.php(277): Psalm\Internal\Codebase\Analyzer->doAnalysis(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 7)
#3 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php(640): Psalm\Internal\Codebase\Analyzer->analyzeFiles(Object(Psalm\Internal\Analyzer\ProjectAnalyzer), 7, false, true)
#4 /Users/morris/Projects/abc/vendor/vimeo/psalm/src/Psalm/Internal/Cli/Psalm.php(359): Psalm\Internal\Analyzer\ProjectAnalyzer->check('/Users/morris/P...', true)
#5 /Users/morris/Projects/abc/vendor/vimeo/psalm/psalm(4): Psalm\Internal\Cli\Psalm::run(Array)
#6 {main}
(Psalm 4.10.0@916b098b008f6de4543892b1e0651c1c3b92cbfa crashed due to an uncaught Throwable)
```
This change catches the exception and just omits the results here.
Disclaimer: I just added the code like @orklah said in https://github.com/vimeo/psalm/pull/6489#issuecomment-921057199 .
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2021-09-17 09:41:05 +02:00
Morris Jobke
14acc115a7
Print exception class in case of an uncaught exception
...
Before it just stated:
```
Uncaught Exception:
Stack trace in the forked worker:
...
```
With this change it also prints the class name (in case there is no message or the message is not unambiguous.
```
Uncaught Exception: Psalm\Exception\ComplicatedExpressionException:
Stack trace in the forked worker:
...
```
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2021-09-16 12:46:04 +02:00
whsv26
fd4eeaae2e
Fix phpcs issue for is_null function.
2021-09-14 00:52:32 +03:00
whsv26
6ac29fc965
Fix code style.
2021-09-14 00:50:23 +03:00
whsv26
8b54cca3a8
Fix different context templates invalid argument bug for trait.
2021-09-13 23:43:09 +03:00
orklah
96adb96dab
fix or suppress cases in Psalm
2021-09-12 23:12:23 +02:00
orklah
44bfa2c21c
flag alwaysTruthy conditions as redundant
2021-09-12 22:53:44 +02:00
S.M. Ataur Rahman
c13ed7cc28
type of "$http_response_header" is "list<string>" now
2021-09-09 01:36:07 +06:00
Bruce Weirdan
b4f024b1fe
Basic enum checks
...
* Duplicate cases
* Duplicate case values
* Invalid case values: value on a pure enum case, missing value on a
backed enum case, backing type / case type mismatch
* Literal expression evaluation for case values
Fixes vimeo/psalm#6426
Fixes vimeo/psalm#6427
2021-09-07 12:35:38 +03:00
Tyson Andre
f4f989d1e5
Use different in-array-*
check for non-literals
...
Negating this would not contradict the original condition if the
variables were different. A string can be in one array of strings but
not be in a different array of strings.
2021-09-06 21:48:08 -04:00
Tyson Andre
7df819e585
Unrelated: Use strict_equality instead of loose_equality for ===
checks
...
(`=` is strict equality, `~` is loose equality)
2021-09-06 21:44:19 -04:00
Tyson Andre
f69a255611
Fix false positive ParadoxicalCondition in negation of in_array
...
For #6439
2021-09-06 21:15:04 -04:00
Bruce Weirdan
7b11024886
Flag invalid backing types for enums
...
Fixes vimeo/psalm#6428
2021-09-05 20:12:24 +03:00
Bruce Weirdan
5dfd157d72
Merge pull request #6420 from orklah/ternary-override-type
...
Ternary override type when reassigning
2021-09-04 21:58:32 +03:00
Bruce Weirdan
b710aab148
Merge pull request #6419 from TysonAndre/in_array-fix
2021-09-04 21:56:36 +03:00
Bruce Weirdan
3a3fde332e
Merge pull request #6392 from orklah/control-action-test
2021-09-04 21:38:08 +03:00
orklah
0825f220fe
allow ternary to override previous type when reassigning
2021-09-04 20:22:06 +02:00
Tyson Andre
58e7ae1809
Also support non-literal types in strict in_array() check
...
Modified approach to #6396 by orklah
Fixes #6333
Co-Authored-By: orklah <ronan_morin@hotmail.com>
2021-09-04 12:34:49 -04:00
Bruce Weirdan
d9ceb8779f
Merge pull request #6398 from orklah/array_is_list
2021-09-04 15:55:23 +03:00
orklah
f9b37cea5b
name error
2021-09-04 14:08:04 +02:00
orklah
c8cf503367
introduce isAlwaysFalsy and isAlwaysTruthy
2021-09-04 13:56:13 +02:00
orklah
9cd8917b88
create callmap for 8.1 and introduce array_is_list
2021-09-04 13:25:23 +02:00
orklah
e99c1951ae
Make Psalm understand infinite while loop in control actions
2021-09-02 22:28:01 +02:00
Bruce Weirdan
a655ca81c1
Merge pull request #6391 from ro0NL/6388
2021-09-02 23:23:32 +03:00
orklah
854858a3bc
this should have less impact
2021-09-02 20:55:50 +02:00
Roland Franssen :)
27faf9502e
😓
2021-09-02 20:39:03 +02:00
Roland Franssen :)
a4356089ef
fix
2021-09-02 20:37:21 +02:00
Roland Franssen :)
4bf4d8e451
Forbid empty()
2021-09-02 20:32:05 +02:00
orklah
58e578e6a7
fix Generator giving templates to Iterator
2021-09-02 20:12:32 +02:00
Bruce Weirdan
eb973ab2e1
Merge pull request #6335 from boesing/bugfix/recursive-class-aliases
2021-08-31 23:51:19 +03:00
Bruce Weirdan
b713140cc1
Merge pull request #6326 from piporoid/issue/2164
...
Prevent @property annotations on class properties
2021-08-31 23:46:56 +03:00
Bruce Weirdan
cbcc38aab8
Merge pull request #6339 from niconoe-/allow-object-on-array_walk
2021-08-31 23:45:10 +03:00
Bruce Weirdan
103b2b7244
Warn about array_walk_recursive over objects
2021-08-31 23:18:20 +03:00