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