Matthew Brown
9ab3161675
Fix issues found by Psalm
2019-06-29 21:13:02 -04:00
Matthew Brown
6b7788b502
Fix FileAnalyzer memory leak
2019-06-29 21:06:21 -04:00
Matthew Brown
436ccae819
Fix SwitchAnalyzer memory leak
2019-06-29 19:20:09 -04:00
Matthew Brown
b9ec254830
Fix memory leak in type parser
2019-06-29 17:09:52 -04:00
Tyson Andre
791b30a6d8
Fix redundant casts/conditions in psalm ( #1874 )
...
This includes a check for array_map that was accidentally an assignment
2019-06-29 12:32:44 -04:00
Matthew Brown
fc549a431f
Namespace functions
2019-06-29 00:28:31 -04:00
Matthew Brown
f5459e2854
Remove unused var
2019-06-29 00:25:12 -04:00
Matthew Brown
622ad800cc
Don’t rescan if the problem is unbalanced braces
2019-06-29 00:22:41 -04:00
Matthew Brown
cb28c44228
Fix #1873 - allow spread operators in inferred property types
2019-06-28 22:28:35 -04:00
Tyson Andre
cba187ad56
Rate limit the progress bar updates ( #1871 )
...
* Rate limit the progress bar updates
* Fix psalm warning
* Made lines shorter
2019-06-28 14:25:47 -04:00
Brown
62c37a84f2
Fix tokenising bug found while analysing Phan cc @TysonAndre
2019-06-28 12:29:39 -04:00
Brown
87e2300b65
Don’t stop analysing after class_exists
2019-06-28 11:22:58 -04:00
Mikko Pesari
3c61b17843
Exit with error status on baseline read errors ( #1866 )
2019-06-28 10:49:57 -04:00
Brown
5943f6036e
Fix #1859 - allow function_exists introspection when function exists
2019-06-28 10:48:30 -04:00
Brown
6514f2084c
Fix #1860 - be less restrictive about class_exists checks
2019-06-28 10:17:59 -04:00
Brown
6b32565a9b
Allow references to deprecated class inside the class
2019-06-27 13:36:39 -04:00
Teemu Koskinen
0568a471de
Fix MethodParamsProvider to accept an empty array (ie. no params) from MethodParamsProviderInterface ( #1854 )
2019-06-27 11:51:56 -04:00
Brown
ba121a94e7
Allow union of class-strings in signature
...
Ref #1851
2019-06-27 11:44:35 -04:00
Brown
3088432529
Update message about hyphens
...
Fixes #1852
2019-06-27 10:54:50 -04:00
Brown
e54f899858
Add pcre.jit message upfront when running Psalm on Macs
...
Ref #1855
2019-06-27 10:51:13 -04:00
Brown
c4eb127f11
Fix treatment of class_exists
2019-06-27 10:17:11 -04:00
LeSuisse
f29826b958
Fully qualify constants and function calls ( #1849 )
...
This should give a small performance boost.
Part of #1837 .
The change is enforced via phpcs and can be autofixed
with phpcbf.
2019-06-26 16:52:29 -04:00
Brown
e4e48d2d06
Add support for templated @var on return statements
2019-06-26 16:33:43 -04:00
Brown
1864d9a2be
Allow templated @var on return docblocks
2019-06-26 16:26:14 -04:00
Brown
5ed49c0c03
Fixed #1848 - allow static class strings to be compared
2019-06-26 15:11:16 -04:00
Matthew Brown
372a512a86
Don’t convert trait self to trait name
2019-06-26 00:28:43 -04:00
Matthew Brown
c66a106622
Improve performance by doing less cloning
...
Ref #1837
2019-06-26 00:14:06 -04:00
Matthew Brown
70a1696a04
Limit template expansion of possibly-mixed vars
2019-06-25 23:43:25 -04:00
Brown
904267638f
Add extra isset test
2019-06-25 16:47:14 -04:00
Brown
16bf5f11e1
Fix #1845 - prevent string return when expecting template
2019-06-25 15:06:02 -04:00
Brown
91686bef4b
Improve robustness of template checks
2019-06-25 13:20:30 -04:00
Matthew Brown
d96246a824
Improve template handling robustness
2019-06-25 09:06:23 -04:00
Matthew Brown
5cb6fe14d7
Add support for doubly-extended non-template params
2019-06-24 23:57:19 -04:00
Matthew Brown
9d998bf3ac
Fix handling of inherited method call
2019-06-24 23:43:06 -04:00
Matthew Brown
c0b86bd40d
Use uppercase template_type_extends keys
2019-06-24 23:43:04 -04:00
Brown
23a3b0dbc0
Fix #1842 - prevent bad templated object returns
2019-06-24 19:07:29 -04:00
Brown
69b05f5052
Improve handling of parent method calls
2019-06-24 17:45:10 -04:00
Brown
4baa4d70d8
Allow templated static type in fleshOutType
2019-06-24 15:08:55 -04:00
Brown
2a1ed6ca6a
Prevent incorrect template being passed to function
2019-06-24 10:54:03 -04:00
Ilija Tovilo
16768e363c
Jump between parens when autocompleting method with parameters ( #1839 )
2019-06-24 07:51:12 -04:00
Matthew Brown
766b1b0384
Add reference, not type
...
Ref #1835
2019-06-23 09:10:43 -04:00
Matthew Brown
37ffd6dad6
Fix #1832 - add references to docblock types
2019-06-23 08:47:49 -04:00
Matthew Brown
4735955829
Fix #1835 - move reference generation before argument analysis
2019-06-23 08:08:00 -04:00
Matthew Brown
ec104be6e2
Add offset to atomic type
...
Ref #1832
2019-06-23 00:19:41 -04:00
Matthew Brown
31c8a2e4d7
Add offsets to type tokenisation
...
Ref #1832
2019-06-22 23:30:40 -04:00
Ilija Tovilo
78588ced16
Only add newlines to function signature on hover ( #1834 )
...
Most editors do not render the newlines for autocompletions which makes
things look worse.
2019-06-22 15:59:16 -04:00
Ilija Tovilo
caca3e52c9
Display function signature on multiple lines when it has parameters ( #1833 )
2019-06-22 13:07:56 -04:00
Brown
aa6677a177
Add autocompletion for some classes
...
Ref #1822
2019-06-21 17:10:35 -04:00
Ilija Tovilo
c74e196e3c
Improve autocompletion by using CompletionItem::$detail for type info ( #1831 )
2019-06-21 17:09:01 -04:00
Matthew Brown
2a4072b1be
Resolve docblock self refs as soon as possible
...
Fixes #1827
2019-06-20 23:38:10 -04:00
Brown
7b4dbb1c85
Fix #1826 - don’t allow mixed unions when combining with object-like array
2019-06-20 20:13:36 -04:00
Brown
ac06ea659e
Fix #1825 - improve behaviour of callable reconciliation
2019-06-20 19:46:42 -04:00
Brown
db38270a6a
Clone closure param types before combining
2019-06-20 19:09:10 -04:00
Brown
c93c2a4843
Don’t modify AST when analyzing array_filter
2019-06-20 14:14:48 -04:00
Brown
a5a9da6e50
Fix #1818 - handle intersection when expanding template
2019-06-20 10:09:03 -04:00
Matthew Brown
d845cdf0c5
Fix #1458 by making instanceof static same as === static
2019-06-20 08:37:57 -04:00
Brown
84e002e9a7
Fix #1816 - convert array_filter strings to full closures
2019-06-19 17:42:42 -04:00
Brown
bdf54ae1fa
Fix #1814 - warn about deprected ::class access
2019-06-19 12:42:51 -04:00
Brown
0246f600f4
Fix #1813 - convert object&Foo into Foo after template resolution
2019-06-19 12:00:19 -04:00
Matthew Brown
7155ed4e06
Fix #1811 - improve expected argument count
2019-06-19 09:05:07 -04:00
Brown
b12f05185a
Fix #1799 - support trailing commas in object-like docblock types
2019-06-18 17:47:06 -04:00
Brown
1bdd444ce6
Fix #1802 - ensure directory exists before moving file
2019-06-18 17:16:10 -04:00
Brown
10613192c9
Fix #1803 - complain about DeprecatedClass when using its constants
2019-06-18 16:21:04 -04:00
Matthew Lewinski
ac0a9d1514
Add a 'sonarqube' report type ( #1808 )
...
This JSON report is suitable for import into either SonarCloud or
SonarQube as Generic Issue Data (also known as an External Issue
Report).
https://docs.sonarqube.org/latest/analysis/generic-issue/
2019-06-17 21:17:09 -04:00
SignpostMarv
de881767a5
adding php & extension version info to baseline file to track changes in execution environment when baselines are added to vcs ( #1804 )
2019-06-17 16:43:54 -04:00
Barney Laurance
5ab5ec261c
Speed up CircleCI build ( #1805 )
...
* Use multiple threads to speed up psalm self analysis in CicleCi
* Use non-zero exit code when pcntl needed and not loaded
* Merge install and static analysis jobs in CircleCI
Saves about 20 seconds of 'spin up environment' time
2019-06-17 16:42:47 -04:00
Brown
250ef02687
Fix #1801 - add support for class_exists(Foo::class) too
2019-06-17 11:31:43 -04:00
Matthew Brown
a0866da88e
Strip extranous data
2019-06-16 12:45:02 -04:00
Matthew Brown
f46ccf0a5d
Strip text from end of @psalm-type
2019-06-16 12:39:07 -04:00
Hugo Alliaume
37d719ed67
Fix readability for object-like types when running psalter
( #1708 )
...
* chore: update tests
* fix: better readability for object-like types
* test: add tests for nested array return type
* Improve spacing
2019-06-16 09:20:49 -04:00
Matthew Brown
7fc11af49e
Fix docblocks with @andrew-demb’s suggestions
2019-06-16 09:12:32 -04:00
Matthew Brown
c4551bd0df
Fix issue where extension_loaded stopped constructor being recognised
2019-06-15 18:49:58 -04:00
Matthew Brown
d7f5fa29df
Suppress extra thing
2019-06-15 18:36:45 -04:00
Matthew Brown
38cee39c22
Be more lenient returning false
2019-06-15 18:34:18 -04:00
Matthew Brown
69a2fa3bf9
Experiment with calling closure in method
2019-06-15 18:29:24 -04:00
Matthew Brown
55aa1f78cb
Add more specific types to closures
2019-06-15 18:24:43 -04:00
Matthew Brown
9c03dfa1d3
Don’t quit after a bad run
2019-06-15 18:15:04 -04:00
Matthew Brown
41cdde514f
Fix #1784 - detect missing end brackets
2019-06-15 17:57:40 -04:00
Matthew Brown
56e66af6a2
Keep going even when function doesn’t exist
2019-06-15 16:14:36 -04:00
Matthew Brown
2d5f332ebf
Fix #1781 by improving handling of callmap options
2019-06-15 16:10:48 -04:00
Matthew Brown
06e913e37b
Fix #1791 - complain about missing class constants
2019-06-15 12:19:26 -04:00
Matthew Brown
afc2f18d18
Allow ImplicitToStringCast when sending an object to scalar-accepting param
2019-06-15 12:11:42 -04:00
Matthew Brown
5a64e97f0f
Fix #1793 - warn on deprecated function
2019-06-15 12:09:15 -04:00
Matthew Brown
fbd8faadaf
Fix #1792 - allow scalar for sprintf
2019-06-15 11:56:59 -04:00
Brown
d1630863ad
Fix #1787 - prevent initialisation when nullable isn’t set
2019-06-14 16:53:40 -04:00
Brown
edf3307f84
Fix Psalm errors
2019-06-14 15:55:23 -04:00
Brown
1bc1af140f
Move method calls outside classes and __CLASS__ constants
2019-06-14 15:54:15 -04:00
Brown
58b6ce3483
Fix bugs when moving methods that reference each other
2019-06-14 14:41:44 -04:00
Brown
7a6395490c
Allow @property to contain union types
2019-06-14 10:45:00 -04:00
Josh Di Fabio
bbe5773fa1
LS Completion: Improve filtering
...
Set `filterText` to member name so that visibility
and 'function' are not used by the IDE when filtering
completion items as the user types.
2019-06-13 21:06:08 -04:00
Josh Di Fabio
cb864206a2
LS Completion: Sort items by visibility first
2019-06-13 21:06:08 -04:00
Josh Di Fabio
ca19353645
Fix bad array_merge logic
2019-06-13 21:06:08 -04:00
Josh Di Fabio
eab4adc6e1
LS Completion: Do not suggest static members when gap is ->
2019-06-13 21:06:08 -04:00
Matthew Brown
389c196566
Fix #1779 - non-zero exit code when config not found
2019-06-13 19:34:57 -04:00
Brown
2fba2e42a9
Fix #1771 - allow psalm-refactor to manipulate namespaces
2019-06-13 18:28:46 -04:00
Brown
a341e867da
Add explanation for return
2019-06-13 16:28:21 -04:00
Brown
24eadc865f
Get out if method already analysed and not diffing methods
2019-06-13 16:15:29 -04:00
Brown
844442e039
Fix #1780 - set open file contents on save
2019-06-13 15:25:55 -04:00
Brown
e3c9dbf2c0
Fix #1617 and fix #1773 - properly filter out info in reports
2019-06-13 11:06:01 -04:00
Josh Di Fabio
78a9d1aa9b
Ensure any queued file analyses are done before completion
...
Language Server
---------------
When typing quickly, the LSP client can send multiple messages
in a group, including didChange messages followed by completion
messages. Currently, LanguageServer::doAnalysis() is only called
after a message group is processed. This can result in completion
being done with outdated file contents for example:
Message group with two messages is received
1. `didChange`: file analysis is queued for modified file
2. `completion`: completion attempted on stale file contents
3. `messageGroupRead`: analysis is done, but too late for completion
This commit ensures that any queued file analyses are done prior
to serving completion requests.
2019-06-13 09:04:52 -04:00
Matthew Brown
42bafc1e64
Fix #1775 - allow true|false to be accepted as bool
2019-06-13 08:55:36 -04:00
Brown
0ba535d179
Fix problem locating end of completion area
2019-06-12 13:43:35 -04:00
Josh Di Fabio
3db32f2274
Enable LS completion when whitespace follows known type
...
This change enables completion when there is whitespace following
a known type and an object access operator, e.g.:
$foo
->bar()
->baz();
2019-06-12 09:17:50 -04:00
Matthew Brown
53506fb879
Fix #1770 - fix notice that should not be
2019-06-12 09:13:59 -04:00
Brown
9c4599a0f0
Add better support for inheriting docblocks
2019-06-11 11:19:57 -04:00
Brown
7cf8c362f0
Fix #1766 - interpret interface parent extends properly
2019-06-11 10:49:39 -04:00
Brown
010f911d22
Fix replacement of local types
2019-06-11 10:33:52 -04:00
Brown
45f2d986e6
Allow multiple class renames at once
2019-06-10 17:09:34 -04:00
Brown
c21e9917fa
Add config flag to prevent inferring property types from constructor
2019-06-10 14:41:21 -04:00
Brown
aa2fde521a
Fix #1703 - infer properties from class params
2019-06-10 12:00:32 -04:00
Matthew Brown
e1255db32a
Prevent if checking unless we’re in a top-level if
2019-06-10 00:02:36 -04:00
Matthew Brown
158a2150a7
Fix #1752 - don’t enter if/else when class/interfaces/functions don’t exist
2019-06-09 23:50:28 -04:00
Matthew Brown
04b3bb23a4
Add non-empty-countable to Psalm reserved words
2019-06-09 17:54:23 -04:00
Matthew Brown
c0a9ccb385
Fix handling of unused params in threaded mode
2019-06-09 17:02:21 -04:00
Matthew Brown
348ed24881
Remove unused things
2019-06-09 13:12:08 -04:00
Matthew Brown
0145e60e6a
Allow property default to include value-of option
2019-06-09 12:47:27 -04:00
Matthew Brown
b5cbc84351
Fix #1617 - add option to only show errors in reports
2019-06-09 12:37:28 -04:00
Matthew Brown
3a5a347b0b
Fix #1747 - be tolerant of slash differences in baseline
2019-06-09 10:30:14 -04:00
Matthew Brown
93f81f599e
Fix #1764 - prevent UndefinedInterfaceMethod error when checking initialisation
2019-06-09 09:18:05 -04:00
Matthew Brown
537fbf059a
Allow moving instance method into subclass
2019-06-08 16:59:19 -04:00
Matthew Brown
395057c6df
Fix #1738 - constrain template type when class-string<T> is a param
2019-06-08 11:08:08 -04:00
Matthew Brown
c38108f95d
Fix byref array assignment
...
Fixes #1702
2019-06-08 10:32:46 -04:00
Matthew Brown
42cc201e9e
Fix #1698 - better understand inherited docblock return types
2019-06-08 09:44:22 -04:00
Matthew Brown
b0678bdc74
Improve treatment of key-of
...
Ref #1698
2019-06-07 21:27:50 -04:00
Matthew Brown
2fa0f27872
Prevent LessSpecificImplementedReturnType with extended template
2019-06-07 18:42:26 -04:00
Brown
c81a9a8737
Fix #1742 - allow is_countable assertion to mean something
2019-06-07 15:49:10 -04:00
Brown
4660beb28e
Still look at param defaults even without param types
2019-06-07 14:24:15 -04:00
Brown
3c3c8cd3b9
Always analyse class constants
2019-06-07 13:23:52 -04:00
Brown
b00d51b7db
Allow misplaced required params so Psalm still inspects the code
2019-06-07 09:25:12 -04:00
Matthew Brown
20c66f693e
Fix handling of class const types
2019-06-06 18:46:40 -04:00
Matthew Brown
36ac342496
Fix handling of property type with default
2019-06-06 17:42:23 -04:00
Matthew Brown
4a954acf84
Improve printing of literal types
2019-06-06 17:39:14 -04:00
Matthew Brown
b091ceaa9a
Fix union of literal class string
2019-06-06 17:18:24 -04:00
Brown
9aeaf1a4ed
Fix #1746 - allow DeprecatedInterface to be suppressed with referencedClass
2019-06-06 14:48:33 -04:00
Brown
b1d1ab974c
Preserve formatting of callable type
2019-06-06 14:27:49 -04:00
Brown
0221282074
Be resilient to docblock spaces
2019-06-06 13:57:00 -04:00
Brown
2e7d26af6a
Replace object-like types too
2019-06-06 13:28:56 -04:00
Matthew Brown
0287adfd44
Fix const replacements when moving classes
2019-06-06 07:05:30 -04:00
Matthew Brown
4fc5d1d5c8
Rewrite use statements
2019-06-05 22:13:33 -04:00
Matthew Brown
c6063d1378
Only replace same-file param docblock types
2019-06-05 19:32:27 -04:00
Brown
ddd287fb3d
Move exception classes
2019-06-05 11:33:04 -04:00
Brown
6f0a6201de
Fix static calls after moving
2019-06-05 11:22:09 -04:00
Brown
3e15fa8bfe
Fix bad namespacing
2019-06-05 11:15:52 -04:00
Matthew Brown
f327d75116
Add actual file moving
2019-06-05 08:50:24 -04:00
Matthew Brown
ad4e2f72e2
Add means to guess PSR4 file path
2019-06-05 08:50:24 -04:00
Brown
f309c755f8
Add ability to move classes
2019-06-05 08:50:24 -04:00
Matthew Brown
13779e760e
Fix #1736 - forbid | in @psalm-assert
2019-06-05 00:46:55 -04:00
Brown
c7f35c263c
Fix #1737 properly
2019-06-04 14:08:49 -04:00
Brown
67c9851b95
Fix Psalm bug, and add test to capture it
2019-06-04 13:43:11 -04:00
Brown
d34c1a94db
Fix #1737 - treat !isset($x, $y) properly
2019-06-04 13:43:09 -04:00
Brown
778b95d335
Add support for moving class constants
2019-06-04 11:14:49 -04:00
Matthew Brown
a9809ab28a
Add property moving & renaming
2019-06-04 00:32:19 -04:00
Brown
20422cf223
Fix #1730 - parse @param * $foo
properly
2019-06-03 15:46:25 -04:00
Brown
523ad144a2
Fix @psalm-suppress with newline
2019-06-03 15:02:28 -04:00
Brown
3cbadf2eff
Fix regex
2019-06-03 12:24:18 -04:00
Brown
87d7ca8672
Trim lagging asterisks
2019-06-03 12:13:38 -04:00
Brown
9d1b620f55
Fix too-long line
2019-06-03 11:26:25 -04:00
Brown
ae8ccdbcd7
Add add info notification to progress
2019-06-03 11:20:42 -04:00
Brown
6eecb46b34
Fix #1725 - mcrypt_get_cipher_name was incorrect
2019-06-03 10:35:16 -04:00
Brown
29eda50ed9
Fix #1716 - no notice when using single arg in min
2019-06-03 10:33:54 -04:00
Brown
2f29dcce93
Fix #1728 - remove extra data in template-extends annotation
2019-06-03 10:28:54 -04:00
Marco Pivetta
624c7bc6fb
Renamed Fn
to TFn
to allow for PHP 7.4 compatibility
2019-06-03 08:21:25 -04:00
Matthew Brown
fc0f625f62
Add safeguards to prevent bad refactor input
2019-06-02 23:33:57 -04:00
Matthew Brown
2439a9f6a0
Allow instance method renaming, too
2019-06-02 12:02:39 -04:00
Bruce Weirdan
1c03d6f076
Implemented multiple composer roots for plugins ( #1723 )
...
Refs vimeo/psalm#1710
2019-06-02 11:23:56 -04:00
Bruce Weirdan
8534955572
Namespace autoloaded functions ( #1724 )
...
Since functions defined in files referenced in 'files' section in
composer autoload config are automatically loaded when composer
autoloader is included (for example when Psalm is installed into project
vendors), it's good idea to keep them namespaced. Otherwise it would
prevent dependents to declare their own functions in the global
namespace with the same names.
2019-06-02 11:23:25 -04:00
Matthew Brown
5eb7cb9b04
Improve file update progress output
2019-06-02 09:59:45 -04:00
Matthew Brown
0ad57695a8
Clone atomic extra types as well
2019-06-02 09:52:57 -04:00
Matthew Brown
2b0a17c1c8
Add simple tool to move static methods
2019-06-02 01:10:50 -04:00
Matthew Brown
a8046376dd
Use existing method in functiondocblockmanipulator
2019-06-01 18:46:24 -04:00
Matthew Brown
c569f3932c
Use separate method for parsing docblocks
2019-06-01 18:44:59 -04:00
Matthew Brown
22b6c8120a
Fix spacing issue
2019-06-01 17:22:33 -04:00
Matthew Brown
08544b8af9
Fix build
2019-06-01 17:10:53 -04:00
Matthew Brown
62be1cc1b0
Add rest of files
2019-06-01 16:57:33 -04:00
Matthew Brown
736f01c29e
Store more accurate return type location
2019-06-01 13:02:20 -04:00
Matthew Brown
e438387149
Shorten too-long line
2019-06-01 12:26:48 -04:00
Matthew Brown
909e02d441
Move var docblocks within function
2019-06-01 12:25:57 -04:00
Matthew Brown
dc5a5bcd9d
Simplify var docblock parsing signature
2019-06-01 11:53:32 -04:00
Matthew Brown
bee87c25eb
Add transformations for new A, param A
2019-06-01 10:32:49 -04:00
Matthew Brown
7e4de611bf
Migrate class references in static calls
2019-06-01 10:07:45 -04:00
Bruce Weirdan
169121b6fd
Fall back to autoload when loading plugin classes ( #1717 )
...
* Fall back to autoload when loading plugin classes
This allows to use plugins installed alongside Psalm (when it's not
installed in the project being analyzed).
This fixes (partially) vimeo/psalm#1710
* cs fix
2019-06-01 08:53:42 -04:00
Jørn Åne
0420865f72
Mark passphrase in openssl as nullable ( #1718 )
2019-06-01 08:53:11 -04:00
Bruce Weirdan
1b0158ad72
Fixed vimeo/psalm#1714 ( #1715 )
...
* Fixed vimeo/psalm#1714
Moved `isAbsolutePath()` into a functions file (`src/functions.php`)
that is now automatically loaded by composer autoload.
/cc: @jwage
* Dropped redundant bootstrap
2019-06-01 08:26:22 -04:00
Matthew Brown
a252fb84da
Fix namespaced method moving
2019-06-01 01:33:21 -04:00
Matthew Brown
cc89b9254d
Add initial ideas for moving static methods
...
Ref #1595
2019-06-01 00:56:54 -04:00
Matthew Brown
01f4e39719
Remove redundant code from toNamespacedString
2019-05-31 20:21:47 -04:00
Matthew Brown
f5e4b9b45f
Fix #1713 - don’t crash when a property is unset
2019-05-31 19:49:24 -04:00
Brown
5d39158787
Buffer messages a little, to reduce inter-process communication
2019-05-31 12:14:53 -04:00
Brown
543ae4074c
Change progressbar shading
2019-05-31 11:55:47 -04:00
Brown
a060da95bf
Allow MissingParamType alteration to be done in multithreaded mode
2019-05-31 11:55:24 -04:00
Brown
534e4c034b
Fix replacement for inherited methods
2019-05-31 10:37:26 -04:00
Matthew Brown
4002504ff0
Allow trait_exists to inform type for ReflectionClass
2019-05-31 09:43:46 -04:00
Matthew Brown
84c0554595
Get function analyser once per method
2019-05-31 01:49:54 -04:00
Matthew Brown
cd969c51e5
Generate missing param types from callers
...
Fixes #1707
2019-05-31 01:47:35 -04:00
Brown
e40aed53d4
Use Phan’s progress bar for large file counts, because it’s good
2019-05-30 19:00:26 -04:00
Brown
34b0310594
Lighten shade for default progress
2019-05-30 18:39:13 -04:00
Brown
dedd4aced0
Use a horizontal progress bar with more than 1500 files
...
cc @iluuu1994
2019-05-30 18:37:01 -04:00
Brown
9d7cf66279
Attempt to buffer unsent messages
2019-05-30 16:54:15 -04:00
Brown
8fd59674a2
Disable progress bar when forking processes
2019-05-30 15:15:12 -04:00
Brown
1774d4029b
Disable progressbar in threaded mode
2019-05-30 14:56:11 -04:00
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