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
Bruce Weirdan
e4c6f97646
Merge pull request #6502 from pawel-slowik/get_browser_nullable_1st_arg
2021-09-17 20:27:22 +03:00
Paweł Słowik
2e51a9a8a7
Permit null user_agent to get_browser()
2021-09-17 16:46:27 +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
Bruce Weirdan
b857d0b0f7
Merge pull request #6494 from simPod/template
2021-09-17 02:50:35 +03:00
Simon Podlipsky
d0370de0db
Fix wrong template type in Sequence::copy()
2021-09-16 18:59:05 +02:00
Bruce Weirdan
4eadb732a4
Merge pull request #6493 from fluffycondor/mbstrsplit-list
2021-09-16 17:29:11 +03:00
Semyon
5c375cb3c0
Revert mb_str_split return signature to list<string>
2021-09-16 15:27:34 +03:00
Bruce Weirdan
7dd5db1c21
Merge pull request #6489 from MorrisJobke/fix/noid/print-exception-class
2021-09-16 14:55:52 +03:00
Aleksandr Zhuravlev
65407cc10d
Got rid of test
2021-09-16 23:07:32 +12: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
Aleksandr Zhuravlev
e76cbf75e8
Merge remote-tracking branch 'origin/master' into serializable-interface
2021-09-16 22:05:08 +12:00
Bruce Weirdan
8fb858c804
Merge pull request #6486 from ssnepenthe/update-xdebug-get-profiler-filename-return-type
2021-09-15 16:28:24 +03:00
ssnepenthe
655c000009
Update return type for xdebug_get_profiler_filename()
...
Returns false when profiler is not active, string otherwise
2021-09-14 13:45:23 -07: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
Bruce Weirdan
6f1d43813f
Merge pull request #6476 from orklah/alwaysTruthy
2021-09-13 02:14: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
Bruce Weirdan
f496ccaa25
Merge pull request #6465 from Jean85/patch-1
...
Fix #6464 : false positive for RecursiveArrayIterator::CHILD_ARRAYS_ONLY
2021-09-09 17:29:24 +03:00
Alessandro Lai
55cbbd4fe7
Add test
2021-09-09 16:04:12 +02:00
Alessandro Lai
1aba202a5a
Fix #6464 : false positive for RecursiveArrayIterator::CHILD_ARRAYS_ONLY
2021-09-09 11:12:24 +02:00
Bruce Weirdan
e6e5869851
Merge pull request #6459 from chynkm/patch-1
...
SublimeText configuration
2021-09-08 23:37:06 +03:00
Bruce Weirdan
58b836806c
Merge pull request #6462 from SMAtaurRahman/php8.1
2021-09-08 23:33:11 +03:00
Bruce Weirdan
beb0476eed
Added test
2021-09-08 22:41:23 +03:00
S.M. Ataur Rahman
c13ed7cc28
type of "$http_response_header" is "list<string>" now
2021-09-09 01:36:07 +06:00
KM
ae4282ad5c
SublimeText configuration
...
I have updated SublimeText configuration values for easier integration.
2021-09-08 18:28:52 +05:30
Bruce Weirdan
e10b809cc8
Merge pull request #6454 from brayniverse/master
2021-09-08 12:49:43 +03:00
Christopher Bray
847f1e41e7
Make imageavif arguments optional
2021-09-08 09:17:06 +01:00
Bruce Weirdan
3fcfc948b0
Merge pull request #6453 from tvdijen/bugfix/preg_filter
2021-09-08 00:16:59 +03:00
Christopher Bray
46f7a56e13
Add imageavif to CallMap
2021-09-07 22:07:02 +01:00
Christopher Bray
1bc6a231e0
Add imagecreatefromavif to CallMap
2021-09-07 22:03:31 +01:00
Tim van Dijen
417ea9c43d
Fix return-type
2021-09-07 23:02:28 +02:00
Bruce Weirdan
d7ef94f98d
[skip-ci] typos
2021-09-08 00:02:02 +03:00
Bruce Weirdan
0a0ae4bbf4
Merge pull request #6437 from weirdan/basic-enum-checks
...
Basic enum checks
2021-09-07 13:03:28 +03: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
Bruce Weirdan
d17f1bd7b3
Merge pull request #6447 from brayniverse/master
2021-09-07 05:26:25 +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
5535ea1ac0
$column
parameter is optional
2021-09-07 03:02:25 +03:00
Bruce Weirdan
359537d9a3
Merge pull request #6448 from weirdan/prevent-test-failures-with-php-dev-version
...
Prevent failures with dev PHP versions
2021-09-07 02:45:25 +03:00