Bruce Weirdan
80750fd579
Implement subtype checks for stringable-object
2022-11-10 19:55:36 -04:00
Bruce Weirdan
512ad832f3
TObjectWithProperties::$methods
have lowercase keys
...
Method names in PHP are case-insensitive.
2022-11-10 19:55:36 -04:00
Bruce Weirdan
d122cef1ca
Mark inferred mutation-free constructor as such
...
Previously Psalm treated those constructors as explicitly mutation-free,
and thus required descendant constructors to be explicitly marked too.
Fixes vimeo/psalm#8602
2022-11-10 19:55:25 -04:00
Bruce Weirdan
6effd1bd2d
Flag invalid enum case value types
...
Fixes vimeo/psalm#8267
2022-11-10 19:55:18 -04:00
Bruce Weirdan
290b65f6dd
Allow enum cases to reference constants
...
Fixes vimeo/psalm#8242
2022-11-10 19:54:45 -04:00
0038387252
Fix PSL e2e tests
2022-11-10 17:10:46 +01:00
Matthew Brown
d63da1f66e
Prevent array{a: Foo} going cleanly into array<Foo> ( #8691 )
...
* Prevent array{a: Foo} going cleanly into array<Foo>
* Add test for new behaviour
* Fix code style issues
* Allow unions to be cloned again
* Simplify params properties
2022-11-10 09:18:27 -05:00
Bruce Weirdan
d81543f83e
Emit DeprecatedInterface
when an interface is referenced in a generic
...
Fixes vimeo/psalm#8617
2022-11-08 20:34:08 -04:00
3c7e5be703
Mark as internal
2022-11-08 10:55:14 +01:00
65d6a469b6
Fix tests
2022-11-08 10:45:21 +01:00
fc00b6338a
Fix tests
2022-11-08 10:37:48 +01:00
940e00e57a
Fix
2022-11-08 10:26:28 +01:00
68a5511057
Merge remote-tracking branch 'origin/4.x' into HEAD
2022-11-08 10:25:04 +01:00
Vincent Langlet
6916d414e2
Add support for phpstan-param-out
2022-11-07 10:22:33 +01:00
1986c8b4a8
Add support for strict arrays, fix type alias intersection, fix array_is_list assertion on non-lists ( #8395 )
...
* Immutable CodeLocation
* Remove excess clones
* Remove external clones
* Remove leftover clones
* Fix final clone issue
* Immutable storages
* Refactoring
* Fixes
* Fixes
* Fix
* Fix
* Fixes
* Simplify
* Fixes
* Fix
* Fixes
* Update
* Fix
* Cache global types
* Fix
* Update
* Update
* Fixes
* Fixes
* Refactor
* Fixes
* Fix
* Fix
* More caching
* Fix
* Fix
* Update
* Update
* Fix
* Fixes
* Update
* Refactor
* Update
* Fixes
* Break one more test
* Fix
* FIx
* Fix
* Fix
* Fix
* Fix
* Improve performance and readability
* Equivalent logic
* Fixes
* Revert
* Revert "Revert"
This reverts commit f9175100c8452c80559234200663fd4c4f4dd889.
* Fix
* Fix reference bug
* Make default TypeVisitor immutable
* Bugfix
* Remove clones
* Partial refactoring
* Refactoring
* Fixes
* Fix
* Fixes
* Fixes
* cs-fix
* Fix final bugs
* Add test
* Misc fixes
* Update
* Fixes
* Experiment with removing different property
* revert "Experiment with removing different property"
This reverts commit ac1156e077fc4ea633530d51096d27b6e88bfdf9.
* Uniform naming
* Uniform naming
* Hack hotfix
* Clean up $_FILES ref #8621
* Undo hack, try fixing properly
* Helper method
* Remove redundant call
* Partially fix bugs
* Cleanup
* Change defaults
* Fix bug
* Fix (?, hope this doesn't break anything else)
* cs-fix
* Review fixes
* Bugfix
* Bugfix
* Improve logic
* Add support for list{} and callable-list{} types, properly implement array_is_list assertions (fixes #8389 )
* Default to sealed arrays
* Fix array_merge bug
* Fixes
* Fix
* Sealed type checks
* Properly infer properties-of and get_object_vars on final classes
* Fix array_map zipping
* Fix tests
* Fixes
* Fixes
* Fix more stuff
* Recursively resolve type aliases
* Fix typo
* Fixes
* Fix array_is_list assertion on keyed array
* Add BC docs
* Fixes
* fix
* Update
* Update
* Update
* Update
* Seal arrays with count assertions
* Fix #8528
* Fix
* Update
* Improve sealed array foreach logic
* get_object_vars on template properties
* Fix sealed array assertion reconciler logic
* Improved reconciler
* Add tests
* Single source of truth for test types
* Fix tests
* Fixup tests
* Fixup tests
* Fixup tests
* Update
* Fix tests
* Fix tests
* Final fixes
* Fixes
* Use list syntax only when needed
* Fix tests
* Cs-fix
* Update docs
* Update docs
* Update docs
* Update docs
* Update docs
* Document missing types
* Update docs
* Improve class-string-map docs
* Update
* Update
* I love working on psalm :)
* Keep arrays unsealed by default
* Fixup tests
* Fix syntax mistake
* cs-fix
* Fix typo
* Re-import missing types
* Keep strict types only in return types
* argc/argv fixes
* argc/argv fixes
* Fix test
* Comment-out valinor code, pinging @romm pls merge https://github.com/CuyZ/Valinor/pull/246 so we can add valinor to the psalm docs :)
2022-11-05 22:34:42 +01:00
orklah
205e8cc73e
Merge pull request #8670 from danog/fix_8669
...
Fix #8669
2022-11-05 22:29:37 +01:00
923f1d2eb7
Possible fix
2022-11-05 22:23:31 +01:00
5a44522efb
Fix #8669
2022-11-05 22:12:55 +01:00
Bruce Weirdan
81423dc12b
Remove argc
and argv
elements from $_ENV
...
Fixes vimeo/psalm#8662
2022-11-05 15:19:21 -04:00
da21229cab
Fix #8664
2022-11-05 19:15:46 +01:00
d0be59e16e
Immutable unions ( #8627 )
...
* Immutable CodeLocation
* Remove excess clones
* Remove external clones
* Remove leftover clones
* Fix final clone issue
* Immutable storages
* Refactoring
* Fixes
* Fixes
* Fix
* Fix
* Fixes
* Simplify
* Fixes
* Fix
* Fixes
* Update
* Fix
* Cache global types
* Fix
* Update
* Update
* Fixes
* Fixes
* Refactor
* Fixes
* Fix
* Fix
* More caching
* Fix
* Fix
* Update
* Update
* Fix
* Fixes
* Update
* Refactor
* Update
* Fixes
* Break one more test
* Fix
* FIx
* Fix
* Fix
* Fix
* Fix
* Improve performance and readability
* Equivalent logic
* Fixes
* Revert
* Revert "Revert"
This reverts commit f9175100c8452c80559234200663fd4c4f4dd889.
* Fix
* Fix reference bug
* Make default TypeVisitor immutable
* Bugfix
* Remove clones
* Partial refactoring
* Refactoring
* Fixes
* Fix
* Fixes
* Fixes
* cs-fix
* Fix final bugs
* Add test
* Misc fixes
* Update
* Fixes
* Experiment with removing different property
* revert "Experiment with removing different property"
This reverts commit ac1156e077fc4ea633530d51096d27b6e88bfdf9.
* Uniform naming
* Uniform naming
* Hack hotfix
* Clean up $_FILES ref #8621
* Undo hack, try fixing properly
* Helper method
* Remove redundant call
* Partially fix bugs
* Cleanup
* Change defaults
* Fix bug
* Fix (?, hope this doesn't break anything else)
* cs-fix
* Review fixes
* Bugfix
* Bugfix
* Improve logic
* Update
2022-11-04 19:04:23 +01:00
Arnout Boks
2387d5eef0
Mark hash_update functions as impure
...
This prevents Psalm from marking calls to them as UnusedFunctionCall.
2022-11-04 09:05:29 +01:00
orklah
3daad0c32d
Merge pull request #8652 from VincentLanglet/improveSerializeSupport
...
serialize is not pure for array of object
2022-11-03 20:29:09 +01:00
Vincent Langlet
c02ed9da0a
Fix cs
2022-11-03 20:24:15 +01:00
Vincent Langlet
fbaf6afb30
Try
2022-11-03 18:11:01 +01:00
Vincent Langlet
dc977964c6
Refacto
2022-11-03 16:05:40 +01:00
Vincent Langlet
6382af1c97
Add support for phpstan assertions
2022-11-03 14:26:27 +01:00
Vincent Langlet
4a27322144
serialize is not pure for array of object
2022-11-03 11:48:33 +01:00
Vincent Langlet
0bdfc4b60b
Mark serialize as impure only for object
2022-11-02 23:08:03 +01:00
Vincent Langlet
ef0a17ee11
Do not report serialize as unused
2022-11-02 22:52:42 +01:00
Alies Lapatsin
d9a08ec047
Add stubs for ext-random (PHP 8.2)
2022-11-02 15:59:56 +03:00
Fran Moreno
933caa8f69
Allow to set PHP 8.2
2022-11-01 16:25:03 +01:00
Alies Lapatsin
855eef9205
Increment PHP_MINOR_VERSION (to load delta for PHP 8.2)
2022-10-31 12:44:34 +03:00
kkmuffme
de52e42d5f
keep literal string for simple str_replace
2022-10-27 09:23:25 +02:00
kkmuffme
87eb83616e
add basename return type provider
...
Like dirname return type provider of https://github.com/vimeo/psalm/pull/8611
2022-10-26 13:03:53 +02:00
Thomas Gerbet
62e92fb0cf
Add stubs for ext-ffi
...
See #8612
2022-10-25 19:59:44 +02:00
Chauncey McAskill
0afd873787
Fix dirname return type provider
...
Changed:
- Replaced extraction of `$dir_level` literal value to be from the NodeTypeProvider instead of from the statement; based on similar logic in `RoundReturnTypeProvider`.
- Replaced `new` return type creation with `Type` method creation.
- Replaced `null` return with string type.
Fixed:
- Typo on variable name for extracted `StatementsSource`.
- Edge case where `$dir_level` is less than 1.
- Broken unit tests.
2022-10-23 12:11:58 -04:00
Chauncey McAskill
1dfadfa9ec
Add dirname return type provider
2022-10-23 11:56:02 -04:00
orklah
b739b67080
Merge pull request #8594 from kkmuffme/callable-invalidargument-required-param-mismatch-missing-error
...
ensure callbacks have the required number of params
2022-10-22 12:20:29 +02:00
kkmuffme
edeff148b4
handle variadic
2022-10-22 08:28:56 +02:00
orklah
48b8efde99
Merge pull request #8584 from boesing/feature/8521
...
Enhance type detection for internal php functions `key`, `current`, `end` and `reset`
2022-10-18 00:07:13 +02:00
kkmuffme
41fbb14586
fix wrong php version id in $_FILES
2022-10-17 23:05:50 +02:00
03f234456d
Fix
2022-10-17 20:31:11 +02:00
c9ff8c2c67
Prevent re-resolution of static
2022-10-17 20:31:11 +02:00
abb0e2e3f9
Fix #8560
2022-10-17 20:31:11 +02:00
Maximilian Bösing
7f35bff0d9
feature: enhance type detection for internal php functions key
, current
, end
and reset
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2022-10-17 20:24:40 +02:00
kkmuffme
25b01ce3a3
ensure callbacks have the required number of params
...
Fix https://github.com/vimeo/psalm/issues/8593
2022-10-17 16:03:55 +02:00
3b3afd5369
Fixes
2022-10-17 13:10:12 +02:00
7b6e09afc9
Merge branch 'merge_4.x' into immutable_readonly_3
2022-10-17 12:58:41 +02:00
1abade3c30
Skip
2022-10-17 12:14:07 +02:00
150be5ca22
Update
2022-10-17 10:45:18 +02:00
8518372cad
Fixes
2022-10-16 14:23:31 +02:00
34000ca90d
Fixes
2022-10-16 13:59:15 +02:00
4912651a9a
Fix
2022-10-16 13:48:45 +02:00
b79c43a288
Merge remote-tracking branch 'origin/4.x' into merge_4.x
2022-10-16 13:42:43 +02:00
748a74bb2c
Merge remote-tracking branch 'origin/4.x' into HEAD
2022-10-16 13:41:27 +02:00
Greg Hargreaves
b89ff32b7a
Remove duplicated numeric type declaration
2022-10-14 02:00:25 +01:00
Greg Hargreaves
06581ce4b0
Add additional checks for concat of non-empty strings to return non-falsy
2022-10-14 01:54:06 +01:00
a2b03e4f52
cs-fix
2022-10-13 13:54:18 +02:00
6e32dc02fc
Improvements
2022-10-13 13:53:03 +02:00
8c9558c92b
Fix #6983 , #8564
2022-10-13 13:42:35 +02:00
orklah
bb9aabe5b1
Merge pull request #8570 from Nicelocal/fix_8569
...
Fix #8569
2022-10-12 20:59:04 +02:00
e43c6c1a13
cs-fix
2022-10-12 19:54:52 +02:00
a7af027645
Fix #8562
2022-10-12 11:40:29 +02:00
3ac0bce203
Fix #8569
2022-10-12 11:24:42 +02:00
Steven Dickinson
68f6ba873e
Fix MinMaxReturnTypeProvider when handling TDependentListKeys
2022-10-11 14:13:40 +01:00
orklah
60129819f5
add import
2022-10-10 18:10:49 +02:00
orklah
0f6891c757
fix typo
2022-10-10 18:07:26 +02:00
kkmuffme
3a420f4f7a
phpunit bool|string
2022-10-10 17:06:00 +02:00
kkmuffme
0da493b5bb
fix docs to match example
2022-10-10 16:28:46 +02:00
kkmuffme
1e6019ddde
size and error in $_FILES more specific
2022-10-10 16:18:27 +02:00
kkmuffme
fa53050483
fix $_FILES
2022-10-10 16:07:14 +02:00
kkmuffme
b5f6da7285
add common phpunit $_SERVER values bool
...
Fix https://github.com/vimeo/psalm/issues/8556
2022-10-10 14:31:35 +02:00
264e146cef
cs-fix
2022-10-10 13:03:02 +02:00
26f9b2cd6a
Add suppresses
2022-10-10 13:00:46 +02:00
deaa6bd2ea
Add purity issues to baseline
2022-10-10 12:53:13 +02:00
8a7b201b2c
Update
2022-10-10 12:38:57 +02:00
2e8fd6fc1d
Add flag
2022-10-10 11:46:47 +02:00
fe17720441
Revert
2022-10-10 11:43:04 +02:00
f06c459415
Bugfix
2022-10-07 13:18:57 +02:00
Gregory Hargreaves
41a6afda32
Add check for const with reserved word class
2022-10-07 09:44:10 +01:00
William Owen Ponce
0c3a62bc48
Update args
2022-10-05 14:29:24 +08:00
William Owen O. Ponce
ae426a00ce
Remove irrelevant types, use keep aliases
2022-10-05 09:09:56 +08:00
William Owen O. Ponce
04c9fe89c1
Arrange use statements alphabetically again
2022-10-04 09:59:34 +08:00
William Owen O. Ponce
6b6c320fe6
Arrange use statements alphabetically
2022-10-04 09:53:22 +08:00
William Owen O. Ponce
58fd83a01f
Add int type aliases based on existing codes
2022-10-04 09:47:40 +08:00
0155ad7472
Immutable readonly 3
2022-10-03 15:13:47 +02:00
45452c7125
Immutable readonly 2
2022-10-03 14:02:41 +02:00
5984ccd908
Fix
2022-10-03 12:53:44 +02:00
79b13fab04
Cleanup
2022-10-03 12:09:42 +02:00
c2ce7e63da
Immutable readonly 1
2022-10-03 11:53:05 +02:00
f11ed46f26
Immutable assertions
2022-10-03 11:32:15 +02:00
ef60a0c88c
Fix properties-of on generics&intersections
2022-10-03 11:28:01 +02:00
3abd0b961f
Immutable Unions
2022-10-03 10:45:36 +02:00
orklah
313ebf428b
Merge pull request #8502 from kkmuffme/option-to-only-report-errors-for-passed-file
...
add hideAllErrorsExceptPassedFiles config option
2022-09-25 13:02:00 +02:00
kkmuffme
b1c0c2d8a1
add hideAllErrorsExceptPassedFiles config option
...
for files only (not directories, since that wouldn't make practical sense)
2022-09-24 10:44:01 +02:00
kkmuffme
e803af4cd4
use cache for declared function when available before falling back to stubs
...
fixes return type issues reported for the wrong file
2022-09-22 02:10:51 +02:00
kkmuffme
d69be4b9a2
objects even with __toString methods cannot be cast to int/float
2022-09-19 21:54:16 +02:00
Ricardo Boss
bf1c0320fd
Cherry-pick: 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-09-19 21:54:16 +02:00
kkmuffme
da68e9d739
fix psalm-internal risky casts
2022-09-19 21:54:16 +02:00
kkmuffme
7cdad99645
add RiskyCast
2022-09-19 21:54:16 +02:00
kkmuffme
c3eebe2579
be less strict for generic string type
2022-09-19 21:54:16 +02:00
kkmuffme
d32efb0619
float/int always 1 on "error", no PossiblyInvalidCasts by default
2022-09-19 21:54:16 +02:00
kkmuffme
39ec75523e
same for float
2022-09-19 21:54:16 +02:00
kkmuffme
3bec76acb8
fix invalid casts for int
...
https://psalm.dev/r/0d284c6f48
2022-09-19 21:54:16 +02:00
kkmuffme
e4b7cdf26f
fix type for (string) true
2022-09-19 21:54:16 +02:00
dennis
ab690df4da
Improved class name generation for @throws annotation
2022-09-19 21:09:45 +02:00
dennis
844d7999c5
Ensure @throws annotations reference valid Exception classes
2022-09-19 21:09:45 +02:00
orklah
3b7e508c78
Merge pull request #8473 from kkmuffme/detailed-superglobal-types
...
make superglobals more specific
2022-09-19 10:48:44 +02:00
kkmuffme
e2e6265ba1
ignore nullable issues for $argv/$argc
2022-09-19 09:45:55 +02:00
Peter van Dommelen
2eb4ca0e3b
Within the reconciler's fast path, do not require the existing type to include mixed when handling an Any
assertion.
2022-09-18 17:07:30 +02:00
Peter van Dommelen
05f28ce8cd
Do not widen type to mixed
and lose the existing type information when an Any
assertion is used.
...
Fixes #8084 .
2022-09-18 17:02:09 +02:00
orklah
5db59910bd
Merge pull request #8491 from HypeMC/array-column-fix
...
Fix array_column with object and column name null
2022-09-18 11:25:42 +02:00
HypeMC
602e26edd4
Fix array_column with object and column name null
2022-09-17 21:21:33 +02:00
hirokinoue
9071e877a8
fix according to psalm analysis
2022-09-18 01:15:09 +09:00
hirokinoue
2cf131fb45
allow StaticPropertyFetch node to behave like Variable node
2022-09-17 23:08:29 +09:00
hirokinoue
faf4e8ef84
allow PropertyFetch node to behave like Variable node
2022-09-17 22:36:16 +09:00
kkmuffme
a3cb10c085
make $_SERVER more detailed
2022-09-15 19:39:02 +02:00
kkmuffme
7bc29a91eb
make superglobals more specific
...
Update VariableFetchAnalyzer.php
2022-09-15 19:38:51 +02:00
Vincent Langlet
fec5c8ab03
Fix cs
2022-09-14 00:55:32 +02:00
Vincent Langlet
32aedbac58
Add dateTimeModify return type provider
2022-09-14 00:53:12 +02:00
Matthew Brown
d957ff2015
Fix mixed type hole when sending Foo<string> to Foo<mixed> ( #8481 )
...
* Fix mixed type hole when sending Foo<string> to Foo<mixed>
* Fix ifThisIs test
* Suppress bugs highlighted with fix
* Fix PHPDoc parsing
2022-09-13 13:13:06 -04:00
Matt Brown
6f298d2af2
Fix phpcs violations
2022-09-13 12:33:47 -04:00
kkmuffme
978f37e421
improve unlinking potential race condition
...
* fix rare race condition on file cache unlink
* remove unnecessary reset()
* improve code readability using variable
2022-09-11 10:28:16 +02: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
kkmuffme
c450d95727
fix inconsistent function naming
2022-09-08 21:33:06 +02:00
kkmuffme
249d61ec1b
classlike_alias incorrect casing not handled correctly
2022-09-08 21:33:06 +02:00
orklah
76cfb911b2
Merge pull request #8469 from kkmuffme/strictify-anchored-preg-replace
...
preg_replace with anchor will always only have 1 replacement
2022-09-08 20:01:16 +02:00
kkmuffme
d0984f4e47
fix psalm internal errors reported by new checks
2022-09-08 19:35:44 +02:00
kkmuffme
15046c932b
preg_replace with anchor will always only have 1 replacement, add limit for clarity and performance
2022-09-08 18:51:33 +02:00
kkmuffme
a17fa249ac
report invalidCasing when using a class that is not user defined too (e.g. new DateTime)
2022-09-08 13:28:43 +02:00
Semyon
f0a8810cf5
Fix ctype_digit assertion bug
2022-09-07 15:49:35 +03:00
Semyon
969c7a098b
Make ctype_digit and ctype_lower work as assertions
2022-09-02 17:37:10 +03:00
Vincent Langlet
6bc714c867
Add support for callable in array_reduce
2022-08-24 16:04:22 +02:00
orklah
7ee3a81bce
Merge pull request #8370 from someniatko/issue-8363
...
Ensure we recognize inherited static methods for the first-class callables
2022-08-18 21:50:20 +02:00
979091d2ab
Optimize
2022-08-17 13:38:11 +02:00
0220da0b32
Add tests
2022-08-17 13:30:36 +02:00
95ef63ece9
Update
2022-08-17 13:25:00 +02:00
24b008ee40
Fix
2022-08-17 13:19:25 +02:00
1401bf94db
Fix #8414
2022-08-17 13:11:27 +02:00
orklah
7e010a7a4f
Merge pull request #8372 from kkmuffme/safely-read-write-cache-data
...
always use lock when writing/reading cache data to/from file
2022-08-11 18:06:56 +02:00
Markus Staab
8f6e16add6
added truthy-string alias for non-falsy-string
2022-08-11 16:49:58 +02:00
kkmuffme
8ca594a34d
always use lock when writing/reading cache data to/from file
2022-08-11 13:12:47 +02:00
Teemu Koskinen
fefd4861d6
Use $codebase->classlike_storage_provider only if it has the required data. Fixes #8373
2022-08-08 23:49:14 +03:00
someniatko
be02e7e5c7
#8363 - support static
as a type parameter in return types of the first-class callables
2022-08-04 17:16:06 +03:00
someniatko
f3d67845c5
#8363 - ensure we recognize inherited static methods for the first-class callables
2022-08-04 17:01:42 +03:00
kkmuffme
0d32203f9a
add ", but" for InvalidArgument error message where a type is provided
2022-08-03 19:40:30 +02:00
Bitwise Operators
a5c550cea4
Fix incorrect handling of null response
2022-08-03 18:27:32 +02:00