Brown
29c869ed67
Ignore nullable issues on just-coerced types
2019-05-21 12:59:06 -04:00
Brown
034ea725e8
Coerce generic types from empty
2019-05-21 12:12:13 -04:00
Matthew Brown
ec2ee04fe8
Allow coercion from empty to array param
2019-05-21 12:12:13 -04:00
Brown
4ecf370900
Coerce mixed values when passed as arguments
2019-05-21 11:51:41 -04:00
Matthew Brown
a1eb191f57
Remove TSqlSelectString and related dependency
2019-05-20 23:14:41 -04:00
Matthew Brown
ea930b8875
Fix interface_exists after class_exists check
2019-05-20 20:57:59 -04:00
Brown
8c653b0312
Improve dead code detection a little more
2019-05-20 18:25:11 -04:00
Brown
2637156f45
Properly fix #1128 with additional check
2019-05-20 12:01:18 -04:00
Brown
83a2122f8c
Fix #1464 and fix #1128 - reduce try/catch UnusedVariable false positives
2019-05-20 11:54:21 -04:00
Matthew Brown
1e853800a3
Fix #1657 - allow interface_exists to generate class-string assertion
2019-05-19 15:56:04 -04:00
Brown
4035823d51
Fix #1652 - allow totally-templated intersections
2019-05-17 15:40:52 -04:00
Brown
963d5bb901
Fix #1656 - allow chained call completion
2019-05-17 12:38:29 -04:00
Brown
a1c9ad501b
Fix #1654 - understand templated completions
2019-05-17 12:11:27 -04:00
Josh Di Fabio
92ef851b9c
LanguageServer: Handle late completion requests
...
Currently, Psalm Language Server is only able to handle completion
requests where the gap between a recent known type and the current
cursor position is exactly '->' or '::'. However, VS code often doesn't
send a completion request until an additional, third character has
been typed. This change allows Psalm to successfully serve
completion requests where an additional character has been typed.
2019-05-17 11:28:20 -04:00
Josh Di Fabio
d37cddea27
FileProvider: Consider file open if temp changes
...
The VS Code LSP client does not always send didOpen messages when a file
is being edited. This causes code completion requests to fail because the
completion request refers to files which are not 'open' according to
FileProvider.
This commit changes FileProvider so that a file is considered 'open' if it is
being modified, even if no didOpen message was received from the LSP
client.
2019-05-17 11:27:45 -04:00
Brown
0f3385ce95
Use sebastian/diff
2019-05-17 11:26:44 -04:00
Brown
ebe97c871e
Make tests much faster
2019-05-17 11:22:34 -04:00
Brown
0bd4dbcbc4
Bump to PHP 7.1
...
Fixes #1650
2019-05-16 18:36:36 -04:00
Brown
9a93525d33
Emit undefined docblock class error where appropriate on property fetcthes
2019-05-16 15:07:07 -04:00
Brown
66bbe5bb74
Allow space in intersection type
...
Ref #1645
2019-05-16 13:52:58 -04:00
Brown
6b04503cc4
Fix #1646 - reload functions from cache when not already stubbed
2019-05-16 13:32:31 -04:00
Matthew Brown
3599c20316
Fix #1641 - crawl intersection types
2019-05-15 22:30:35 -04:00
Brown
4a434d9a2f
Add separate issue for undefined classes in docblocks
2019-05-15 18:41:26 -04:00
Brown
02498a3d74
Fix #1639 - don’t escape unnecessary characters
2019-05-15 11:03:10 -04:00
Matthew Brown
cfff66efb7
Fix #1634 - don’t remove existing return types when preventing bc breaks
2019-05-15 00:34:56 -04:00
Matthew Brown
a34692fca0
Prevent crash when a class definition cannot be located
2019-05-14 23:49:15 -04:00
Matthew Brown
1c10ae11bf
Fix #1580 - look for no-returns in try/catch statements
2019-05-14 21:22:29 -04:00
Matthew Brown
cfde83775d
Fix Psalm errors
2019-05-14 19:30:10 -04:00
Barney Laurance
f4c754737f
psalm-internal: Prevent use of @psalm-internal without @internal
2019-05-14 18:54:16 -04:00
Barney Laurance
6fbe2b0837
Extract function NamespaceAnalyzer::nameSpaceRootsMatch
2019-05-14 18:54:16 -04:00
Barney Laurance
14843ed58a
psalm-internal - extract function NamespaceAnalyzer::isWithin
...
Also adjust behaviour so things can be internal to classes, not just to
namespace, and namespace comparision is case insensitive
2019-05-14 18:54:16 -04:00
Barney Laurance
cd673538f1
psalm-internal - refactor - use snake_case not camelCase
2019-05-14 18:54:16 -04:00
Barney Laurance
ade7815f0c
Fix misleading docblocs
2019-05-14 18:54:16 -04:00
Barney Laurance
c35d21580f
psalm-return - remove unusued variable
2019-05-14 18:54:16 -04:00
Barney Laurance
cd16dc7ac3
psalm-internal - PHPBCBF fixes
2019-05-14 18:54:16 -04:00
Barney Laurance
fcf893d2e8
psalm-internal - disalow use of @psalm-internal property without setting namespace
2019-05-14 18:54:16 -04:00
Barney Laurance
7b7683bdaf
psalm-internal - prevent setting internal property from other namespace
2019-05-14 18:54:16 -04:00
Barney Laurance
ce5d307f83
psalm-internal - present fetching internal property from other namespace
2019-05-14 18:54:16 -04:00
Barney Laurance
0ebcba3e02
psalm-internal - prevent instantiation of class from other namespace
2019-05-14 18:54:16 -04:00
Barney Laurance
b29e041d3c
psalm-internal - prevent call to method marked psalm-internal from other namespace
2019-05-14 18:54:16 -04:00
Barney Laurance
059d1ef177
psalm-internal - prevent static call to psalm-internal class from other namespace
2019-05-14 18:54:16 -04:00
Barney Laurance
4415ef0dbd
psalm-internal - prevent invalid extention of class internal to other namespace
2019-05-14 18:54:16 -04:00
Brown
f1d8b1e6e7
Prevent extending covariant template params
...
Fixes #1610
2019-05-14 18:51:30 -04:00
Brown
7fbbe964cb
Fix #1609 - warn when using covariant template type as input
2019-05-14 18:17:38 -04:00
Brown
10272c2da1
Fix #1636 - don’t allow invalid phpdoc to be outputted
2019-05-14 17:41:22 -04:00
Brown
e7f4a52d2b
Use better metric for a properly mismatching type
2019-05-14 16:15:38 -04:00
Ilija Tovilo
91fbb976ab
Remove unused properties
2019-05-14 15:50:08 -04:00
Brown
30cbcb6c36
Add ImplementedParamTypeMismatch issue
...
Fixes #1633
2019-05-14 15:44:46 -04:00
Ilija Tovilo
2c36a10ac8
Fix #1622 - add allow-backwards-incompatible-changes flag to psalter
...
The flag prevents psalter from adding native return types
2019-05-13 17:59:31 -04:00
Matthew Brown
f33745ad25
Fix parameter offset for error
2019-05-13 16:01:41 -04:00
Matthew Brown
fe0f352132
Fix #1628 - improve behaviour of unset in loops
2019-05-13 11:00:17 -04:00
Matthew Brown
f8b4b12ec2
Fix #1622 - don’t update return types in docblocks when overridden elsewhere
2019-05-13 09:04:26 -04:00
Matthew Brown
9b4d841414
Allow return type errors to be suppressed locally
2019-05-13 08:54:34 -04:00
Matthew Brown
c6e29322c0
Fix unset bug
2019-05-13 01:35:29 -04:00
Matthew Brown
bfcf3cdc99
Fix #1627 - don’t stub already-stubbed functions
2019-05-13 00:24:31 -04:00
Matthew Brown
7c2fe53446
Fix #1391 - find dead code in assignments to self
2019-05-12 23:31:36 -04:00
Matthew Brown
a3a208a7c9
Remove unused variables
2019-05-12 23:13:27 -04:00
Matthew Brown
307cdbbbb3
Fix #1626 - detect dead code found in #1624
2019-05-12 20:49:37 -04:00
Lars Moelleken
abc825a0c4
revert some changes for "array"-functions + merge fixes from phpstan
...
thx @bugreportuser
2019-05-12 19:37:46 -04:00
Matthew Brown
721865d14b
Ignore falsable return for array_combine
2019-05-12 19:37:46 -04:00
Lars Moelleken
399a337e09
revert "array_change_key_case()" changes
...
-> https://github.com/vimeo/psalm/pull/1605#discussion_r281034696
2019-05-12 19:37:46 -04:00
Lars Moelleken
54a14055af
"usort": revert small change in the phpdoc
2019-05-12 19:37:46 -04:00
Lars Moelleken
0b5680f72f
fix return type of "array_combine()" && "array_replace()"
2019-05-12 19:37:46 -04:00
Tyson Andre
d4f1a4a75f
Remove unused variables/comment params
2019-05-11 22:11:38 -04:00
Brown
c935dfd990
Fix #1620 - escape characters in XML
2019-05-10 18:07:57 -04:00
Brown
feff357a75
Be smarter about discovering files
2019-05-10 18:07:13 -04:00
Brown
48d624e305
Fix #1619 - prevent tests from being added automatically on --init
2019-05-10 11:00:50 -04:00
Brown
9b75683796
Search better, and avoid fatal error
2019-05-09 19:34:38 -04:00
Brown
335b04186b
Add autodiscovery of --init folders based on composer.json
2019-05-09 19:19:33 -04:00
Brown
33d4888228
Fix #1618 - conditionally enable autocompletion for methods and properties
2019-05-09 11:20:13 -04:00
Brown
24dbc34bbe
Use better solution for inherited more-specific return types
2019-05-09 10:41:30 -04:00
Brown
629eeed3e6
Fix incorrect message when inheriting parent docblock
2019-05-09 10:26:06 -04:00
Ramon Bakker
6a473f6e71
Fix isset check
...
Check if index exists in the array with open files, instead of checking
if index exists in the array with temporary files.
2019-05-09 08:31:16 -04:00
Brown
111abf82da
Fix #1616 - allow Psalm to output checkstyle format
2019-05-08 14:26:52 -04:00
Brown
b7529e872b
Consider intersections when combining generic types
2019-05-08 13:23:47 -04:00
Brown
1db0e38b08
Invalidate cache when Psalm version changes
2019-05-08 11:58:34 -04:00
Brown
42b10e1376
Add link to PHP bug
2019-05-08 11:48:37 -04:00
Brown
dbc7dea048
Fix #1601 - prevent threaded execution when pcre.jit is set to 1
2019-05-08 11:42:30 -04:00
Brown
b83f540b15
Prevent crash when iterator class does not exist
2019-05-08 11:03:47 -04:00
Matthew Brown
419d1da98d
Fix issue where iterators weren’t processed recursively
2019-05-08 09:04:52 -04:00
Brown
d7ee952084
Infer closure param type for array_filter/array_map
...
Fixes #664
2019-05-07 16:27:25 -04:00
Brown
44f0c64877
Add extra debugging
2019-05-07 13:16:01 -04:00
Matthew Brown
4f8d6a50d8
Don’t emit MissingClosureReturnType when inside call and type can be inferred
2019-05-06 20:47:55 -04:00
Brown
fec1a60e90
Ref #1600 - partial fix inferring param types when none is available
2019-05-06 18:44:10 -04:00
Brown
751253ddf0
Fix #1603 - prevent invalid covariant template classes from being passed
2019-05-06 16:38:08 -04:00
Brown
57a585240c
Allow is_subclass_of/is_a to inform shape of mixed arg
2019-05-06 10:06:05 -04:00
Jonathan H. Wage
ecb7a6c069
Add support for absolute plugin paths.
2019-05-05 16:44:36 -04:00
Brown
dd40987187
Consolidate location of issue handling
2019-05-03 17:12:20 -04:00
Brown
d1574a64a4
Move issue type listing
2019-05-03 15:29:44 -04:00
Brown
8c9d8e7249
Add fully-qualified params to scanned classes
2019-05-03 11:55:27 -04:00
Matthew Brown
49acdfc764
Fix issue when reconciling is_subclass_of on possibly-undefined variable
2019-05-03 09:09:51 -04:00
Brown
640c1d13a6
Fix unused variables now found in Psalm’s code
2019-05-02 17:21:23 -04:00
Brown
08bf101f48
Fix #1598 , catching unused variables followed by try inside loop
2019-05-02 17:21:02 -04:00
Brown
86bf159bd0
Avoid false positive for param
2019-05-02 15:33:47 -04:00
Brown
4f26c8d749
Fix #1597 - ternary else should only know about first conditional expression
2019-05-02 13:43:18 -04:00
Matthew Brown
ae531506de
Fix #1591 - allow variable typed to string to be compared to literal in reverse order
2019-05-02 00:50:35 -04:00
Matthew Brown
fbe10c1a1f
Don’t allow empty coercion on generic type params
...
Fixes #1590
2019-05-02 00:19:56 -04:00
Matthew Brown
cacced782d
Fix #1592 - allow methods with a simple exit to have the same treatment as those with a simple throw
2019-05-01 23:45:03 -04:00
Matthew Brown
0fe378a467
Fix #1593 - still inherit more specific docblock from parent when parent has no signature return
2019-05-01 23:14:22 -04:00
Brown
dcfe9bfdc1
Reduce memory load for forked analysis
2019-04-30 15:35:57 -04:00
Brown
5674193922
Add a warning when fixing unused code issues without accompanying detection
2019-04-30 15:06:42 -04:00
Brown
d53ba0b826
Improve message
2019-04-30 13:26:11 -04:00
Brown
2fe5a72ab7
Fix #1586 - allow use of --find-unused-code as alternative to --find-dead-code
2019-04-30 13:23:18 -04:00
bugreportuser
1c160dab13
Fix typo in isAtomicContainedBy
2019-04-30 00:52:56 -04:00
Brown
b6e9fba8e6
Track method param uses between diff runs
2019-04-29 17:29:38 -04:00
Brown
b9bece4cbc
Allow MixedArrayTypeCoercion to be properly suppressed by default
2019-04-29 12:19:51 -04:00
Brown
f760ab6707
Add better reporting for errors
2019-04-29 12:07:34 -04:00
Brown
1413ccd111
Prevent phar path rejiggering
2019-04-29 11:33:13 -04:00
Matthew Brown
b4f24d1fa6
Fix a couple of tests, and track file references to classes
2019-04-28 12:59:36 -04:00
Matthew Brown
2ae0f92960
Store files-referencing-classes between runs to enable unreferenced code --diff mode
2019-04-28 12:36:24 -04:00
Matthew Brown
e08944cae0
Allow diff mode with --find-dead-code
2019-04-27 17:38:24 -04:00
Brown
29588c9fd8
Add ability to specify GitHub code owners
2019-04-26 11:23:26 -04:00
Matthew Brown
59e53acd56
Fix new template class array key coercion to mixed - when we don’t know, assume bottom type
2019-04-26 07:54:21 -04:00
Matthew Brown
82e0bcafac
Fix #1578 - fix empty array error
2019-04-26 00:47:42 -04:00
Tyson Andre
dbcedd300b
Fix error messages for $boolVar !== null
...
Seen for this example:
$b = rand() % 2 > 0;
if ($b !== null) { ... }
2019-04-26 00:19:46 -04:00
Brown
0e4c8ce482
Split apart TypeCoercion issues, allowing more granular issue filtering
2019-04-25 18:02:19 -04:00
Brown
f227af83c0
Allow mixed callable params to be valid
2019-04-24 12:54:35 -04:00
Matthew Brown
3681762a9b
Add detection for callable variable use
2019-04-23 22:31:38 -04:00
Matthew Brown
c657a45132
Fix #1574 - detect docblock additions to the first statement of a method when diffing
2019-04-22 21:50:58 -04:00
Brown
473c8cb832
Fix checks for parent method implementers
2019-04-22 13:18:19 -04:00
Brown
d1f4622a80
Fix #1542 - disable SQL parsing by default
2019-04-22 10:01:25 -04:00
Matthew Brown
cd74e227c1
Remove var_dump
2019-04-21 11:42:43 -04:00
Matthew Brown
d68e501bfa
Fix #1528 - double check for missing dependency
2019-04-21 11:30:50 -04:00
Matthew Brown
e08ef35b79
Make sure callmap method return types ignore falsable
2019-04-21 11:30:50 -04:00
Matthew Brown
9be8013633
Add a way to ignore variable method & property calls
2019-04-20 17:49:49 -04:00
Matthew Brown
ec65197f41
Fix #1564 - scan functions if they’re not internal
2019-04-20 17:16:42 -04:00
Matthew Brown
79ae72d553
Fix #935 - allow Phar to run without composer files
2019-04-20 16:37:27 -04:00
Matthew Brown
764678d836
Fix #1567 - remove extraneous union
2019-04-20 16:09:55 -04:00
Brown
f3b7e16160
Shorten line
2019-04-19 12:03:52 -04:00
Brown
205fa36fb7
Add better error messages to unused code issues
2019-04-19 11:45:22 -04:00
Lars Moelleken
1a4e52c645
fixes from @villfa
...
-> ae368af8b3
2019-04-19 09:54:08 -04:00
Lars Moelleken
a3072d42b5
fix issue #1568
2019-04-19 09:54:08 -04:00
Brown
d6de6ca5d5
Prevent removing properties on classes with variable assignment
2019-04-18 14:47:58 -04:00
Brown
4807ebe04a
Always evaluate static calls when method call cannot
2019-04-18 13:51:34 -04:00
Brown
50035334d4
Add more descriptive message for autoloader error
2019-04-18 12:12:43 -04:00
Brown
d51475bc03
Register magic property get/set propertyExists calls
2019-04-18 10:41:46 -04:00
Brown
1eabe6ed55
Ignore protected properties redefined downstream
2019-04-17 16:55:15 -04:00
Brown
86c6b6fa36
Don’t warn about unused properties that override a used one
2019-04-17 16:41:35 -04:00
Brown
a529f74473
Add support for tracking callables
2019-04-17 15:45:40 -04:00
Brown
ac562563a7
Don’t remove trait methods
2019-04-17 15:12:52 -04:00
Brown
b1044b267d
Don’t be greedy with lines
2019-04-17 14:58:13 -04:00
Brown
f51b073c40
Add switch for newline swallowing
2019-04-17 14:29:59 -04:00
Brown
cf36d50c65
Prevent removing too many lines
2019-04-17 14:27:36 -04:00
Brown
1b4b7d416e
Fix off-by-one error
2019-04-17 14:07:17 -04:00
Brown
1f36a85650
Remove extraneous newlines
2019-04-17 13:56:47 -04:00
Brown
fea9faaec5
Allow psalter to be used in multithreaded mode
2019-04-17 13:15:06 -04:00
Brown
80e28d6a4a
Add support for unused method & property automated removal
2019-04-17 11:12:18 -04:00
Matthew Brown
01f005290e
Allow file path to be passed into methodExists
2019-04-17 00:17:49 -04:00
bugreportuser
2e147585a1
Allow ignoring exceptions only in global scope
2019-04-16 22:42:45 -04:00
Brown
4abdc1503f
Prevent --update-baseline from running in --diff mode
...
Fixes #1566
2019-04-16 18:16:46 -04:00