orklah
7447489133
better types
2021-09-25 17:57:18 +02:00
orklah
6c892125c3
interface compat
2021-09-25 17:33:12 +02:00
orklah
bff08670f5
put int instead of float
2021-09-25 17:32:04 +02:00
orklah
146d02e3e1
unset instead of reassign
2021-09-25 17:28:51 +02:00
orklah
7891e6136a
unparsable types
2021-09-25 17:19:50 +02:00
orklah
cc77abaa40
unparsable types
2021-09-25 17:19:45 +02:00
orklah
748d58a1d6
unparsable types
2021-09-25 17:14:57 +02:00
orklah
89f5c12be2
unparsable types
2021-09-25 17:14:10 +02:00
orklah
a9b1248e9f
unnecessary phpdoc is necessary
2021-09-25 17:13:58 +02:00
orklah
671a175deb
unnecessary phpdoc
2021-09-25 17:08:51 +02:00
orklah
f0b0540563
unparsable types
2021-09-25 17:08:38 +02:00
orklah
a865090a01
missing types
2021-09-25 17:06:49 +02:00
orklah
04afe1fb86
improved assertion
2021-09-25 16:59:34 +02:00
orklah
7b1ee0924e
unnecessary phpdoc
2021-09-25 16:59:23 +02:00
orklah
06f497fca9
missing return
2021-09-25 16:50:14 +02:00
orklah
ebef0de9b4
missing variable
2021-09-25 16:49:53 +02:00
orklah
e61d490662
missing return
2021-09-25 16:49:46 +02:00
orklah
b4e0f83186
unparsable types
2021-09-25 16:47:38 +02:00
orklah
2f82f25934
undefined param
2021-09-25 16:41:22 +02:00
orklah
1f2316f124
polymorphism
2021-09-25 16:40:52 +02:00
orklah
56dcfe8b99
weird syntax + class-string param
2021-09-25 16:34:36 +02:00
orklah
ddcd2e6930
undefined param
2021-09-25 16:31:48 +02:00
orklah
0780b85c30
undefined param
2021-09-25 16:30:38 +02:00
orklah
056f85bbc9
undefined property
2021-09-25 16:25:38 +02:00
orklah
3e6bf6f35f
remove unused nullable on param types
2021-09-25 16:05:47 +02:00
orklah
a92fee8ae3
better combining
2021-09-25 11:21:06 +02:00
orklah
97e91e6bf0
code trimming
2021-09-25 02:34:21 +02:00
Guillaume Messier
c9db2dfb53
Merge branch 'master' of https://github.com/gmessier/psalm into advanced-issue-handlers
2021-09-24 12:48:12 +00:00
orklah
e6ba6092a6
turn inside_loop to true for do...while
2021-09-23 21:24:17 +02:00
orklah
d3d11471b7
allow arithmetics on variables as long as we're out of loops
2021-09-23 21:24:16 +02:00
orklah
012b65de78
try to improve behaviour
2021-09-23 21:24:16 +02:00
orklah
2b56d52760
rename vars for better diff
2021-09-23 21:24:16 +02:00
orklah
efde3f9180
change order for better diff
2021-09-23 21:24:16 +02:00
orklah
5ec9e6543d
try with everything except Variables
2021-09-23 21:24:16 +02:00
orklah
c6949760f8
activate arithmetic operations on properties too
2021-09-23 21:24:16 +02:00
orklah
a70e7032e9
activate arithmetic operations on method calls too
2021-09-23 21:24:16 +02:00
orklah
c4b47d3786
activate arithmetic operations on func calls
2021-09-23 21:24:16 +02:00
orklah
cc6ab8340b
improve type when min = max and add test
2021-09-23 21:24:16 +02:00
orklah
ba7f2a5b3b
allow range int to be positive
2021-09-23 21:24:16 +02:00
orklah
ea80373006
AssertionFinder refactor
2021-09-23 21:24:16 +02:00
orklah
a7fa63547e
add tests, improve count behaviour on keyed arrays using integer range
2021-09-23 21:24:16 +02:00
orklah
7bf9df4360
restore paradox checking
2021-09-23 21:24:16 +02:00
orklah
667eec2ac8
consider count === 0
2021-09-23 21:24:16 +02:00
Morris Jobke
ebf777a5dc
Show file and line in case of an exception in a forked worker
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2021-09-23 20:51:44 +02:00
orklah
60f017410c
Merge pull request #6526 from orklah/fix-build
...
fix build
2021-09-23 19:37:06 +02:00
orklah
c74e81ca8f
fix build
2021-09-23 19:29:15 +02:00
Guillaume Messier
666367fbd5
Add unit test
2021-09-23 15:30:30 +00:00
Guillaume Messier
87f04bf50b
Fix PHPCS errors
2021-09-22 16:22:38 +00:00
Guillaume Messier
6e4b4d0cdf
Fix Psalm check errors
2021-09-22 16:14:29 +00:00
Guillaume Messier
12d81fa3b2
Fix inheritance problem using static
2021-09-22 15:24:38 +00:00
Guillaume Messier
ab7fc8a9e5
Remove temporary testing ugly code
2021-09-22 15:20:19 +00:00
Guillaume Messier
97a3f54164
Add support for advanced IssueHandler in plugins
2021-09-22 14:56:07 +00:00
83d596e2e5
Fixes
2021-09-22 10:36:54 +02:00
741c9ee471
Fixes
2021-09-22 10:26:21 +02:00
orklah
9b60c86206
Merge pull request #6508 from thomasbley/master
...
fixed Uncaught Error: Call to undefined function shell_exec()
2021-09-21 20:39:15 +02:00
f8a959c079
Fix silly bug
2021-09-21 14:11:33 +02:00
ba2c2bdaa2
Fix tests
2021-09-21 13:00:13 +02:00
7e0b489efe
Merge remote-tracking branch 'origin/master' into if-this-is
2021-09-21 12:12:15 +02:00
Thomas Bley
6f958fe919
Merge branch 'master' of github.com:thomasbley/psalm
2021-09-20 16:55:58 +02:00
Thomas Bley
e60d9e5ec5
return 1 if shell_exec is not available for getCpuCount()
2021-09-20 16:55:16 +02:00
orklah
d32b1be5a3
Merge pull request #6498 from MorrisJobke/fix/catch-ComplicatedExpressionException-in-ArrayFilterReturnTypeProvider.php
...
Catch ComplicatedExpressionException in ArrayFilterReturnTypeProvider
2021-09-20 16:53:48 +02:00
orklah
55fd9c6713
Merge pull request #6478 from whsv26/bugfix/trait-template-invalid-arg
...
Fix invalid argument bug in generic trait context
2021-09-20 16:53:12 +02:00
orklah
994c927b6a
Merge pull request #6445 from TysonAndre/negate-in_array-v2
...
Fix false positive ParadoxicalCondition in negation of in_array
2021-09-20 16:49:15 +02:00
Thomas
ecb368ff2b
Merge branch 'vimeo:master' into master
2021-09-20 12:19:43 +02:00
Thomas Bley
449ef0d994
fixed Uncaught Error: Call to undefined function shell_exec()
2021-09-20 12:18:49 +02:00
orklah
90e1662964
Merge pull request #6241 from orklah/range5
...
Range arithmetics and assertions
2021-09-20 07:15:43 +02:00
orklah
0f17a2590c
fix Mod
2021-09-19 19:30:03 +02:00
orklah
25f78b5d54
refine Mod with positives everywhere
2021-09-19 19:30:03 +02:00
orklah
f87bd56105
fix Pow
2021-09-19 19:30:03 +02:00
orklah
5a2df475ca
changes after review
2021-09-19 19:30:03 +02:00
orklah
81e8bf3ff5
allow Literals to be combined with preexisting IntRange
2021-09-19 19:30:03 +02:00
orklah
086d3777eb
fix wrong assertion
2021-09-19 19:30:03 +02:00
orklah
3d7dc740c2
fix UnaryMinus
2021-09-19 19:30:03 +02:00
orklah
e75e390449
refactor big methods away
2021-09-19 19:30:03 +02:00
orklah
6b5e6eeecc
fix wrong type
2021-09-19 19:30:02 +02:00
orklah
a6630c49a2
fix mod calculation with ranges
2021-09-19 19:30:02 +02:00
orklah
dd9edb7afc
fix wrong check for Range validity
2021-09-19 19:30:02 +02:00
orklah
c226285a4b
fix Mul and Pow operations
2021-09-19 19:30:02 +02:00
orklah
f789ab0655
add test and allow checking in already inferred types instead of just relying on statements from PHPParser for assertions
2021-09-19 19:30:02 +02:00
orklah
ae0586b0e6
fix shift inference
2021-09-19 19:30:02 +02:00
orklah
bae5b2cf96
remove type when assertion contradicts the current type
2021-09-19 19:30:02 +02:00
orklah
e0e34bec33
allow intersections and add test
2021-09-19 19:30:02 +02:00
orklah
c26f403e7e
fix an old bug with inverting positive int + allow inverting TIntRange
2021-09-19 19:30:02 +02:00
orklah
488c13b7c5
handle bit operations and add test
2021-09-19 19:30:02 +02:00
orklah
9994a91915
help Psalm understand the types
2021-09-19 19:30:02 +02:00
orklah
6f050359ce
refactor int vs int range arithmetic by converting everything to range and add tests
2021-09-19 19:30:02 +02:00
orklah
0227894176
fix code
2021-09-19 19:30:02 +02:00
orklah
d2f73d3adb
fix and test minus case
2021-09-19 19:30:01 +02:00
orklah
d919a53674
rename method too
2021-09-19 19:30:01 +02:00
orklah
9ab46ff3e0
rename class because it handles Div too now
2021-09-19 19:30:01 +02:00
orklah
2dd16f9e22
simplify code
2021-09-19 19:30:01 +02:00
orklah
def7d31566
fix positive-numeric assertion
2021-09-19 19:30:01 +02:00
orklah
6d059b9c8f
fix CS
2021-09-19 19:30:01 +02:00
orklah
b5b2677ee3
allow negating inferiorto/superiorto
2021-09-19 19:30:01 +02:00
orklah
b3a62c76dd
add tests and use getNewHighestBound at one place
2021-09-19 19:30:01 +02:00
orklah
c20c1b5002
better div and modulo inference
2021-09-19 19:30:01 +02:00
orklah
05fb0c326d
fix CS
2021-09-19 19:30:01 +02:00
orklah
3ad60cfdb9
Allow combining and improve comparison
2021-09-19 19:30:00 +02:00
orklah
e10b0fc3e9
use TIntRange in isAlwaysTruthy
2021-09-19 19:30:00 +02:00
orklah
55b45853de
try not to remove null after a positive-numeric assertion
2021-09-19 19:30:00 +02:00
orklah
219e425894
handle nightmare isset assertions
2021-09-19 19:30:00 +02:00
orklah
ee75586fbf
expand test and fix assertions
2021-09-19 19:30:00 +02:00
orklah
d2e1388473
Allow inferior-to and superior-to even with negated numbers
2021-09-19 19:30:00 +02:00
orklah
21ceaa7dc7
reconcile positive-int with superior/inferior to
2021-09-19 19:30:00 +02:00
orklah
61d1d1660d
handle the div case when even if min/max are integers, there may be float between them
2021-09-19 19:30:00 +02:00
orklah
168b1d8f0f
fix wrong check with contains
2021-09-19 19:30:00 +02:00
orklah
9505411738
remove type by key instead of targetting global int
2021-09-19 19:30:00 +02:00
orklah
c3afe103c5
allow asserting positive int on an int range
2021-09-19 19:29:59 +02:00
orklah
4682c4be5e
remove unnecessary var
2021-09-19 19:29:59 +02:00
orklah
86afff61c5
allow combining TIntRange with other ints
2021-09-19 19:29:59 +02:00
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
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
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
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
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
S.M. Ataur Rahman
c13ed7cc28
type of "$http_response_header" is "list<string>" now
2021-09-09 01:36:07 +06: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
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
0f2152ac97
Merge pull request #6434 from weirdan/flag-invalid-enum-backing-type
...
Flag invalid backing types for enums
2021-09-05 20:30:01 +03:00
Bruce Weirdan
7b11024886
Flag invalid backing types for enums
...
Fixes vimeo/psalm#6428
2021-09-05 20:12:24 +03:00
Bruce Weirdan
abf557da44
Encode XML output consistently
...
This fixes test failures when running on PHP 8.1, due to changed
`htmlspecialchars()` defaults
2021-09-05 20:06:59 +03:00
Bruce Weirdan
5dfd157d72
Merge pull request #6420 from orklah/ternary-override-type
...
Ternary override type when reassigning
2021-09-04 21:58:32 +03:00
Bruce Weirdan
b710aab148
Merge pull request #6419 from TysonAndre/in_array-fix
2021-09-04 21:56:36 +03:00
Bruce Weirdan
3a3fde332e
Merge pull request #6392 from orklah/control-action-test
2021-09-04 21:38:08 +03:00
orklah
0825f220fe
allow ternary to override previous type when reassigning
2021-09-04 20:22:06 +02:00
Tyson Andre
58e7ae1809
Also support non-literal types in strict in_array() check
...
Modified approach to #6396 by orklah
Fixes #6333
Co-Authored-By: orklah <ronan_morin@hotmail.com>
2021-09-04 12:34:49 -04:00
Bruce Weirdan
d9ceb8779f
Merge pull request #6398 from orklah/array_is_list
2021-09-04 15:55:23 +03:00
orklah
f9b37cea5b
name error
2021-09-04 14:08:04 +02:00
orklah
c8cf503367
introduce isAlwaysFalsy and isAlwaysTruthy
2021-09-04 13:56:13 +02:00
orklah
9cd8917b88
create callmap for 8.1 and introduce array_is_list
2021-09-04 13:25:23 +02:00
orklah
e99c1951ae
Make Psalm understand infinite while loop in control actions
2021-09-02 22:28:01 +02:00
Bruce Weirdan
a655ca81c1
Merge pull request #6391 from ro0NL/6388
2021-09-02 23:23:32 +03:00
orklah
854858a3bc
this should have less impact
2021-09-02 20:55:50 +02:00
Roland Franssen :)
27faf9502e
😓
2021-09-02 20:39:03 +02:00
Roland Franssen :)
a4356089ef
fix
2021-09-02 20:37:21 +02:00
Roland Franssen :)
4bf4d8e451
Forbid empty()
2021-09-02 20:32:05 +02:00
orklah
58e578e6a7
fix Generator giving templates to Iterator
2021-09-02 20:12:32 +02:00
Bruce Weirdan
eb973ab2e1
Merge pull request #6335 from boesing/bugfix/recursive-class-aliases
2021-08-31 23:51:19 +03:00
Bruce Weirdan
b713140cc1
Merge pull request #6326 from piporoid/issue/2164
...
Prevent @property annotations on class properties
2021-08-31 23:46:56 +03:00
Bruce Weirdan
cbcc38aab8
Merge pull request #6339 from niconoe-/allow-object-on-array_walk
2021-08-31 23:45:10 +03:00
Bruce Weirdan
103b2b7244
Warn about array_walk_recursive over objects
2021-08-31 23:18:20 +03:00
Bruce Weirdan
624246b996
Merge pull request #6376 from orklah/use-variable-in-backtick
2021-08-29 04:39:13 +03:00
orklah
27b6d5ad3b
fix psalm errors
2021-08-29 00:39:36 +02:00
orklah
10c20dc8f3
mark variable used in backticks as used
2021-08-29 00:26:52 +02:00
Bruce Weirdan
b370ce92aa
Report RawObjectIteration
when array_walk
is used on objects
2021-08-20 01:43:49 +03:00
Bruce Weirdan
9222b24ea1
Merge pull request #6321 from orklah/analyze-dynamic-classConstFetch
2021-08-20 01:06:56 +03:00
orklah
dbf3512b70
introduce $definite_class flag and use it to avoid using final keyword for simple inference
2021-08-19 23:19:59 +02:00
Bruce Weirdan
65f34d0d9f
Merge pull request #6346 from orklah/id-cache
...
remove cache after unsetting a key from a TKeyedArray
2021-08-19 22:01:44 +03:00
orklah
6ba8876153
remove cache after unsetting a key from a TKeyedArray
2021-08-19 20:40:25 +02:00
Bruce Weirdan
3cb28e6399
Merge pull request #6344 from orklah/vendor-suppressions
...
don't report UnusedSuppressions in non project dirs
2021-08-19 20:53:21 +03:00
Bruce Weirdan
230bdb43ad
Merge pull request #6345 from orklah/multiple_properties
...
use better solution to check for project dir paths
2021-08-19 20:53:07 +03:00
orklah
d416d46900
fix CS
2021-08-19 19:36:01 +02:00
orklah
ef34cbd321
use better solution to check for project dir paths
2021-08-19 18:49:28 +02:00
orklah
3e236fc2fe
don't report UnusedSuppressions in non project dirs
2021-08-19 18:43:29 +02:00
Maximilian Bösing
c9aebe3082
bugfix: resolve recursive aliases in multiple methods
...
- `ClassLikes#hasFullyQualifiedClassName`
- `ClassLikes#hasFullyQualifiedInterfaceName`
- `ClassLikes#hasFullyQualifiedEnumName`
- `ClassLikes#hasFullyQualifiedTraitName`
- `ClassLikes#classExtends`
- `ClassLikes#classImplements`
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-08-18 16:37:08 +02:00
Maximilian Bösing
4e0484f283
bugfix: resolve recursive aliases
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-08-18 16:18:58 +02:00
orklah
2b37bdf253
get rid of the final check that was there only for static:: before
2021-08-17 23:40:03 +02:00
orklah
ee53c57952
add back alter blocks but remove renaming the $stmt->class part when it's a variable
2021-08-17 23:11:28 +02:00
Bruce Weirdan
e5b797c764
Merge pull request #6327 from boesing/bugfix/class-alias
2021-08-17 23:35:25 +03:00
Maximilian Bösing
158f2144b5
qa: use ClassLikes#getUnAliasedName
instead of accessing the classlike_aliases
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-08-17 21:43:58 +02:00
Maximilian Bösing
5ef606a5f6
qa: avoid array_keys
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-08-17 21:39:53 +02:00
Barney Laurance
88276d7f1e
Fix error message for call to internal method from root namespace
2021-08-17 18:54:57 +01:00
orklah
1bf7447685
small refactor, add LiteralClassString, remove alter code blocks
2021-08-17 18:51:59 +02:00
Maximilian Bösing
f8db5a0461
bugfix: enable ClassLikes
to properly detect implementing class aliases
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-08-17 18:40:18 +02:00
piporoid
1df5f3012a
Prevent @property annotations on class properties
2021-08-17 23:40:26 +09:00
Maximilian Bösing
cb244d5c1e
bugfix: add missing TNonEmptyMixed
to Atomic#create
...
Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com>
2021-08-17 10:46:45 +02:00
orklah
7308c86bb2
fix build
2021-08-16 21:56:37 +02:00
orklah
9264ea5cbb
Allow type inference on dynamic ClassConstFetch
2021-08-16 21:20:20 +02:00
Bruce Weirdan
f245c4ace7
Prevent failures when parsing in-array assertions
...
Fixes vimeo/psalm#6309
2021-08-16 01:23:48 +03:00
orklah
1e17069c24
Change > assertion back to @ and put back a perf threshold
2021-08-15 10:13:05 +02:00
Bruce Weirdan
a9ead63ae1
Revert "Assertions for Integer Range"
2021-08-14 18:06:41 +03:00
Matthew Brown
6cc5ba970a
Fix tests
2021-08-14 10:45:32 -04:00
Matthew Brown
a4479761a7
Fix #3660 - ensure mixed percentage for file never drops below 0
2021-08-14 10:35:31 -04:00
Thomas Bley
04177496cc
Fixed ReflectionException: Class \LanguageServerProtocol\TextDocumentContentChangeEvent does not exist
2021-08-14 05:54:36 +02:00
Bruce Weirdan
7ff2a660dd
Merge pull request #6233 from supersmile2009/fix-in-array-assert
2021-08-13 01:39:31 +03:00
Bruce Weirdan
568a9e0412
Prevented empty assertions
...
and simplified the code a bit.
2021-08-13 00:39:24 +03:00
Bruce Weirdan
6294e06955
Improve constant array inference
...
This fixes int offset inference and adds handling for array unpacks in
constant arrays. Mostly it's copy/pasted from `ArrayAnalyzer` with
further adjustments.
Fixes vimeo/psalm#6263
Fixes vimeo/psalm#6289
2021-08-12 20:39:21 +03:00
Bruce Weirdan
8f85f580da
Extract item handling
2021-08-11 01:18:23 +03:00
Bruce Weirdan
f9a75983f9
Use ArrayCreationInfo for is_list flag
2021-08-11 00:47:45 +03:00
Bruce Weirdan
b6ade31dd0
Use ArrayCreationInfo for can_create_objectlike flag
2021-08-11 00:39:56 +03:00
Bruce Weirdan
ba4f1db2cd
Use ArrayCreationInfo for class strings
2021-08-11 00:29:14 +03:00
Bruce Weirdan
47d3d31c47
Use ArrayCreationInfo for property types
2021-08-11 00:19:18 +03:00
Bruce Weirdan
abe5ef774c
Use ArrayCreationInfo for key and value types
2021-08-11 00:05:00 +03:00
Bruce Weirdan
a64a30cdda
Combine value types at once
2021-08-10 21:30:57 +03:00
Bruce Weirdan
a41d5c5b4f
Combine offset types at once
2021-08-10 21:23:13 +03:00
Bruce Weirdan
cf28859faf
Extract array type inference
2021-08-10 20:48:45 +03:00
Alexandr Zolotukhin
d7f83c3b5e
Fix issues detected by psalm
2021-08-10 20:07:53 +03:00
Bruce Weirdan
5dc748d372
Merge pull request #6273 from VincentLanglet/nonEmptyConstant
...
Constants are non empty strings
2021-08-09 23:36:41 +03:00