Matt Brown
6f298d2af2
Fix phpcs violations
2022-09-13 12:33:47 -04:00
kkmuffme
8ac86f0a4d
use consistent race condition dir creation code in all places in cache
2022-09-11 10:28:16 +02:00
kkmuffme
4726454f49
update leftover md5 in provider to commonly used hash
...
Revert "update leftover md5 in provider to commonly used hash"
This reverts commit 66337ecf50446dca8650a0812ebfe516d1993e06.
partially put back
Update StatementsProvider.php
2022-09-11 10:22:48 +02:00
kkmuffme
8da5f5eb1a
use exceptions instead of error_log for ParserCacheProvider
...
* use exceptions instead of error_log for ParserCacheProvider like all other cache providers do
* remove duplicate code in ParserCacheProvider
* use same hash as other cache providers
* update Config.php cache directory creation to use same code as ParserCacheProvider
2022-09-11 10:22:48 +02:00
Vincent Langlet
6bc714c867
Add support for callable in array_reduce
2022-08-24 16:04:22 +02:00
kkmuffme
8ca594a34d
always use lock when writing/reading cache data to/from file
2022-08-11 13:12:47 +02:00
Bruce Weirdan
58e87fa5e0
Applied ArraySpreadInsteadOfArrayMergeRector (take 2)
2022-07-29 18:17:21 -04:00
AndrolGenhald
ba6270c06a
Fix type reconciliation breaking Context::$references_in_scope ( fixes #8289 ).
2022-07-21 14:27:21 -05:00
kkmuffme
bb760a2224
fix race conditions causing notices if directory does not exist
2022-07-21 11:36:16 +02:00
kkmuffme
a77f6fca12
use error_log
2022-07-10 12:04:42 +02:00
kkmuffme
7742d8a903
use lock to fix race condition
2022-07-10 10:03:18 +02:00
AndrolGenhald
285740a753
Merge branch '4.x'
2022-07-07 15:01:38 -05:00
kkmuffme
90586083e6
check if file in cache already before adding
...
* reduces I/O by 30%
* minimal performance improvement (<0.5%)
2022-06-28 20:46:23 +02:00
kkmuffme
9082eab915
improve cache hash performance
...
* do not concatenate with timestamp as this is slow, since $file_contents may be big
* use file contents not file path for cache hash only to ensure it works if file_path not set but file_content is
* improves performance by ~5%
2022-06-28 20:45:03 +02:00
Tim Düsterhus
31ad16d29c
Stop using deprecated string interpolation syntax in StatementsProvider.php
...
This fixed the following PHP 8.2 deprecation:
> Uncaught RuntimeException: PHP Error: Using ${var} in strings is deprecated, use {$var} instead in …/vimeo/psalm/src/Psalm/Internal/Provider/StatementsProvider.php:140
see: https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation
2022-06-27 23:41:51 +02:00
orklah
b3038f0936
Merge pull request #8164 from AndrolGenhald/encapsed-literal-strings
...
Encapsed literal strings
2022-06-26 12:52:33 +02:00
AndrolGenhald
b671117417
Improve @psalm-internal and prevent usage of IssueBuffer::add().
2022-06-25 02:09:40 -05:00
AndrolGenhald
2559222f67
More interpolation and concatenation improvements.
2022-06-24 19:22:59 -05:00
AndrolGenhald
34322b79dd
Fix suppression comment.
2022-06-06 16:19:27 -05:00
AndrolGenhald
c271b1245e
Fix possibly empty array shape appearing non-empty ( fixes #8048 ).
2022-06-02 14:00:52 -05:00
Bruce Weirdan
242ee344ec
CS fix
2022-05-28 16:26:08 -04:00
Bruce Weirdan
e0acf22e40
Merge branch '4.x' into update-master
2022-05-28 14:49:12 -04:00
orklah
06d8e3e399
Merge pull request #8011 from kkmuffme/performance-only-load-files-once
...
Performance only load files once
2022-05-26 18:03:08 +02:00
orklah
d94f56a88a
Merge pull request #8007 from kkmuffme/add-missing-igbinary-serialize-code
...
igbinary_serialize code was missing in file
2022-05-26 17:57:02 +02:00
kkmuffme
278e8777d9
dont strolower filename, since file names on linux are case sensitive
2022-05-25 14:12:15 +02:00
kkmuffme
06178d0a6b
only load files once
...
* use static to keep opened files with content
* move position of file cache population to the place where we read files to ensure cache always gets populated and not on open only (since it's called directly in some places)
2022-05-25 13:53:32 +02:00
kkmuffme
5d8b5d197d
micro-optimize condition
...
https://github.com/vimeo/psalm/pull/7997#pullrequestreview-983975049
2022-05-25 11:25:19 +02:00
kkmuffme
ed0db0f7ce
igbinary_serialize code was missing in file
2022-05-25 10:52:41 +02:00
kkmuffme
acffb851f6
debug CI
2022-05-24 10:00:54 +02:00
kkmuffme
c1cef60e21
change cache hash type for better performance
2022-05-24 09:59:47 +02:00
Matt Brown
fccc366c1e
Merge pull request #7887 from ging-dev/lsp-fixes
...
improve LSP
2022-04-27 10:13:17 -04:00
Matt Brown
84598077f8
better type safety and inference
2022-04-27 01:51:23 -04:00
Matt Brown
5b91506926
cache statements even without persistent parser cache
2022-04-27 01:50:13 -04:00
Matt Brown
9cc2af56b4
Support Stringable before PhpToken autoloading
2022-04-27 01:36:17 -04:00
Vitaliy Ognev
6afdb0d9b6
better type safety and inference
2022-04-18 21:00:20 +03:00
Vitaliy Ognev
1dc2b3b026
cache statements even without persistent parser cache
2022-04-18 10:26:56 +03:00
Aleksandr Zhuravlev
b4fdc3e326
Made most of callbacks static. Reworked some array_map() into foreach()
2022-04-09 21:58:26 +12:00
Mateusz Cholewka
483d35980a
check is value for sure is null
2022-03-07 14:07:16 +01:00
Mateusz Cholewka
d53f57b5f7
wrap row in union again
...
From: https://github.com/vimeo/psalm/pull/7760#discussion_r820264671
$result_element_type should be a Union, $row_shape is an Atomic
(a part of a Union). new Union([$row_shape]); should be ok
2022-03-06 21:28:48 +01:00
Mateusz Cholewka
56e65fd5ba
skip creating unnecessary union
2022-03-06 17:07:56 +01:00
Mateusz Cholewka
88d49b9923
provide array column type for null column
2022-03-06 15:44:56 +01:00
Bruce Weirdan
997bded2e3
Merge branch '4.x' into upstream-master
2022-02-21 01:08:21 +02:00
AndrolGenhald
9310a4ff5a
Fix issues with int range unpacking and with min/max.
2022-02-18 15:55:26 -06:00
AndrolGenhald
ea2f452c25
Analyze attribute statements instead of constructing virtual statements.
2022-02-18 08:18:34 -06:00
orklah
5f1b796af9
redundant condition
2022-02-13 19:38:44 +01:00
Bruce Weirdan
4ee8a80a17
Use array_fill_keys
...
There was a number of calls to `array_map(fn()=>true, array_flip($array))` that got replaced with a simpler (and more performant) `array_fill_keys($array, true)`
2022-02-13 07:09:28 +02:00
Bruce Weirdan
7c344366a3
Fix RedundantCondition
2022-02-10 01:44:50 +02:00
Matthew Brown
3a298d028e
Rename getArrayVarId to getExtendedVarId
2022-02-04 12:49:12 -05:00
orklah
2e01e9b7cd
Merge pull request #7396 from Patrick-Remy/feat/key-of-value-of-improvements
...
feat: make key-of/value-of usable with non-const arrays
2022-01-31 21:39:01 +01:00
orklah
4609bc4e25
Merge pull request #7471 from klimick/function-dynamic-storage-provider
...
Function dynamic storage provider
2022-01-28 18:46:26 +01:00
adrew
1a8367a273
Add some doc about DynamicFunctionStorageProvider
2022-01-28 15:18:30 +03:00
adrew
dd0e00e153
Renaming all occurrences of "function dynamic storage" to "dynamic function storage"
2022-01-28 15:18:30 +03:00
adrew
e5dae6a901
Prevent first-class-callable handling with FunctionDynamicStorageProvider
2022-01-28 15:18:30 +03:00
adrew
9b383a5a19
Try to create public api for new hook
2022-01-28 15:18:30 +03:00
adrew
a4e56ae288
Fix method name
2022-01-28 15:18:30 +03:00
adrew
ce1cec5d3a
Using FuncCall instead of list<Arg> in FunctionDynamicStorageProvider for more flexibility
2022-01-28 15:18:30 +03:00
adrew
e93c90bc89
Fix double run FunctionDynamicStorageProvider for already analysed function
2022-01-28 15:18:29 +03:00
adrew
438be03414
Ability to provide dynamically created function storage via plugin hook
2022-01-28 15:18:29 +03:00
AndrolGenhald
2fe4fc397c
Enable extensions based on composer.json instead of those loaded at runtime ( fixes #5482 ).
2022-01-27 16:30:14 -06:00
Patrick Remy
8cd5ccd076
feat: make value-of<T>
capable for template types
2022-01-27 22:28:40 +01:00
orklah
9168cef2d4
Merge remote-tracking branch 'upstream/4.x' into upstream-master6
2022-01-26 21:06:25 +01:00
AndrolGenhald
57b99be519
Improve reference support for assertions, array offsets, and properties.
2022-01-26 12:55:47 -06:00
orklah
3f799fc5fd
fix CS issue
2022-01-25 20:58:40 +01:00
ElisDN
9f01c16ae9
Fix array_replace type
2022-01-25 15:22:50 +03:00
orklah
63b802bff4
remove TPositiveInt
2022-01-23 23:49:23 +01:00
Matthew Brown
0a81f8cd6c
Use objects, not strings, for assertions ( #7410 )
...
* Use objects, not strings, for assertions
* Remove unnecessary param
* Remove some unnecessary checks
* Fix bad find/replace
* Add note about assertions no longer stored as strings in UPGRADING.md
2022-01-20 17:33:06 -05:00
orklah
ac858e353d
create a return type provider for mb_internal_encoding
2022-01-19 21:45:44 +01:00
orklah
477c0113c2
Merge remote-tracking branch 'upstream/4.x' into upstream-master3
2022-01-18 18:37:04 +01:00
Ricardo Boss
26dd4c5b8f
Try to provide literal int types when possible ( fixes #6966 ) ( #7071 )
...
* Fixed vimeo/psalm#6966
* Only accept >= 0 values for mode argument in round()
* Made round() only return float or literal float values and remove unneeded test
* Registered RoundReturnTypeProvider
* Updated cast analyzer to handle single string literal int values as literal ints
* Fixed psalm errors
* Fix invalid property accesses
* Addressed comments
* Added Tests
* Marked RoundReturnTypeProvider as internal
* Fixed CS
2022-01-16 21:33:04 +01:00
orklah
bf9845a4aa
Psalm can't be sure get_object_vars will return an empty array unless object is known AND final
2022-01-15 21:36:46 +01:00
orklah
b633619a2c
Merge remote-tracking branch 'upstream/4.x' into upstream-master
2022-01-14 21:01:25 +01:00
orklah
65efab3a8d
keep class-strings through array_merge
2022-01-09 15:48:58 +01:00
Bruce Weirdan
1a1b5a9e6a
Merge branch '4.x' into upstream-master
2022-01-08 23:38:29 +02:00
orklah
9d225086e9
replace empty checks on Union with dedicated method
2022-01-07 21:27:45 +01:00
Bruce Weirdan
8726065d21
Applied ClosureToArrowFunctionRector
2022-01-06 00:48:04 +02:00
Bruce Weirdan
94395f18a4
Applied JsonThrowOnErrorRector
2022-01-05 19:32:43 +02:00
Bruce Weirdan
dd09450092
Applied NullCoalescingOperatorRector
2022-01-05 13:09:37 +02:00
Bruce Weirdan
5758d31161
Apply literal number separator rector
...
I opted for customary 3-digit groups, except version id, where 2-digit
groups are used to match the version id encoding.
2022-01-05 01:00:05 +02:00
Bruce Weirdan
f5dc2ee964
Merge branch '4.x' into upstream-master
2022-01-04 19:42:08 +02:00
Fabien Villepinte
c42f3d51bd
Fix typo
2022-01-04 16:27:06 +01:00
Fabien Villepinte
2f3af4a5bc
Remove unused import
2022-01-04 16:13:48 +01:00
Fabien Villepinte
1fa6b612b1
Fix parse_url() return type
2022-01-04 16:09:18 +01:00
Bruce Weirdan
2e24a16cbb
Dropped legacy plugin API
2022-01-03 18:18:44 +02:00
Bruce Weirdan
b924032850
Mark internal classes @internal
2022-01-03 09:33:22 +02:00
orklah
d912663da4
remove isEmpty
2022-01-03 04:10:41 +02:00
orklah
8d6b781b3e
use consistent way to compare php version
2022-01-02 13:35:43 +02:00
orklah
5f6bb39888
if with common parts
2021-12-27 23:08:19 +01:00
orklah
2baf3b560a
unnecessary statements
2021-12-27 23:00:40 +01:00
orklah
9029e1d613
remove always true/false conditions
2021-12-27 19:59:11 +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
Tomasz Mlynski
a514df2bb7
Use callable to filter files in FileProvider::getFilesInDir()
2021-12-22 19:47:57 +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
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
Tomasz Mlynski
d00c733c1f
Add callable $directory_filter
to FileProvider::getFilesInDir()
2021-12-14 18:22:47 +01:00
Tomasz Mlynski
ef23056ca0
Use FilesystemIterator::SKIP_DOTS
flag instead of DirectoryIterator::isDot()
2021-12-14 17:51:31 +01:00