Evan Shaw
82090f58c5
Handle included directory paths without crashing
...
If an include or require resolves to a directory, this now raises a
MissingFile error rather than throwing an unhandled UnexpectedValueException.
2023-04-24 11:09:48 +12:00
klimick
88c444a8cc
Contextual closure arg inference for class methods
2023-04-23 23:40:44 +03:00
abead05303
Fix syntax
2023-04-21 12:38:02 +02:00
b8672949ec
Fix #9692
2023-04-21 12:33:08 +02:00
orklah
a97b6b8a5e
Merge pull request #9685 from Nicelocal/avoid_wrong_assertions
...
Avoid wrong assertions when working with objects returned by methods
2023-04-21 11:34:15 +02:00
orklah
b781bd922e
Merge pull request #9679 from robchett/mixedAssignment_from_template_var
...
Don't throw UnnecesseryVarAnnotation when hinting a mixed template var
2023-04-20 23:52:52 +02:00
RobChett
74c1576b9c
Return a non-empty-(lowercase-)string from mb_strtolower
2023-04-20 15:54:13 +01:00
efb5aed879
Avoid wrong assertions when working with objects returned by methods
2023-04-20 13:00:28 +02:00
RobChett
4d9d7cebd9
Add support for @psalm-no-seal-properties and @psalm-no-seal-methods
2023-04-20 07:47:50 +01:00
RobChett
0a40286830
Don't throw UnnecesseryVarAnnotation when hinting a mixed template var
2023-04-19 21:23:40 +01:00
WhizSid
782735e8b2
Fixed crash issue when using multiple literals for array_splice
2023-04-19 00:38:35 +05:30
adrew
ee0395247f
Don't expand template for property fetch on TObjectWithProperties
2023-04-17 23:18:03 +03:00
orklah
a9bc87e729
Merge pull request #9656 from boesing/bugfix/issue-8981
...
(re-)implement object-shape assertions
2023-04-16 21:17:53 +02:00
Maximilian Bösing
66afbb1c33
feature: (re-)implement object-shape assertions
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2023-04-15 02:36:10 +02:00
Maximilian Bösing
ad5631497d
feature: provide support for templated value-of
enum values
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2023-04-15 00:38:12 +02:00
orklah
3e50f68794
Merge pull request #9623 from klimick/contextual-inference-for-const-callable
...
Contextual inference for const callable
2023-04-14 16:22:53 +02:00
orklah
cee88f2c4b
Merge pull request #9643 from whizsid/array_splice
...
Fixed non empty arg issue in array_splice function
2023-04-13 19:24:16 +02:00
WhizSid
02f8f11736
Handle empty array possibilities from array_splice
2023-04-13 14:37:09 +05:30
tuqqu
ed2285f50a
Flatten match arm conditions to check conditions independently
2023-04-13 01:30:14 +02:00
WhizSid
ae67589463
Fixed CI
2023-04-13 01:14:49 +05:30
WhizSid
b19c263fe5
Fixed non empty arg issue in array_splice function
2023-04-13 00:34:29 +05:30
Maximilian Bösing
6d5f999c75
bugfix: do not report required closure arguments as unused
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2023-04-10 01:54:03 +02:00
orklah
763116fab3
Merge pull request #9599 from boesing/feature/callable-object-intersection
...
Introduce callable object intersection
2023-04-09 11:48:45 +02:00
andrew
d9ad8b420e
Ignore specific callables (callable-array, callable-string) in the HighOrderFunctionArgHandler
2023-04-07 14:16:41 +03:00
andrew
2f7a7178ca
Docs for HighOrderFunctionArgHandler::remapLowerBounds
2023-04-06 18:23:50 +03:00
andrew
7fba401fdd
Callable type expansion for more readable error message
2023-04-06 15:29:59 +03:00
andrew
0456ef82a5
Prevent callable arg type enhancement for simple callable
2023-04-06 10:43:50 +03:00
andrew
d190b751fb
Cleanup HighOrderFunctionArgHandler
2023-04-05 18:10:21 +03:00
adrew
a3aed2fc61
Analyse const callable like first-class-callable
2023-04-04 22:17:17 +03:00
Johannes Boost
865e183fa0
fix: fix phpcs errors
2023-04-04 17:59:50 +02:00
Johannes
37976aa117
fix: treat includes starting with '.' and '..' correct
2023-04-04 17:28:45 +02:00
Maximilian Bösing
ee68f16bb6
feature: introduce callable-object intersection type object&callable
...
This allows devs to annotate that they expect a callable object.
In addition to this, it can also verify return and argument types.
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2023-04-03 23:23:28 +02:00
orklah
f78bf32417
Merge pull request #9570 from klimick/first-class-callable-contextual-inference
...
Contextual inference for first-class-callable
2023-03-28 20:40:04 +02:00
orklah
6ca2f090d6
Merge pull request #9534 from fluffycondor/php8-str-function-signatures
...
Improve PHP8 str_* function signatures
2023-03-27 21:00:33 +02:00
andrew
2b5faaa02f
Fix psalm errors
2023-03-27 18:37:11 +03:00
andrew
72e5709ef2
Handle partially templated first-class-callables
2023-03-27 18:29:22 +03:00
adrew
62a79eeff3
Test with invalid first-class-callable
2023-03-26 22:47:17 +03:00
adrew
f26c16d2ab
Contextually resolve templates of first-class-callable arg during call
2023-03-26 19:07:20 +03:00
Bruce Weirdan
2a84a63483
Prevent assertion leaks from else
...
Fixes vimeo/psalm#9395
2023-03-18 02:09:56 -04:00
fluffycondor
9730f2c073
Don't report InvalidLiteralArgument for paths
2023-03-18 00:05:44 +06:00
Paolo Conizzoli
3ccb1eaffe
Fix MissingThrowsDocblock when documented interface is extended by thrown exception interface
2023-03-16 12:01:16 +01:00
Bruce Weirdan
70a024f5e3
Merge pull request #9519 from edsrzf/eval-inside-call
2023-03-15 15:47:58 -04:00
Evan Shaw
37ff3a0657
Remove always-empty ClassAnalyzer leftover_stmts array
2023-03-16 07:03:10 +13:00
Evan Shaw
ce3f7fccd6
Set inside_call for eval expressions
2023-03-15 22:06:36 +13:00
Bruce Weirdan
c7c0b79903
Merge branch 'master' into fix-integer-overflow-in-array-keys
2023-03-14 22:17:04 -04:00
orklah
293b7281f9
Merge pull request #8960 from tm1000/feature/upgrade-lsp-v5
...
WIP: Performance/Feature Improvements to the Language Server
2023-03-14 07:31:35 +01:00
Bruce Weirdan
4042036e8e
Drop misleading type
2023-03-12 20:12:19 -04:00
Bruce Weirdan
30369e826a
Correctly handle near-overflowing keys and flag autoincrement overflows
...
Co-authored-by: Maximilian Krög <maxi_kroeg@web.de>
2023-03-12 19:57:14 -04:00
Bruce Weirdan
0e9085f3e0
Handle overflow in SimpleTypeInferer as well
2023-03-12 17:47:42 -04:00
Bruce Weirdan
103aa019da
Fix integer overflow in array keys
...
Fixes vimeo/psalm#9498
2023-03-12 16:20:13 -04:00
Bruce Weirdan
8adaee61ad
Fix newly found issues
2023-03-11 05:23:49 -04:00
Bruce Weirdan
193a0dbe0e
Don't crash on unary minus overflow
...
Fixes vimeo/psalm#9464
2023-03-07 12:29:40 -04:00
Bruce Weirdan
36913b13d5
Support for readonly
classes
2023-03-03 04:04:12 -04:00
Andrew Nagy
7e9638b729
Merge branch 'master' of https://github.com/vimeo/psalm into feature/upgrade-lsp-v5
2023-03-02 18:10:13 +00:00
Andrew Nagy
6e109aadce
Merge tag '5.7.7' of https://github.com/vimeo/psalm into feature/upgrade-lsp-v5
2023-03-02 17:04:33 +00:00
Paweł Tomulik
78e6545d7f
fix #4460
2023-02-28 11:38:47 +01:00
ebakulin
67d26d3c51
added case with literal string
2023-02-28 00:22:34 +07:00
ebakulin
cf35b3ce0c
reworked one known operand case
2023-02-28 00:12:18 +07:00
ebakulin
31fcbd5f69
added case with one null type
2023-02-27 22:03:01 +07:00
Evan Shaw
f7eaa5daec
Preserve PossiblyUndefinedVariable when fixing UnusedVariable
2023-02-25 20:08:01 +13:00
Bruce Weirdan
caac14c4a4
Consistently report docblock issues on all classlikes
...
Fixes vimeo/psalm#9365
2023-02-24 03:31:00 -04:00
Bruce Weirdan
3f52ded9c3
Correctly process use aliases in @psalm-scope-this
...
Fixes vimeo/psalm#9386
2023-02-24 00:53:36 -04:00
Bruce Weirdan
2315c98a73
Merge pull request #9381 from weirdan/enforce-literal-string-length-limit
2023-02-23 16:47:53 -04:00
Yannick Gottschalk
f026226aa3
Fixes #9384
2023-02-23 17:23:46 +01:00
Bruce Weirdan
5dec7f3dc3
Enforce literal string length limit
...
Fixes vimeo/psalm#9376
Ensures:
* that we never have a literal string exceeding the length limit
* that we call string interpreter for all literal strings
2023-02-23 04:01:29 -04:00
Bruce Weirdan
d0a14005a8
Merge pull request #9380 from weirdan/array-in-foreach-is-not-empty
2023-02-23 02:20:46 -04:00
Bruce Weirdan
1769f8b9a4
Refine arrays in foreach
loops to non-empty-array
...
Fixes vimeo/psalm#9378
2023-02-22 20:44:50 -04:00
Javier Sanahuja
aee3665014
Fixes
2023-02-22 23:55:27 +01:00
Javier Sanahuja
fa39366cb4
Code style fix
2023-02-22 23:19:47 +01:00
Javier Sanahuja
4f83324a91
Support sizeof alias of count
2023-02-22 23:11:10 +01:00
f665e719fb
Describe changes
2023-02-21 15:44:18 +01:00
575da79801
Fix #9363
2023-02-21 10:09:58 +01:00
Bruce Weirdan
ac86981a79
Revert " #7387 Add asserting non-empty-string by strlen"
...
This reverts commit 0ef7ec100a
.
2023-02-20 23:07:22 -04:00
88a3d288de
Workaround arm64 opcache bug ( fixes #9350 )
2023-02-20 12:49:59 +01:00
Bruce Weirdan
73bad8967d
Forbid first-class callables in new
...
It's an invalid construct in PHP, not rejected by PHPParser for some
reaason.
Fixes vimeo/psalm#9335
2023-02-19 04:18:32 -04:00
Evan Shaw
c8393bd50d
Fix language server first-class callable crashes
2023-02-19 14:18:17 +13:00
Bruce Weirdan
4f22c2e7c6
Propagate phantom classes to closure context
...
Fixes vimeo/psalm#9317
2023-02-18 01:52:10 -04:00
Bruce Weirdan
1c2bc49838
Forbid non-null defaults for callable parameters
...
Fixes vimeo/psalm#3284
2023-02-16 01:36:06 -04:00
Bruce Weirdan
e6aa63731d
Flag docblock parameters that have no counterparts in function signature
...
Fixes vimeo/psalm#3166
2023-02-15 22:04:26 -04:00
Bruce Weirdan
01911a06b7
Deprecate FunctionLikeStorage::$unused_docblock_params
...
Refs vimeo/psalm#3166
2023-02-15 21:29:20 -04:00
Bruce Weirdan
ee823619b8
Flag direct constructor calls
...
Fixes vimeo/psalm#2975
2023-02-15 20:14:00 -04:00
Bruce Weirdan
c28d96e25c
Fixed issue message for missing @psalm-external-mutation-free
...
Fixes vimeo/psalm#8604
2023-02-15 03:58:50 -04:00
Bruce Weirdan
2bb590feb6
Allow suppressing MissingThrowsDocblock
for individual exceptions
...
Fixes vimeo/psalm#8638
2023-02-15 03:29:02 -04:00
Bruce Weirdan
8c491e93e8
Flag class constant references where LHS is ordinary string
...
Fixes vimeo/psalm#2185
2023-02-15 02:57:00 -04:00
Bruce Weirdan
3f2ecaec7e
Allow @var
annotations on global vars
...
The actual code was extracted from `StaticAnalyzer`
Fixes vimeo/psalm#1111
2023-02-15 01:20:03 -04:00
Bruce Weirdan
39c992c255
Emit issues for calls to is_a(string, class-string, false)
...
Fixes vimeo/psalm#4092
2023-02-14 02:25:46 -04:00
Bruce Weirdan
873d79c5d7
Forbid overriding built-in enum methods
...
Fixes vimeo/psalm#9274
2023-02-13 00:37:59 -04:00
Bruce Weirdan
085e8f6fb2
Forbid implementing some interfaces
...
- `Throwable` can only be implemented when classes extend one of
`Exception` or `Error`
- `UnitEnum` and `BackedEnum` cannot be implemented by user-defined
classes
Refs vimeo/psalm#7722
2023-02-12 02:48:50 -04:00
Bruce Weirdan
954136679a
Fix crashes with invalid @psalm-check-type
syntax
...
Fixes vimeo/psalm#9201
2023-02-09 17:49:49 -04:00
Bruce Weirdan
7ae8f9f24c
Merge pull request #9250 from weirdan/dont-crash-on-unknown-exceptions-in-throws-docblock
...
Fixes https://github.com/vimeo/psalm/issues/9248
2023-02-09 03:34:11 -04:00
Bruce Weirdan
250d4d593e
Don't crash on unknown exceptions in @throws
docblock
...
Fixes vimeo/psalm#9248
2023-02-09 02:56:01 -04:00
Andrew Boyton
5d976900d1
Fix divide by a floating point zero
...
The code was failing when dividing by 0.0.
2023-02-09 11:55:06 +11:00
Bruce Weirdan
3c4a829f71
Fixed more CS issues
2023-02-07 11:20:02 -04:00
Matthew Brown
d450b40da8
Remove some logic that didn't need to be there ( #9209 )
...
* Remove check to see what breaks
* Simplify following logic
* Add tests from @kkmuffme‘s branch
* Reduce scope of fix
* Clean up logic a little
* Add failing test
* Improvements
* Fix for non-Paradoxical Condition result
2023-02-03 21:08:16 -05:00
Matt Brown
234787bcd6
Fix logic bugs caught by better elseif checks
2023-02-03 00:30:42 -05:00
orklah
54cd529642
Merge pull request #9170 from mmcev106/filter-var-pure
...
Added @psalm-pure to filter_var()
2023-02-02 23:39:06 +01:00
Bruce Weirdan
fb65c79079
Fix newly discovered CS issues
2023-02-02 12:19:22 -04:00
Mark McEver
77ea545244
Attempted to avoid a psalm warning that was not accurate
2023-02-01 15:50:36 -06:00
Mark McEver
b5781c34e8
Fixed a case where the conditional taint, specialize, & flow features were not playing nicely together
2023-02-01 15:41:52 -06:00
Leo Viezens
7966fd574a
Merge branch 'master' into master
2023-01-30 15:38:29 +01:00