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
43d9ecdf28
Enable completion by default in the language server
2019-06-13 16:58:17 -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
7a1a728cee
Move docs into subfolders
2019-06-09 00:54:13 -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
Brown
9573429f1e
Always disable uopz
...
Ref #1741
2019-06-06 10:36:26 -04:00
Matthew Brown
90b160aece
Allow extensions to be disabled during --init
...
Ref #1741
2019-06-06 08:42:44 -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
99e6cd819f
Remove unnecessary command
2019-06-03 12:30:20 -04:00
Brown
65a7c1bbcd
Improve documentation for psalm-refactor
2019-06-03 12:24:32 -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
Barney Laurance
e0486ba757
Fix psalm --alter ( #1719 )
2019-06-01 09:22:39 -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
24a484c9dc
Turn on unused code detection with --issues=all
2019-05-31 13:48:03 -04:00
Brown
6f5da23840
Remove redundant check
2019-05-31 13:22:40 -04:00