Brown
1321b44e9f
Improve logic for Psalm
2019-05-30 14:47:31 -04:00
Brown
7839da14e0
Add some basic retry logic
2019-05-30 14:29:15 -04:00
Brown
2975642a7a
Ignore task done message error
2019-05-30 14:10:22 -04:00
Brown
76bdfb7c7b
Ignore range issues with serialised message
2019-05-30 13:50:00 -04:00
Brown
7c069a9ba7
Suppress errors when baseline is enabled
2019-05-30 10:42:16 -04:00
Ilija Tovilo
5a14e4b1cf
Progress bar ( #1709 )
...
* Revert "Revert "Implement better progress""
This reverts commit 4302596654
.
* Revert "Revert "Implement dots progress bar""
This reverts commit e41733d789
.
* Revert "Revert "Switch to VoidProgress by default""
This reverts commit 304ffeb0a3
.
* Revert "Revert "Pass success flag to progress""
This reverts commit 62a690ee4e
.
* Improve socket communication
* Use an underscore
* Add means to disable progress
* Add extra newline before progress bar
2019-05-30 10:30:41 -04:00
Matthew Brown
f961da53b7
Fix typos
2019-05-30 08:53:20 -04:00
Matthew Brown
0555bd9ff6
Prevent InternalMethod at implicit __get
2019-05-30 08:50:50 -04:00
Matthew Brown
962d8f30a1
Fix #710 - treat keyed intersections of iterators properly
2019-05-29 19:58:54 -04:00
Brown
e85794038f
Fix #1704 - improve type coercion complaints
2019-05-29 14:22:15 -04:00
Matthew Brown
e31cdf3be5
Fix #1701 - allow count to be called on SimpleXMLElement
2019-05-29 07:56:06 -04:00
Matthew Brown
4f48c6388d
Fix #1700 - interpret false===($a || $b) correctly
2019-05-29 07:47:31 -04:00
Brown
9b508d932d
Improve specificity of explicit negated expression checks
2019-05-28 19:15:47 -04:00
Brown
c9cfa7f010
Add error when reconciling impossible types
2019-05-28 18:33:23 -04:00
Brown
201030928d
Fix case insensitive string comparison
2019-05-28 15:46:56 -04:00
Brown
b19d256b14
Add better error message for templated key-of param
2019-05-28 14:23:22 -04:00
Brown
602bae3bb3
Allow class_exists(..., false) to inform class-string type
2019-05-28 13:16:09 -04:00
Brown
81b6a6f496
Support assertions on class constants
2019-05-28 12:31:46 -04:00
Brown
0e6d07c4e9
Add ancillary var types
2019-05-28 11:58:15 -04:00
Brown
a89892a41f
Prevent more broad template types being captured
2019-05-28 11:54:07 -04:00
Brown
7df88197ef
Fix #762 - support key-of and value-of types
2019-05-28 10:44:04 -04:00
Matthew Brown
a001616753
Remove object-like array under falsy assertion when it contains a sure key
2019-05-28 00:32:27 -04:00
Brown
cf02e9c22c
Fix access on matched T[K]
2019-05-27 18:36:34 -04:00
ADmad
2eae79060f
Fix argument type for sprintf(). ( #1697 )
...
* Fix argument type for sprintf().
* Fix argument types for mail().
2019-05-27 17:51:37 -04:00
Matthew Brown
518330dcf4
Fix class constant assertions on self/static
2019-05-27 13:33:14 -04:00
Matthew Brown
c5e682d312
Fix #1696 - decrease memory usage by keeping parser
2019-05-27 13:14:50 -04:00
Matthew Brown
4302596654
Revert "Implement better progress"
...
This reverts commit 042070d0fd
.
2019-05-27 13:07:02 -04:00
Matthew Brown
e41733d789
Revert "Implement dots progress bar"
...
This reverts commit 0c5837b246
.
2019-05-27 13:05:06 -04:00
Matthew Brown
304ffeb0a3
Revert "Switch to VoidProgress by default"
...
This reverts commit 63b46be361
.
2019-05-27 13:04:38 -04:00
Matthew Brown
62a690ee4e
Revert "Pass success flag to progress"
...
This reverts commit 5e8acf0b0e
.
2019-05-27 13:04:33 -04:00
Matthew Brown
b2fb80978e
Fix assertions with single templated class-string
2019-05-27 12:17:20 -04:00
Matthew Brown
26e7a814df
Use colon do distinguish Psalm progress bar from PHPUnit output
2019-05-27 10:18:37 -04:00
Matthew Brown
fd3235d785
Reduce duplicate trait messages
2019-05-27 10:10:21 -04:00
Matthew Brown
97eab1a2e6
Fix bad string key assertion
2019-05-27 10:10:21 -04:00
Barney Laurance
04ef20da1f
Add error message when psalter asked to work beyond its abilities; allow fixing all issues and output list of fixable issues ( #1687 )
...
* Oputput error message when asked to fix non-fixable issue
* Document ability to fix function PossiblyUndefinedGlobalVariable
* Add --issues=all option to fix all possible issues
* Add --list-supported-issues option to psalter
* Fix psalm issues
* Add newline to end of psalter help output
* Adjust messages output from psalter
* Use fwrite(STDERR, instead of die( for issue list related errors in psalter
* Restore missing exits in psalter
2019-05-27 10:05:15 -04:00
Matthew Brown
5861476765
Don’t remove null after magic property fetch
2019-05-27 09:18:34 -04:00
Matthew Brown
e512bc7ef6
Fix #1693 - use instanceof instead of assert
2019-05-27 08:34:03 -04:00
Matthew Brown
442c307b30
Prevent removing null from single null type
2019-05-27 00:12:57 -04:00
Matthew Brown
c356c452ec
Fix #1692 - allow magic annotations on all interfaces without config flag
2019-05-26 23:35:03 -04:00
Ilija Tovilo
5e8acf0b0e
Pass success flag to progress
2019-05-26 23:18:48 -04:00
Ilija Tovilo
63b46be361
Switch to VoidProgress by default
2019-05-26 23:18:48 -04:00
Ilija Tovilo
0c5837b246
Implement dots progress bar
2019-05-26 23:18:48 -04:00
Ilija Tovilo
042070d0fd
Implement better progress
2019-05-26 23:18:48 -04:00
Matthew Brown
fafe73de0a
Suppress issue where we don’t want to autoload
2019-05-26 16:40:02 -04:00
Matthew Brown
69150d503a
Fix #1682 - correct arg check
2019-05-26 16:26:47 -04:00
Matthew Brown
8b9de8bba6
class_esists check with false arg shouldn’t count
...
Fixes #1682
2019-05-26 13:16:44 -04:00
Matthew Brown
97f4cdb7f5
Fix #1686 - intersect object and named class properly
2019-05-26 13:11:43 -04:00
Matthew Brown
052599192a
Fix #1680 - narrow nullable templated matching
2019-05-25 12:44:47 -04:00
Matthew Brown
0bcf61dee7
Remove more commas
2019-05-25 12:18:12 -04:00
Matthew Brown
857314e095
Remove trailing comma
2019-05-25 12:11:46 -04:00
Matthew Brown
790bc53bfd
Fix #1681 - interpret parent annotation properly
2019-05-25 11:51:09 -04:00
Matthew Brown
9fb96793cd
Fix #1676 - don’t modify original param types with templated by-reference
2019-05-24 18:17:48 -04:00
Matthew Brown
62dacaf97b
Also replace templated intersection types that aren’t direct templates
...
Ref #1675
2019-05-24 17:34:40 -04:00
Matthew Brown
569d82641d
Ignore PossiblyNullReference on synthetic method calls
2019-05-24 14:09:01 -04:00
Matthew Brown
7a48225184
Fix leaky template type
2019-05-24 13:35:14 -04:00
Matthew Brown
3e2b7163ca
Fix #1674 - treat intersections more equally regardless of order
2019-05-24 12:48:37 -04:00
Matthew Brown
a43e4d879b
Remove unnecessary option
2019-05-24 10:26:10 -04:00
Matthew Brown
9e3724bb0c
Prevent class-string<T> from assigning unknown type to mixed
...
Fixes #1672
2019-05-24 10:20:37 -04:00
Erik Booij
a1a9555f93
Write Psalm version to baseline
2019-05-24 09:58:30 -04:00
Matthew Brown
13b9e133e4
Fix Psalm errors
2019-05-24 02:15:35 -04:00
Matthew Brown
c80f9d8ecd
Add class-based support for key-of
...
Ref #762
2019-05-24 02:12:58 -04:00
Matthew Brown
574545e149
Add initial support for key-of<T>
...
Ref #762
2019-05-23 23:53:48 -04:00
Matthew Brown
a18a564ad9
Add parser support for key-of and indexed access
2019-05-23 23:52:48 -04:00
Brown
3fcadb8f4c
Prevent redundant addType
2019-05-23 18:09:53 -04:00
Brown
56daa390fc
Allow array access on @template T as array
...
Ref #1607
2019-05-23 18:06:22 -04:00
Brown
01dcf8f631
Fix erroneous update of existing variables
2019-05-23 18:04:12 -04:00
Brown
6ce5fefa4b
Fix #1664 - allow templated __get params
2019-05-23 12:59:09 -04:00
Brown
c64a654ece
Fix #1666 - complain about properties in interfaces
2019-05-23 10:21:56 -04:00
Brown
83fe545c94
Fix docblock
2019-05-22 18:09:36 -04:00
Brown
f728d797cf
Fix #1665 - allow -if-true & -if-false assertions on static methods
2019-05-22 17:49:38 -04:00
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
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
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
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
282dd8e8ab
Reduce memory footprint of multithreaded mode
2019-04-16 18:10:26 -04:00
Brown
ff14f671b1
Add hopefully-more-portable method for evaluating method/property usage
2019-04-16 16:07:48 -04:00
Lars Moelleken
74f3908555
"CallMap" fixes from phpstan
...
-> ae368af8b3
2019-04-16 11:23:32 -04:00
Brown
24084eb2ec
Use more specific class name
2019-04-15 15:45:24 -04:00
Lars Moelleken
4ef63b5a3f
[+]: fix "Iterator::key()" return type
...
-> https://github.com/phpstan/phpstan/issues/1382
2019-04-15 00:19:33 -04:00
Matthew Brown
ece191cc84
Add support for Scrutinizer output
2019-04-14 14:49:09 -04:00
Matthew Brown
c297b91d6f
Fix possibly null property
2019-04-14 13:04:25 -04:00
Matthew Brown
934fb53d65
Improve error locations for PropertyNotSetInConstructor errors
2019-04-14 12:48:59 -04:00
Matthew Brown
ffec25da20
Fix #1556 - allow internal method calls when checking property initialisation s
2019-04-14 12:19:15 -04:00
bugreportuser
8454c0db39
Support for bitwise not
2019-04-14 10:16:38 -04:00
Lars Moelleken
0686d347c4
fix "grapheme_strlen()" return type
...
-> see 852485d8ec/ext/intl/grapheme/grapheme_string.c (L87)
2019-04-14 10:15:17 -04:00
Lars Moelleken
da0d06ab0a
fix "mb_encode_numericentity()" without the "encoding" parameter
...
-> "The encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used." - https://www.php.net/manual/en/function.mb-encode-numericentity.php
2019-04-14 10:14:58 -04:00
Lars Moelleken
605364acd0
fix "iconv_strlen()" return type
...
-> some tests in "https://github.com/voku/portable-utf8 " fails if I remove the false check e.g. for this string:
// string with UTF-16 (LE) BOM + valid UTF-8 && invalid UTF-8
$string = "\xFF\xFE" . 'string <strong>with utf-8 chars åèä</strong>' . "\xa0\xa1" . ' - doo-bee doo-bee dooh';
2019-04-14 10:14:23 -04:00
Matthew Brown
d145f17782
Fix #1548 - allow parallel execution with --find-dead-code
2019-04-13 15:38:09 -04:00
Matthew Brown
f3b605e442
Fix division by zero bug with --stats
...
Fixes #1552
2019-04-13 13:41:39 -04:00
Bruce Weirdan
8dda8a0ee4
cs fix
2019-04-13 12:35:49 -04:00
Bruce Weirdan
4daf94ca1d
Case-insensitive checks for var_dump and shell_exec
...
Fixes vimeo/psalm#1547
2019-04-13 12:35:49 -04:00
Matthew Brown
21fd385eb4
Fix brackets
2019-04-12 20:30:28 -04:00
Brown
26e2de93c7
Prepare to enable paralellised use of --find-dead-code
...
References #1548
2019-04-12 18:28:07 -04:00
Brown
f5fcde6b89
Fix false casing
2019-04-12 15:39:38 -04:00
Brown
a86bbad796
Add support for regexes as referencedMethods
2019-04-12 15:15:21 -04:00
Brown
6e010d9db9
Remove type coverage map, as it’s not ready for prime-time
2019-04-12 11:32:35 -04:00
Brown
8751bf232b
Improve handling of negated boolean operations
2019-04-12 11:26:33 -04:00
Brown
b6d0ee0777
Prevent impossible === false comparison
2019-04-12 10:30:56 -04:00
Matthew Brown
39af691d2f
Fix #1546 - catch impossible assertions to true
2019-04-12 09:38:56 -04:00
Matthew Brown
ea20a2bd04
Fix #1540 - use correct comparison for callable param types
2019-04-12 00:44:10 -04:00
Brown
a9b8952ea2
Fix #1545 - improve handling of negated binary ops
2019-04-11 18:51:21 -04:00
Brown
7848e97f36
Allow DateTime::getTimestamp to return false
2019-04-11 14:57:50 -04:00
Brown
be5a262deb
Add better handling for non-edge-case function calls
2019-04-11 14:53:21 -04:00
Brown
cadee4d988
Allow numeric to go into string|int|float
2019-04-11 11:25:18 -04:00
Brown
97f53a6486
@voku’s fixes for issues found by their callmap update
2019-04-11 11:02:46 -04:00
Brown
da163e926e
Add callmap fixes collected by @voku in #1541
2019-04-11 10:58:27 -04:00
Brown
1cbe288a10
Add date
2019-04-11 10:49:29 -04:00
Matthew Brown
34ebf5c099
Add a couple of callmap fixes
2019-04-11 08:16:15 -04:00
Matthew Brown
9bfd10630d
Update callmap from upstream psalm/PHPSignatures
2019-04-11 08:03:40 -04:00
Neznaenko Anton
c96fed64bc
minor callmap fixes for Mongo/MongoClient::__construct and ReflectionMethod::getClosure
2019-04-11 07:10:10 -04:00
Brown
8f1dbc072d
Allow empty offset sets on arrayaccess objects
2019-04-10 17:25:25 -04:00
Brown
7f8b47c5cf
Fix buggy behaviour around callable tests
2019-04-09 18:09:57 -04:00
Brown
1a33b25264
Fix #1536 - prevent fatal error when filtering null array
2019-04-09 17:22:30 -04:00
Brown
5173c18cce
Fix calls after updating callmap
2019-04-09 16:52:32 -04:00
Brown
72e0774eaf
Add updates from PHPStan’s function map
2019-04-09 16:18:21 -04:00
Brown
808522c36f
Add workaround SoapFault::__construct, fixing #1535
2019-04-09 15:06:10 -04:00
Brown
3dc3d659f1
Fix #1534 - allow unpacked args to be interpreted properly by overloaded functions
2019-04-09 14:48:51 -04:00
Brown
fb1eba9b61
Fix #1473 - add support for ...&x in docblocks
2019-04-09 14:23:48 -04:00
Brown
1348d634ed
Improve handling of variadic parameters
2019-04-09 13:58:49 -04:00
Matthew Brown
54c76be63b
Add date to Shepherd output
2019-04-08 21:51:33 -04:00
Matthew Brown
c63886fc36
Fix Psalm errors
2019-04-08 21:51:18 -04:00
Matthew Brown
cb1ed5f1ca
Fix #1532 - ignore inaccessible method with implicit parent constructor call
2019-04-08 11:01:16 -04:00
Brown
115b68dc70
Fix #1526 - add a proper check for file storage
2019-04-03 17:41:33 -04:00
Brown
41c722448a
Fix #1531 - improve hrtime return type
2019-04-03 17:08:37 -04:00
Brown
9447cd2d98
Prevent scalar property assertion error
2019-04-03 10:59:27 -04:00
Brown
08a4573a1c
Fix #1525 - allow scalar return types to accept false
2019-04-03 10:56:29 -04:00
Brown
21b1c04c1d
Fix #1526 - ignore files if they weren’t picked up in scanning step
2019-04-03 10:43:48 -04:00
bugreportuser
f5e03715f3
Fix memory leak
2019-04-02 23:36:55 -04:00
Matthew Brown
f1ccbce338
Use new endpoint
2019-04-01 21:34:24 -04:00
Matthew Brown
07652deccf
Remove quotes in --pretty-format command
2019-03-31 21:07:02 -04:00
Matthew Brown
601ff4f0a9
Remove quotes if they’re present
2019-03-31 20:55:48 -04:00
Matthew Brown
d421d91a2a
Dump the data that matters
2019-03-31 20:47:33 -04:00
Matthew Brown
6668228ff5
Sanitise some inputs
2019-03-31 20:37:02 -04:00
Matthew Brown
e3f37089f4
Add environment variables list to failing shepherd call
2019-03-31 20:16:39 -04:00
Matthew Brown
fea61d9897
Shepherd plugin is basically not testable
2019-03-31 19:51:47 -04:00
Matthew Brown
517415029a
Add more verbose output
2019-03-31 19:20:05 -04:00
Matthew Brown
bd48ba858e
Add @SignpostMarv’s fixes for Windows tests
2019-03-31 19:08:55 -04:00
Matthew Brown
ef8292cfc7
Fix #1510 - analyse mixed array offsets
2019-03-31 15:42:15 -04:00
Matthew Brown
8116c48f6c
Add line break
2019-03-31 15:42:15 -04:00
Matthew Brown
d6b3ecaab8
If the function does not exist, exit early
2019-03-31 15:42:15 -04:00
Bruce Weirdan
01bd2d33cd
Fix param name
...
Co-Authored-By: bugreportuser <37939393+bugreportuser@users.noreply.github.com>
2019-03-31 14:22:19 -04:00
bugreportuser
1a4b9ab25f
Allow suppressing exception issues inline
2019-03-31 14:22:19 -04:00
bugreportuser
4fc7e4affc
Give errors for all uncaught exceptions
2019-03-31 14:22:19 -04:00
SignpostMarv
83d8e7f03c
swapping order of mkdir & is_dir, as per #1467
2019-03-31 14:21:15 -04:00
Matthew Brown
326249e13b
spirit => shepherd
2019-03-31 14:02:30 -04:00
SignpostMarv
27378e7cb2
correcting call map as per observation by @bugreportuser in conversation on #1519 (previous commit made whilst operating under the assumption of old edge-cases with stackless errors & exception)
2019-03-31 13:03:19 -04:00
SignpostMarv
bef9d813a7
file and line can go a little funky if an error is triggered in a shutdown function, not sure what happens with type in those instances, but it is reasonably certain that message is always present as string
2019-03-31 13:03:19 -04:00
Brown
09a8d68288
Use more specific location for return type issues
2019-03-29 15:36:13 -04:00
Brown
af4d10cb63
Fix #1499 - use TraitMethodSignatureMismatch when dealing with trait methods
2019-03-29 14:09:06 -04:00
Brown
1ab6345bac
Fix treatment of PDOStatement::setFetchMode
...
Fixes #1496
2019-03-29 13:26:13 -04:00
Brown
f82a55d836
Fix #1512 - check args to mktime are all ints
2019-03-29 10:46:48 -04:00
Matthew Brown
230680fd1c
Fix #1513 - use correct param types when examining abstract trait methods
2019-03-28 22:47:17 -04:00
Brown
f34a99c0cc
Fix #1515 - process inheritance in non-user classes
2019-03-28 17:44:31 -04:00
Brown
8592121799
Populate overridden method ids in separate method
2019-03-28 16:53:07 -04:00
Brown
8872a8e70a
Add Psalm output if spirit errors
2019-03-28 12:06:21 -04:00
Brown
937eb42e8b
Do not override parent return type
2019-03-28 10:43:49 -04:00
Brown
c022d49b1a
Allow coercion from templated param to false
2019-03-28 10:19:02 -04:00
Matthew Brown
bd6fea0d57
Fix #1514 - catch static interface call
2019-03-28 08:22:44 -04:00
Matthew Brown
5e287fa83e
Fix #678 - allow docblock types to set constraints
2019-03-28 00:16:35 -04:00
Matthew Brown
cf21c3e366
Fix #678 - allow docblock to override mixed assignment of static vars
2019-03-28 00:10:08 -04:00
Matthew Brown
e9afd3a6f3
Examine arrays in unknown function calls
2019-03-27 22:13:06 -04:00
Brown
b7472c62c2
Add ability to specify an http endpoint if desired
2019-03-27 17:01:05 -04:00
Matthew Brown
63a0e768b3
Improve type coverage in both good and bad ways
2019-03-25 22:30:40 -04:00
Tim van Dijen
aab2d48b13
ldap_exop_whoami returns false on error
2019-03-25 21:44:09 -04:00
Tim van Dijen
4fc4614267
ldap_get_attributes returns false on error
2019-03-25 21:44:09 -04:00
bugreportuser
5a59963e9b
Inherit uncaught throws from namespace scope
2019-03-25 21:43:51 -04:00
Brown
691d71cdb4
Fix #1504 and ignore SoapClient errors
2019-03-25 11:49:05 -04:00
Brown
783f028f70
Fix #1498 - use template types from parent function
2019-03-25 11:25:43 -04:00
Brown
6b0b86b0d9
Ignore class-not-found issues when checking whether to convert PHPStorm annotations
2019-03-25 10:44:40 -04:00
Matthew Brown
496a175a9f
Fix #1497 - respect constants stubbed in define() calls
2019-03-25 00:07:32 -04:00
bugreportuser
b71005e199
Make MissingThrowsDocblock codelocation more accurate
2019-03-24 23:03:37 -04:00
bugreportuser
976c2c5ef3
Add an error for throws in global scope
2019-03-24 23:03:37 -04:00
bugreportuser
8b12751007
Keep track of throw code locations
2019-03-24 23:03:37 -04:00
Tyson Andre
2e6a2f14ed
Fix typos in psalm with codespell's dictionary
2019-03-24 23:01:20 -04:00
Tyson Andre
fc83f1c3ea
Fix typo: "Arithmentic" -> "Arithmetic"
2019-03-24 23:00:51 -04:00
Matthew Brown
cce9d0a64f
Add fallback
2019-03-24 21:35:43 -04:00
Matthew Brown
e4bbb03de6
Include repo branch
2019-03-24 21:33:07 -04:00
Matthew Brown
d4fa63ab9e
Collect more build information
2019-03-24 20:48:13 -04:00
Matthew Brown
ba603acd7b
Send build information to remote server
2019-03-23 12:49:37 -04:00
Matthew Brown
9d4ebe6b6b
Add plugin hook for post-analysis stuff
2019-03-23 12:47:46 -04:00
Matthew Brown
6bcc3d0261
Don’t stop analysing on var_dump
2019-03-23 10:58:26 -04:00
Matthew Brown
ee56419fd6
Improve accuracy and durability of mixed counts
2019-03-23 09:50:47 -04:00
Brown
9cf78e9097
Remove unused var
2019-03-22 19:12:06 -04:00
François Kooman
a78dd37b4e
DOMXPath::query can return false
2019-03-22 18:24:22 -04:00
Brown
22fc0b5aa3
Fix #1482 - don’t substitute template params when no default present
2019-03-22 18:05:45 -04:00
Brown
c221eccbf5
Tidy up method call analyser
2019-03-22 18:02:33 -04:00
Brown
cacd5a1946
Cast null array key to empty string
...
Fixes #1487
2019-03-22 16:45:17 -04:00
Brown
cc568422d8
Fix #1488 - allow inheritance when dummy template exists
2019-03-22 16:29:30 -04:00
Brown
b9ba24929d
Refactor storage of template names to prevent clashes
2019-03-22 15:59:10 -04:00
bugreportuser
42137f6054
Ignore unused superglobals
2019-03-22 10:19:39 -04:00
Neznaenko Anton
56763434b6
replace ps with posix_kill to determine process is still running and prevent alpine docker hub image problems
2019-03-22 09:51:24 -04:00
bugreportuser
aafb3ee6d6
Ignore unused static vars
2019-03-22 09:50:47 -04:00
Brown
29666bf22e
Fix #1489 - make sure you’re checking against known params
2019-03-21 18:28:25 -04:00
Brown
ab6ca4dc35
Fix #1491 - allow comparison to typed value
2019-03-21 17:26:10 -04:00
Brown
da1f79b7de
Don’t change type after !== check
...
Fixes #1490
2019-03-21 16:57:42 -04:00
Brown
8d06c6a700
Fix #1480 by remembering where a property was set
2019-03-19 19:43:18 -04:00
Brown
6081c742c5
Fix incorrect InvalidArgument for array value scalar mismatch
2019-03-19 16:45:26 -04:00
Brown
880b07783f
Error should be InvalidScalarArgument
2019-03-19 16:12:38 -04:00
Brown
8ed5e661a4
Catch object passed to array-key
2019-03-19 11:43:37 -04:00
Matthew Brown
136429dfd4
Fix location of @method docblocks for issues
2019-03-18 21:05:37 -04:00
Matthew Brown
4865f66aeb
Allow better comparisons for templated types
2019-03-17 18:52:42 -04:00
Matthew Brown
f0ddc6f3bc
Fix array_reverse implementation
2019-03-17 18:14:30 -04:00
Matthew Brown
0da3623372
Prevent internal consumers of classExists from being penalised
2019-03-17 17:11:04 -04:00
Matthew Brown
472ab29d74
Add PossiblyInvalidCast for more refined checks
2019-03-17 17:10:51 -04:00
Matthew Brown
bf586bf93b
Fix #1471 - report issue with string casting inside string
2019-03-17 16:31:56 -04:00
Matthew Brown
3b4a2f2de8
Fix #1462 - combine closure types
2019-03-17 16:19:43 -04:00
Matthew Brown
8392faf77d
Fix #1448 and fix 1469 - functions can return false
2019-03-17 14:18:23 -04:00
Matthew Brown
9c45f33403
Don’t automatically inherit __construct from parent as overridden method id
2019-03-17 14:16:52 -04:00
Matthew Brown
9ee4a7414b
Fix #1461 - check interfaces when analysing abstract method call
2019-03-17 14:16:52 -04:00
Bruce Weirdan
51460e6078
Codebase::classExtends() now rejects unpopulated classes
...
This is done to prevent false negatives, when class storage hasn't been
populated yet.
Fixes vimeo/psalm#1387
2019-03-17 13:51:00 -04:00
Matthew Brown
2f8bfffe95
Fix #1475 but, like, properly this time
2019-03-17 13:50:02 -04:00
Matthew Brown
ca765cba58
Fix errors caused by bad generic param counts
...
Fixes #1474
2019-03-17 12:20:57 -04:00
Matthew Brown
f66af3e267
Fix #1475 - allow self params in traits
2019-03-17 11:31:04 -04:00
Matthew Brown
f5c6abb6a0
Allow capturing of class-string<T>
...
Fixes #1457
2019-03-17 10:19:15 -04:00
Matthew Brown
de7df3175b
Fix #1368 - improve message formatting
2019-03-16 12:53:54 -04:00
bugreportuser
e31cfa503d
Allow reconciling superglobal types
2019-03-16 12:49:38 -04:00
Matthew Brown
9ded84fd5b
Fix comparison of strings with multiple newlines
2019-03-16 12:40:19 -04:00
Matthew Brown
01d6caf6a2
Catch negated instanceof bugs
2019-03-16 12:34:48 -04:00
Matthew Brown
a0659a02f1
Fix #1418 - support templated union types
2019-03-16 11:15:25 -04:00
Matthew Brown
b73dd8ebe4
Fix #1447 - always inherit docs from parents
2019-03-16 00:31:17 -04:00
Matthew Brown
ab832207a4
Fix #1453 - traits are not valid classes
2019-03-15 22:12:35 -04:00
Matthew Brown
b82709897a
Fix #1460
2019-03-15 21:50:16 -04:00
Matthew Brown
c22cdb0795
Fix #1459 - allow nullable templated comparison
2019-03-15 21:37:50 -04:00
Brown
441d3c4693
Fix #1470 - array_reverse should preserve count
2019-03-15 16:39:31 -04:00
Matthew Brown
3704e75049
Catch sql parsing exceptions
2019-03-14 10:23:26 -04:00
Matthew Brown
312be71be1
Localise overridden templated param types
2019-03-14 10:11:45 -04:00
Brown
71a99808fe
Increase max length of strings
2019-03-12 13:15:20 -04:00
Brown
85f34f2aca
Add defining class and increas string length
2019-03-12 12:58:04 -04:00
Matthew Brown
2932e3eb83
Allow numeric to be coerced to literal int
2019-03-12 01:26:19 -04:00
bugreportuser
806ce145ea
Fix PHP7 error
2019-03-11 15:53:21 -04:00
bugreportuser
0e9fb04f06
Define globals in more places
2019-03-11 15:53:21 -04:00
Brown
e22f216a5b
Allow callable|array to be coerced to an array
2019-03-11 11:39:33 -04:00
Matthew Brown
17235cedf9
Allow sequential unsets with missing keys
2019-03-11 01:54:32 -04:00
Matthew Brown
907244cd23
Don’t assert on non-empty checks
2019-03-11 01:35:09 -04:00
Matthew Brown
95b986d2d4
Fix #1367 - allow assertions on mixed arrays to define objectlike type
2019-03-10 23:38:30 -04:00
Matthew Brown
b0853bcde6
Fix #1376 - allow nonzero numeric array key asssertions
2019-03-10 17:54:03 -04:00
Matthew Brown
848b070946
Fix #1413 - don’t complain about byref use param
2019-03-10 16:36:35 -04:00
bugreportuser
c8fffe362a
Allow capitalized @inheritDoc
2019-03-09 20:26:17 -05:00
Brown
e5f7a5a4bc
Coerce class string types together
2019-03-08 17:35:09 -05:00
bugreportuser
57a4522ee7
Flesh out callable arg types
2019-03-07 23:24:50 -05:00
bugreportuser
d120e582ac
Use config globals for invalid global scope
2019-03-07 23:21:56 -05:00
bugreportuser
339a26c801
Fix getChildren return types
2019-03-07 23:20:42 -05:00
SignpostMarv
02c27894de
adding property that was introduced in 7.1, not sure how to accurately describe & test this with deltas
2019-03-07 23:20:05 -05:00
Matthew Brown
c800fb9282
Fix #1437 - use correct return type line for error
2019-03-07 23:19:17 -05:00
Matthew Brown
85f0fa6e7d
Add support for literal templated defaults
2019-03-07 22:32:38 -05:00
Brown
5beb26659e
Add special type for SQL select strings for plugins to consume
2019-03-07 14:56:18 -05:00
Brown
0b74c6a6e7
Fix interface name ref
2019-03-07 11:30:05 -05:00
Brown
b3a59d2638
Fix #1435 - prevent classes extending interfaces
2019-03-07 11:16:40 -05:00
Matthew Brown
e84eec7275
Fix #1434 - allow local suppression of return type checks
2019-03-07 09:21:03 -05:00
Brown
a8ea907d6c
Fix #1432 - allow callable to be coerced to callable-array
2019-03-06 18:24:59 -05:00
bugreportuser
b34dbe26e2
Allow setting superglobal types
2019-03-06 15:59:41 -05:00
bugreportuser
056e5a5b1e
Allow setting globals in config
2019-03-06 15:59:41 -05:00
Brown
9442805763
Mutation checks should not care about return type
2019-03-06 11:12:36 -05:00
Brown
ae69695f89
Prevent tests in PHP 7.1
2019-03-05 18:27:25 -05:00
Brown
cece1def30
Fix #1427 - allow extended methods to be used as callables
2019-03-05 18:02:42 -05:00
Brown
bd372e93af
Add config flags for findUnusedVariables and findUnusedCode
2019-03-05 15:45:09 -05:00
Brown
cfa0829a38
Make scanner more accepting of reflection errors
2019-03-04 13:20:19 -05:00
Matthew Brown
aeab6e292b
Prevent bugs when checking for initialisation
2019-03-04 00:17:45 -05:00
Matthew Brown
92cba71a06
Add extra arg to return type call
2019-03-03 22:57:40 -05:00
Tyson Andre
6f7295ed13
Remove unused use statements
2019-03-03 22:22:36 -05:00
Matthew Brown
48b39a15b9
Don’t change value of $this by reference
2019-03-03 20:16:11 -05:00
Matthew Brown
17801362f5
Ignore all potentially mixed issues
2019-03-03 18:28:12 -05:00
Matthew Brown
74246c1cf7
Remove errant space
2019-03-03 18:25:14 -05:00
Matthew Brown
a31420be5b
Fix checks for existing vars used in by-ref assignments
2019-03-03 18:21:12 -05:00
Matthew Brown
9e8c3b8c6e
Only check interfaces for static matchup
2019-03-03 18:13:15 -05:00
Matthew Brown
5b38082454
Complain about non-static comparison
...
Fixes #1383
2019-03-03 17:41:15 -05:00
Matthew Brown
8d59ab736f
Allow password_hash to return false or null (this will change in 7.4)
2019-03-03 17:09:43 -05:00
Matthew Brown
b7320e2778
Remove unnnecessary param
2019-03-03 16:45:35 -05:00
Matthew Brown
fb9e9bea32
Fix const reference in current context
2019-03-03 16:43:24 -05:00
Matthew Brown
472cdf6bea
Fix #1379 - allow @param-out to change type
2019-03-03 15:11:09 -05:00
Matthew Brown
82e6876011
Fix #1397 - fix get_class behaviour for new instances
2019-03-02 18:02:11 -05:00
Matthew Brown
ef0abf1c30
Fix #1411 - allow covariance on extended templates
2019-03-02 16:31:34 -05:00
Matthew Brown
f9b1a63146
Fix #1421 - variadic params are extra
2019-03-02 15:26:18 -05:00
Matthew Brown
4757c2fe8e
Fix messaging
2019-03-02 15:19:59 -05:00
Matthew Brown
5e61f198e1
Fix #1419 - allow checks against empty arrays
2019-03-02 15:18:29 -05:00
Matthew Brown
efbcf7dc5b
Fix #1417 - store root file path when scanning for manipulations
2019-03-02 15:07:26 -05:00
Matthew Brown
4ba15ec18d
Flip abstract trait analysis implementation checks
...
Fix #1414
2019-03-02 14:17:26 -05:00
bugreportuser
65102b8088
Fix non-empty-array @param in namespace ( #1416 )
2019-03-02 08:35:50 -05:00
Matthew Brown
5c76ab35c8
Allow properties to be set regardless of visibility
2019-03-01 17:30:55 -05:00
Matthew Brown
4bbe13e28f
Fix #1412 - use proper method name where appropriate
2019-03-01 13:33:23 -05:00
Matthew Brown
564da61937
Add missing return type
2019-03-01 09:24:52 -05:00
Matthew Brown
619590aa71
Fix parsing of template of type with spaces
...
Fixes #1406
2019-03-01 09:20:59 -05:00
Bruce Weirdan
e734b54aab
Fix vimeo/psalm#1409 ( #1410 )
2019-03-01 09:09:48 -05:00
Matthew Brown
4cc93644e5
Added more descriptive type for callables
...
Ref #1408
2019-03-01 09:06:37 -05:00
Matthew Brown
317f790bde
New plugin hooks ( #1405 )
...
* Add a bunch of new hooks
* Add more integrations
* Add some broken tests
* Add more things
* Fix remaining interfaces
* Suppress proper issue
* UndefinedMethod should not stop analysis
* Add handlers for two custom method return types
2019-03-01 08:57:10 -05:00
Matthew Brown
d1cf9d61ba
Fix #1398 - improve casting rules for resource
2019-03-01 00:50:22 -05:00
Matthew Brown
42d4156423
Add DOMElement constructor
2019-03-01 00:09:22 -05:00
Matthew Brown
ee942b3c02
Fix return type
2019-03-01 00:06:35 -05:00
Matthew Brown
55e125f495
Check method args before returning
2019-02-28 23:59:17 -05:00
Matthew Brown
b8b752ed01
Fix #1402 - don’t halt after suppressing static UndefinedMethod
2019-02-28 23:46:11 -05:00
Matthew Brown
b3c5120d72
Fix #1403 - warn about duplicate templates
2019-02-28 23:43:55 -05:00
Brown
b2c236a1a1
Allow @psalm-variadic annotation
2019-02-28 14:44:35 -05:00
Brown
815bf845dc
Improve handling of method/function return types
2019-02-27 17:06:44 -05:00
Brown
f8c2b2d81a
Fix #1399 - allow literal comparison to scalar
2019-02-27 16:21:23 -05:00
Brown
07825c9ff8
Fix long line
2019-02-27 16:16:19 -05:00
Brown
601f303de2
Fix position of invalid param
2019-02-27 16:00:44 -05:00
Brown
d46c6ac0e4
Fix #1395 - set all callable types as coming from a docblock
2019-02-27 14:52:58 -05:00
François Kooman
fa26499dd9
fix return value for Sodium\crypto_aead_aes256gcm_decrypt
2019-02-27 14:24:57 -05:00
Brown
1263a2e9a3
Fix missing param location
2019-02-27 14:17:11 -05:00
Brown
119687f934
Fix redundant condition message when negating a docblock type
2019-02-27 14:02:02 -05:00
Matthew Brown
6af222f36a
Fix #1393 - support analysing non-empty-array calls
2019-02-27 09:08:27 -05:00
Matthew Brown
b310cc07b5
Array access on objects should always be treated as method call
2019-02-26 21:24:30 -05:00
Bruce Weirdan
9c5ee3e9d6
Added AfterCodebasePopulated hook registration
2019-02-26 01:16:22 -05:00
Bruce Weirdan
24a71be425
Added Hook\AfterCodebasePopulatedInterface
2019-02-26 01:16:22 -05:00
Matthew Brown
8650f9eb1a
Fix #1356 - improve assertion system to work better on function calls
2019-02-26 01:03:33 -05:00
Bruce Weirdan
abb1c95b94
Limited custom metadata to be (array of) scalars
...
Also moved `$custom_metadata` property to trait
2019-02-25 10:19:31 -05:00
Bruce Weirdan
19a9ff4bcf
Added custom storage metadata
2019-02-25 10:19:31 -05:00
Brown
f5ce136dc7
Simplify handle type for pcntl_signal
2019-02-25 10:16:16 -05:00
bugreportuser
7f7125f334
Fix crash for empty string array access
2019-02-25 08:26:12 -05:00
Matthew Brown
4f770d356e
Fix #1384 - evaluate array fetches even when we don’t know function
2019-02-24 09:58:11 -05:00
Matthew Brown
3ad1abece4
Add generation of json artifacts
2019-02-24 01:33:25 -05:00
Matthew Brown
fff56f7b26
Use better heuristic to determine missing types
2019-02-23 11:39:00 -05:00
Matthew Brown
cdae79b9fe
Fix unnecessary params in Psalm codebase
2019-02-23 11:31:33 -05:00
bugreportuser
68a135f434
Allow @psalm-property and @psalm-method
2019-02-23 11:04:08 -05:00
bugreportuser
34b333cf7f
Fix file return types
2019-02-23 11:03:35 -05:00
Matthew Brown
6671e0dc7c
Fix #1382 - flag unused docblocks
2019-02-23 11:02:04 -05:00
Matthew Brown
6420a5605b
Put nullable in docblock for PHP 7.0
2019-02-22 01:05:35 -05:00
Matthew Brown
3d4710c9d3
Add better checks for invalid array_map/array_filter args
2019-02-22 00:50:41 -05:00
Matthew Brown
ce4f2e6334
Fix #1364 - use proper types for extended getIterator calls
2019-02-21 23:01:34 -05:00
Matthew Brown
f87827e812
Fix #1288 - prevent template names from clashing with real-world classes
2019-02-21 21:54:00 -05:00
Matthew Brown
1c8a573b5f
Change TGenericParam to TTemplateParam
2019-02-21 21:40:06 -05:00
Brown
154e1fa38b
Fix #1375 - improve treatment of dynamically-declared namespaces
2019-02-21 18:19:12 -05:00
Brown
653555a8cc
Remove unused var
2019-02-21 17:49:33 -05:00
Brown
41b133178a
Improve handling of count comparisons
2019-02-21 17:17:10 -05:00
Brown
00b225beda
Strip $ in token
2019-02-21 16:13:31 -05:00
Brown
0b7d4e4aad
Add slightly hacky support for param names in callables
2019-02-21 16:00:18 -05:00
Brown
375f3917b2
Prevent empty unions as soon as possible
2019-02-21 15:09:55 -05:00
Brown
b7a0950aea
Prevent passing casts to byref vars
2019-02-21 13:26:37 -05:00
Bruce Weirdan
991fd90a12
Added tests for exposed methods
2019-02-21 08:43:57 -05:00
Matthew Brown
0e5ee1a811
Fix typo
2019-02-21 08:43:57 -05:00
Bruce Weirdan
adc5d24399
Added documentation for several exposed methods
...
Documented:
- isTypeContainedByType
- canTypeBeContainedByType
- getKeyValueParamsForTraversableObject
2019-02-21 08:43:57 -05:00
Bruce Weirdan
a0e040a462
Expose more internal methods through Codebase
...
- `bool Codebase::canTypeBeContainedByType(Union $input, Union $container)`
- `array{Union,Union} Codebase::getKeyValueParamsForTraversableObject(Atomic $type)`
For usage, see psalm/phpunit-psalm-plugin#15
2019-02-21 08:43:57 -05:00
Brown
1e2c29041f
@param-out should not override @param byref type def
...
when checking for unuitialised vars
2019-02-20 18:53:42 -05:00
Brown
079ac44263
Prevent pass by ref when type type is given
2019-02-20 17:43:12 -05:00
Brown
d2968081f8
Fix #1370 - allow phpstorm generic iterator
2019-02-20 11:13:40 -05:00
bugreportuser
024488c1d6
Use helper methods
2019-02-20 10:55:36 -05:00
bugreportuser
c097c59f33
Remove wrong condition
2019-02-20 10:55:36 -05:00
bugreportuser
14ee221075
Fix errors
2019-02-20 10:55:36 -05:00
bugreportuser
cd23a19931
Allow concat for define first arg
2019-02-20 10:55:36 -05:00
bugreportuser
f603449745
Infer literal string for __namespace__
2019-02-20 10:55:36 -05:00
Matthew Brown
6b045236e0
Use appearing method for array lookup
2019-02-20 02:41:59 -05:00
Brown
348b8eef1f
Fix #1366 - don’t complain about invalid array offset when possibly mixed
2019-02-19 11:42:24 -05:00
Matthew Brown
cd2eb3edb9
Fix #1361 - flesh out array map return type before using
2019-02-19 01:25:36 -05:00
bugreportuser
61e086ac7b
Ignore more redundant issues
2019-02-18 22:44:26 -05:00
Matthew Brown
f49be31aeb
Fix #1332 - use the correct identifier for trait property resolution
2019-02-18 16:52:09 -05:00
Matthew Brown
41255b42c6
Fix #1325 - allow MissingThrowsDocblock to be suppressed
2019-02-18 16:41:06 -05:00
Matthew Brown
75104f4712
Fix #1359 - error on bad iterable args
2019-02-18 16:35:23 -05:00
Matthew Brown
6b419452af
Fix #1337 - don’t crash when examining __call methods in initialisation checks
2019-02-18 16:04:27 -05:00
Matthew Brown
81a5a24e15
Suppress PossiblyUnusedMethod
2019-02-18 15:56:31 -05:00
Bruce Weirdan
e87f500458
Added Psalm\Codebase::isTypeContainedByType()
2019-02-18 15:56:31 -05:00
Matthew Brown
3fdef1a032
Fix #1350 - allow parameterised iterable and unparameterised traversable
2019-02-18 13:01:20 -05:00
Matthew Brown
709a5c31da
Allow bitwise or ops to change type
...
Ref #1340
2019-02-18 12:53:55 -05:00
Matthew Brown
5aaa68c214
Add better error message and also update callmap
2019-02-18 12:28:30 -05:00
Matthew Brown
12f1ffca11
Fix issue reconciling mixed vars inside loop
2019-02-18 11:39:05 -05:00
ADmad
8d54825582
Fix signature for datefmt_create().
2019-02-18 09:33:08 -05:00
Bruce Weirdan
cb453a8da9
Allow suppressing UnusedClass on specific classes
...
This allows suppressing UnusedClass with either `referencedMethod` or
`@psalm-suppress`
Fixes vimeo/psalm#1353
2019-02-18 09:32:09 -05:00
bugreportuser
24cdb6e1d3
Fix array_unique stub
2019-02-17 21:35:54 -05:00
Matthew Brown
5777e008c0
Remove var_dump
2019-02-17 13:18:23 -05:00