adrew
c0ca383020
Contextual inference for closure param types
2021-12-27 19:35:37 +03:00
sji
1c07813627
align handling of @psalm-internal
2021-12-27 02:31:14 +02:00
sji
a90456ed8b
trim whitespaces in namespaces specified at @psalm-internal
2021-12-27 02:31:11 +02:00
adrew
63a1c71c83
Remove trailing comma
2021-12-27 00:45:25 +02:00
adrew
d6d0fc6704
Remove undefined variables
2021-12-27 00:45:25 +02:00
adrew
2e4d75d6bd
Fix closure param type inference in generic context
2021-12-27 00:45:22 +02:00
Bruce Weirdan
fb56d5ce58
Merge pull request #7210 from vstm/improve-cli-utils-argv-handling
2021-12-27 00:35:32 +02:00
Bruce Weirdan
45c49b570a
Merge pull request #7211 from johnstevenson/xdebug-handler-3
2021-12-26 23:21:51 +02:00
Bruce Weirdan
13de27bb2f
Restore suppression for older XdebugHandler versions
2021-12-26 23:05:02 +02:00
John Stevenson
1cb58ad689
Keep XdebugHandler version 1
2021-12-26 23:00:53 +02:00
John Stevenson
015cc22fa7
Add XdebugHandler version 3
2021-12-26 23:00:50 +02:00
orklah
d4fcb7f61c
handle literal equality with integer ranges
2021-12-26 21:09:27 +01:00
Bruce Weirdan
9387942463
Use strpos
instead of str_contains
...
Fixes vimeo/psalm#7219 (str_contains was added in PHP 8)
2021-12-26 09:22:39 +02:00
Bruce Weirdan
08413d71bb
Restore attributes in ClassConstantStorage
...
This partially fixes BC break introduced in vimeo/psalm#7129
2021-12-26 02:24:01 +02:00
Matthew Brown
18c790eb99
Remove never-used equality flags
2021-12-24 14:05:44 +00:00
Matthew Brown
4dfc7ce6ee
Prevent unnecessary construction of union types during truthiness checks
2021-12-24 13:31:09 +00:00
Matthew Brown
75e4e0b9a7
Revert "Inline possibly_undefined checks"
...
This reverts commit e2a01673b7
.
This change was short-sighted
2021-12-24 13:15:30 +00:00
Matthew Brown
e2a01673b7
Inline possibly_undefined checks
...
These don’t really belong in truthiness methods, as possibly_undefined is a weird meta state
2021-12-24 13:10:19 +00:00
Stefan Vetsch
c3752b4a2b
Fix psalm issues
2021-12-24 10:59:39 +01:00
Stefan Vetsch
5331091f5e
Simplify argv handling, the first element is always the script name
2021-12-24 10:05:52 +01:00
orklah
2827c3e87b
Merge pull request #7203 from orklah/6389
...
flag the context as "inside_conditional" when analyzing leftover cases to prevent emitting unused error
2021-12-23 22:22:46 +01:00
orklah
79a97507d7
Merge pull request #7201 from dvz/early-file-filtering
...
Add early file filtering to `FileProvider::getFilesInDir()`
2021-12-23 22:19:39 +01:00
orklah
2c9541c1ed
flag the context as "inside_conditional" when analyzing leftover cases to prevent emitting unused error
2021-12-23 22:18:27 +01:00
Matthew Brown
2a92db8fad
Remove unused in-array assertions
...
These assertions cannot be parsed, since the `in-array` assertion handler always tries to convert assertions to a type
2021-12-22 19:47:20 +00:00
Tomasz Mlynski
c94364631b
Normalize variable name
2021-12-22 20:23:11 +01:00
Tomasz Mlynski
b3da242e78
Remove redundant projectDirs/extraDirs checks
2021-12-22 19:49:12 +01:00
Tomasz Mlynski
a514df2bb7
Use callable to filter files in FileProvider::getFilesInDir()
2021-12-22 19:47:57 +01:00
Philip Hofstetter
e8e968e8c2
recognize Deprecated attribute on enum cases
...
just like with properties, this recognizes both `Psalm\Deprecated` and
`JetBrains\PhpStorm\Deprecated`
2021-12-22 06:16:42 +01:00
Philip Hofstetter
d45cb64827
allow marking enum cases as @deprecated
2021-12-22 06:16:42 +01:00
orklah
cc9111ff48
Merge pull request #7161 from dvz/improve-project-files-discovery
...
Improve project files discovery performance
2021-12-21 22:31:39 +01:00
orklah
ca25b0f815
always unflag before leaving a analyzer
2021-12-21 18:30:29 +01:00
orklah
b1a1c65714
CS changes
2021-12-21 18:30:29 +01:00
orklah
56369a7ba6
fix wrong handling of flags in context
2021-12-21 18:30:29 +01:00
orklah
1eca2c32ae
only emit PossiblyNullArrayAccess if there was no successful destructuring
2021-12-20 22:48:27 +01:00
orklah
cc618bc916
allow successful destructuring to also be null if the source was nullable
2021-12-20 22:48:27 +01:00
Matthew Brown
89a1c5acbc
Fix faulty comparison with typed closure
2021-12-16 16:39:08 +00:00
Matthew Brown
84d677738e
Add docs for TypeComparisonResult::$type_coerced_from_scalar
2021-12-16 14:05:46 +00:00
Bruce Weirdan
7e97c5c84e
Merge pull request #7167 from AndrolGenhald/bugfix/7164-conflicting-fake-variable
2021-12-15 20:56:51 +02:00
orklah
16c0496d1c
Merge pull request #7157 from nowaja/master
...
ISSUE-5962 Fixed wrong line number for @method annotations
2021-12-15 18:37:26 +01:00
orklah
2dfe45a96e
Merge pull request #7152 from orklah/7109
...
display class-strings in keyed arrays syntax and allow using them for assertions
2021-12-15 18:36:40 +01:00
AndrolGenhald
d62bee3a9a
Rename $fake_var_id
to $fake_var_discriminator
.
2021-12-15 11:33:27 -06:00
AndrolGenhald
04c0243547
Fix trailing comma for PHP < 8.0.
2021-12-15 11:02:24 -06:00
AndrolGenhald
00749c84fc
Fix array_filter return type provider.
2021-12-15 09:58:36 -06:00
AndrolGenhald
b78a188061
Assign id to array_map fake variables to avoid conflicts and ensure removal ( fixes #7164 ).
2021-12-15 09:12:14 -06:00
rarila
97e6511fab
Set number of lines before and after namespace.
2021-12-15 04:58:32 +01:00
rarila
7df7c1f070
Format declare(strict_types=1)
2021-12-15 04:42:37 +01:00
orklah
0c1564f4b5
allow keyed array to contain class-strings
2021-12-15 00:51:59 +01:00
orklah
5ddf5df10d
Merge pull request #7155 from rarila/partials-conversion-2
...
Convertion of partials to full imports
2021-12-15 00:39:20 +01:00
sji
f7e402d75b
use igbinary for communication between processes if possible (depending on the configuration)
2021-12-15 03:30:41 +09:00
Tomasz Mlynski
4034959c1b
Use $directory_filter
with FileProvider::getFilesInDir()
to skip ignored directories
2021-12-14 18:25:09 +01:00
Tomasz Mlynski
d00c733c1f
Add callable $directory_filter
to FileProvider::getFilesInDir()
2021-12-14 18:22:47 +01:00
Tomasz Mlynski
837075a378
Use cached ProjectAnalyzer::$project_files
to build list of changed files
2021-12-14 17:57:19 +01:00
Tomasz Mlynski
ef23056ca0
Use FilesystemIterator::SKIP_DOTS
flag instead of DirectoryIterator::isDot()
2021-12-14 17:51:31 +01:00
Jakub Nowak
14c181f280
ISSUE-5962 Fixed wrong line number for @method annotations
2021-12-14 10:57:02 +01:00
ralila
6ee3d44092
Conversion of misc
2021-12-14 02:52:44 +01:00
ralila
3cbfdd5e37
Conversion of Psalm\Internal\LanguageServer
2021-12-14 02:31:27 +01:00
ralila
b5cf7bf170
Conversion of Psalm\Internal\Provider\
2021-12-14 02:31:27 +01:00
ralila
19b2a64ce8
Conversion of Psalm\Internal\Analyzer\**\*Analyzer
2021-12-14 02:31:26 +01:00
ralila
34857c2eee
Conversion of AdvancedJsonRpc\*
2021-12-14 02:31:26 +01:00
ralila
c0adde8f45
Conversion of Psalm\CodeLocation\DocblockTypeLocation|Raw
2021-12-14 02:31:26 +01:00
rarila
1c298c4605
Conversion of Psalm\Type
2021-12-14 02:31:22 +01:00
ralila
e32af3c05a
Conversion of Psalm\Type\Atomic
2021-12-14 02:26:28 +01:00
ralila
b9adc77a19
Conversion of Psalm\Plugin\EventHandler
2021-12-14 02:08:35 +01:00
ralila
fed7d1ef3b
Conversion of Psalm\Plugin\Hook\*Interface
2021-12-14 02:08:35 +01:00
ralila
e170619d10
Conversion of Psalm\Internal\Scanner\UnresolvedConstant
2021-12-14 02:08:34 +01:00
ralila
84e2de888b
Conversion of Psalm\Internal\Type\TypeAlias
2021-12-14 02:08:34 +01:00
ralila
553c22f8ab
Conversion of Psalm\Internal\Type\ParseTree
2021-12-14 02:08:34 +01:00
ralila
7961130469
Conversion of Psalm\Plugin\EventHandler\Event
2021-12-14 02:08:34 +01:00
ralila
1e909d3304
Conversion of Psalm\Internal\Provider\ReturnTypeProvider
2021-12-14 02:08:12 +01:00
Mathieu Rochette
39fb4222d5
in_array returns false in strict mode if types are incompatibles
...
see #5552
2021-12-13 00:00:53 +01:00
adrew
a8d23538b7
Fix closure param type inference with named params
2021-12-12 13:17:15 +03:00
Bruce Weirdan
41ca7f7f7a
Merge pull request #7136 from klimick/forbid-positional-args-after-named
2021-12-12 02:22:51 +02:00
Bruce Weirdan
e08a4f2a2a
Drop unused use
2021-12-12 01:58:45 +02:00
orklah
f79f857ded
Merge pull request #7133 from AndrolGenhald/remove-unused-suppressed
...
Allow suppressing UnusedPsalmSuppress, remove unused suppressions.
2021-12-11 23:24:31 +01:00
orklah
b6638412b1
Merge pull request #7082 from dvz/fix-parser-cache-maintenance
...
Fix parser cache files maintenance
2021-12-11 23:14:30 +01:00
AndrolGenhald
225af970cc
Add comments explaining condition for UnusedPsalmSuppress.
2021-12-11 16:14:25 -06:00
orklah
6632ddf884
Merge pull request #7135 from klimick/fix-closure-param-type-inference
...
Fix type inference of closure params
2021-12-11 23:10:32 +01:00
orklah
50cc629a43
fix cs
2021-12-11 23:03:10 +01:00
orklah
a1268d94d5
fix some more expressions that can be replaced by getSingleAtomic
2021-12-11 22:37:44 +01:00
AndrolGenhald
684cbfeab9
Add back suppressions for undefined constants on Windows.
2021-12-11 15:37:09 -06:00
adrew
6cf2e31c4a
Forbid positional arg after named arg
2021-12-11 23:37:15 +03:00
adrew
989c3ada2e
Fix type inference of closure params
2021-12-11 22:51:18 +03:00
AndrolGenhald
23b781163a
Use getSingleAtomic() instead of array_values(getAtomicTypes())[0].
2021-12-11 13:44:34 -06:00
AndrolGenhald
bfe7f96b56
Allow suppressing UnusedPsalmSuppress, remove unused suppressions.
2021-12-11 13:23:00 -06:00
orklah
0ba5b0b30a
Merge pull request #7130 from AndrolGenhald/bugfix/fix-class-property-suppression
...
Class property issue suppression fixes.
2021-12-11 19:12:49 +01:00
AndrolGenhald
51d9652b70
Class property issue suppression fixes.
...
Fix @psalm-suppress and @psalm-allow-private-mutation being ignored if nothing else is in the docblock.
Fix @psalm-suppress not allowing extra text after the issue name.
Fix PossiblyUnusedProperty and UnusedProperty suppression not working at the property level.
Fix MissingPropertyType suppression not working at the property level.
2021-12-11 11:45:06 -06:00
Matthew Brown
4229045c23
Remove array properties that are never read
2021-12-11 11:55:37 -05:00
Matthew Brown
b558748db2
Detect unused properties that are written to inside arrays
2021-12-11 11:42:05 -05:00
Matthew Brown
19ae9e81d2
Remove property that is only written to but never used
2021-12-11 08:51:12 -05:00
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