Brown
bcd7478352
Reduce memory footprint a little
2020-06-25 19:12:30 -04:00
Andrei Petre
3497ca07b6
Extending final class is prohibited #3037 ( #3576 )
2020-06-13 00:29:59 -04:00
Brown
d04e21ee5a
Define mixin declaring classname
2020-05-26 23:32:07 -04:00
Brown
240b2f898c
Add some negative test cases for @mixin
...
Also fix #3452
2020-05-25 00:19:52 -04:00
Brown
0b2da18f1e
Break up StatementsAnalyzer
2020-05-19 12:56:30 -04:00
Matthew Brown
8c236f411a
Fix #3353 - allow extending nested when nested as type is mixed
2020-05-12 15:07:16 -04:00
Brown
8f2f2617d4
Improve refactor
2020-05-10 22:45:01 -04:00
Brown
5f4d162dd5
Break out type expander into separate class
2020-05-10 22:39:18 -04:00
Matthew Brown
1b752d06ab
Fix #3201 - add additional constraints on constructor initialisation
2020-04-21 00:04:47 -04:00
Brown
5ef82b53f6
Fix #3137 - support nested templates in class definitions
2020-04-17 01:16:15 -04:00
Matthew Brown
6f28ee684a
Fix #3156 - only override existing property types with @property suggestions
2020-04-16 00:22:00 -04:00
Matthew Brown
82197f1761
Add many slashes
2020-03-29 15:56:45 -04:00
Matthew Brown
ce3532490c
Add profiling for analysing slow methods
2020-03-29 15:42:00 -04:00
Matthew Brown
5395183837
Use more accurate means of determining whether function did return
2020-03-28 23:37:42 -04:00
Matthew Brown
93735712f0
Fix #3032 - always replay docblock issues when analysing files
2020-03-28 19:54:55 -04:00
Matthew Brown
47c1470e3b
Refactor reference checks to use more appropriate properties
2020-03-28 16:30:56 -04:00
Brown
cc548a45fa
Improve detection of unused classes
2020-03-28 14:45:58 -04:00
Brown
056f4aaac6
Fix #3027 - inherited properties should be templated properly
2020-03-27 18:31:48 -04:00
Brown
031c5be8e6
Check trait methods better
2020-03-27 00:37:33 -04:00
Brown
971ae50bea
Do prep work for #3024 - improve handling of absent class references
2020-03-26 12:35:27 -04:00
Matthew Brown
f94ab22a5f
Be better about strict inference
2020-03-25 09:18:49 -04:00
Matthew Brown
26694345d6
Fix unknown variable
2020-03-21 20:53:46 -04:00
Matthew Brown
6746f1c047
Fix #3004 - reset property types inside a closure defined in a class
2020-03-21 20:46:38 -04:00
Matthew Brown
96fbcd5a64
Break out more methods
2020-03-11 23:38:49 -04:00
Matthew Brown
973703e396
Break out template param collection
2020-03-11 23:15:15 -04:00
Matthew Brown
bfb919d26a
Break out methods into their own classes
2020-03-11 23:04:52 -04:00
Brown
2c8688dd97
Don’t crash when conditionally defining classes with properties
2020-03-09 14:24:19 -04:00
Matthew Brown
c0c878cc9d
Don’t cache all traits
2020-03-02 22:27:54 -05:00
Matthew Brown
e0d555e203
Allow function names to passed in as strings for callable template resolution
2020-02-29 15:43:45 -05:00
Matthew Brown
a706f4d722
Fix #2242 - warn when using mutable dependencies
2020-02-22 10:04:46 -05:00
Matthew Brown
653353709a
Use MethodIdentifier object instead of string
2020-02-14 20:54:26 -05:00
Matthew Brown
07a53f6b81
Fix #2789 - Numeric should not be a reserved class name
2020-02-11 22:34:34 -05:00
Brown
f141f7c526
Improve --diff checks by including trait-using classes in dependents
2020-02-11 16:39:33 -05:00
Brown
d8f5ad190b
Improve invalidation of inherited properties
2020-02-10 17:03:51 -05:00
Matthew Brown
da541dbb51
Remove some unnecessary errors
2020-02-06 23:10:18 -05:00
Brown
6116b457ed
Port over more fixes from template match refactor
2020-02-06 15:07:57 -05:00
Brown
4c83ca75b3
Fix #2738 - clear out property issues when modifying constructors
2020-02-03 16:43:25 -05:00
Matthew Brown
d0b87b6cb0
Fix #2723 - use magic method return type where necessary
2020-02-01 18:21:32 -05:00
Matthew Brown
8202af957d
Index issues by file to reduce some lookups
2020-01-21 21:07:44 -05:00
Brown
0132b3789b
Fix #2665 - warn about abstract class interface inheritance issues
2020-01-21 11:46:51 -05:00
Matthew Brown
9fa2db1b6c
Move Union::getTypes to Union::getAtomicTypes
2020-01-04 12:20:26 -05:00
Matthew Brown
3d03da271d
Fix tests to give more accurate locations
2019-12-20 18:18:26 +00:00
Matthew Brown
a4191171bf
Fix #2483 - treat intersecting PHPDocs from interfaces better
2019-12-20 01:42:57 +00:00
Brown
6d02aa86e8
Reconcile string emptiness a bit better
2019-12-13 15:51:54 -05:00
Matthew Brown
04879af105
Be less forgiving when extending builtin generic classes
2019-11-30 09:32:21 -05:00
Bruce Weirdan
33142e7637
Use unalised trait name when importing aliased trait ( #2393 )
...
Fixes vimeo/psalm#2392
Refs vimeo/psalm#2278
2019-11-29 01:21:00 -05:00
Matthew Brown
d1fbd1fa26
Add working arrow-functions implementation
2019-11-26 23:52:26 -05:00
Brown
0bcb7863f3
Use better system for storing inferred types and assertions
2019-11-25 11:44:54 -05:00
Brown
895737d8be
Fix style
2019-11-08 12:49:53 -05:00
Brown
ac6256e645
Fix #2312 , improve understanding of template replacement
2019-11-08 11:56:41 -05:00
Brown
a8ed6ba9c4
Fix #2308 - prevent specialisation from bound params
2019-11-06 11:20:51 -05:00
Matthew Brown
8f421dc0bb
Refactor template calculation out from Psalm\Type\Union
2019-11-03 21:27:40 -05:00
Matthew Brown
56d250777e
Add back interface complaint
2019-09-22 20:42:31 -04:00
Matthew Brown
add051c2be
Enforce immutability constraints only on interface methods
2019-09-22 09:26:26 -04:00
Matthew Brown
9c629414a7
Fix #2138 - complain when inheriting from immutable interfaces without annotation
2019-09-21 22:52:30 -04:00
Matthew Brown
9ad6c36d9b
Conditionally verify that array offsets exist ( #2147 )
...
* Check array offsets idea
* Clean up some issues
* Add a few light fixes
* Add docs
2019-09-18 14:21:06 -04:00
Matthew Brown
781e711243
Allow use of namespaced Resource class
...
Ref #2052
2019-08-26 00:08:18 -04:00
Matthew Brown
2146f73782
Prepare for tracking unused suppressions
...
Ref #1444
2019-08-18 12:25:48 -04:00
Brown
3ff2a64e16
Don’t complain about untyped properties missing constructors
2019-08-13 13:38:15 -04:00
Matthew Brown
fac7df2ee0
Explicitly mixed properties need not be initialised
2019-08-11 00:25:30 -04:00
Matthew Brown
7c6b1581d3
Add warnings about uninitialised properties to mixed as well
2019-08-11 00:22:28 -04:00
Matthew Brown
ea1f9874fb
Remove more memory leaks
2019-08-02 01:55:24 -04:00
Matthew Brown
90854c4094
Fix broken behaviour when analysing interface test methods
2019-07-28 19:44:36 -04:00
Matthew Brown
f432cc0884
Fix #1846 - warn about missing interface return types
2019-07-28 19:03:12 -04:00
2e3s
f15cc7dd5b
Mark private properties unused when referenced only in constructor ( #1962 )
...
* Mark private properties unused when referenced only in constructor
If a private property is used only in constructor then most likely
it's a dead code since there is no need to have the class property.
But such static properties can be accessed between the calls.
* Ignore the private property issue on alter
* Fix the related dead code psalm
* Add a missing condition into the test
2019-07-21 23:29:16 -04:00
Brown
7268558aa7
Prevent unnecessary warnings
2019-07-11 11:07:39 -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
Matthew Brown
c66a106622
Improve performance by doing less cloning
...
Ref #1837
2019-06-26 00:14:06 -04:00
Brown
91686bef4b
Improve robustness of template checks
2019-06-25 13:20:30 -04:00
Matthew Brown
c0b86bd40d
Use uppercase template_type_extends keys
2019-06-24 23:43:04 -04:00
Brown
aa6677a177
Add autocompletion for some classes
...
Ref #1822
2019-06-21 17:10:35 -04:00
Brown
d1630863ad
Fix #1787 - prevent initialisation when nullable isn’t set
2019-06-14 16:53:40 -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
9c4599a0f0
Add better support for inheriting docblocks
2019-06-11 11:19:57 -04:00
Matthew Brown
36ac342496
Fix handling of property type with default
2019-06-06 17:42:23 -04:00
Brown
9aeaf1a4ed
Fix #1746 - allow DeprecatedInterface to be suppressed with referencedClass
2019-06-06 14:48:33 -04:00
Brown
3e15fa8bfe
Fix bad namespacing
2019-06-05 11:15:52 -04:00
Brown
f309c755f8
Add ability to move classes
2019-06-05 08:50:24 -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
Matthew Brown
cc89b9254d
Add initial ideas for moving static methods
...
Ref #1595
2019-06-01 00:56:54 -04:00
Matthew Brown
f5e4b9b45f
Fix #1713 - don’t crash when a property is unset
2019-05-31 19:49:24 -04:00
Matthew Brown
cd969c51e5
Generate missing param types from callers
...
Fixes #1707
2019-05-31 01:47:35 -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
4302596654
Revert "Implement better progress"
...
This reverts commit 042070d0fd
.
2019-05-27 13:07:02 -04:00
Ilija Tovilo
042070d0fd
Implement better progress
2019-05-26 23:18:48 -04:00
Matthew Brown
790bc53bfd
Fix #1681 - interpret parent annotation properly
2019-05-25 11:51:09 -04:00
Matthew Brown
cfde83775d
Fix Psalm errors
2019-05-14 19:30:10 -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
cd16dc7ac3
psalm-internal - PHPBCBF fixes
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
4f26c8d749
Fix #1597 - ternary else should only know about first conditional expression
2019-05-02 13:43:18 -04:00
Brown
ff14f671b1
Add hopefully-more-portable method for evaluating method/property usage
2019-04-16 16:07:48 -04:00
Brown
24084eb2ec
Use more specific class name
2019-04-15 15:45:24 -04:00
Matthew Brown
934fb53d65
Improve error locations for PropertyNotSetInConstructor errors
2019-04-14 12:48:59 -04:00
Matthew Brown
d145f17782
Fix #1548 - allow parallel execution with --find-dead-code
2019-04-13 15:38:09 -04:00
Brown
26e2de93c7
Prepare to enable paralellised use of --find-dead-code
...
References #1548
2019-04-12 18:28:07 -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
Matthew Brown
230680fd1c
Fix #1513 - use correct param types when examining abstract trait methods
2019-03-28 22:47:17 -04:00
Brown
b9ba24929d
Refactor storage of template names to prevent clashes
2019-03-22 15:59:10 -04:00
Brown
8d06c6a700
Fix #1480 by remembering where a property was set
2019-03-19 19:43:18 -04:00
Matthew Brown
a0659a02f1
Fix #1418 - support templated union types
2019-03-16 11:15:25 -04: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
9e8c3b8c6e
Only check interfaces for static matchup
2019-03-03 18:13:15 -05:00
Matthew Brown
4ba15ec18d
Flip abstract trait analysis implementation checks
...
Fix #1414
2019-03-02 14:17:26 -05:00
Matthew Brown
5c76ab35c8
Allow properties to be set regardless of visibility
2019-03-01 17:30:55 -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
3ad1abece4
Add generation of json artifacts
2019-02-24 01:33:25 -05:00
Matthew Brown
f87827e812
Fix #1288 - prevent template names from clashing with real-world classes
2019-02-21 21:54:00 -05:00
Bruce Weirdan
8408effe57
Dropped unused uses
2019-02-17 13:17:45 -05:00
Matthew Brown
c6b3fc512f
Don’t throw exception when ignoring trait absence
2019-02-10 16:32:30 -05:00
Matthew Brown
62fb8035bf
Fix #1309 - no PropertyNotSetInConstructor warnings for grandchild of class
2019-02-10 15:01:10 -05:00
Matthew Brown
db89b3cc3f
Add initial support for fixing MissingParamType
2019-02-02 11:28:48 -05:00
Matthew Brown
45058ea494
Fix possible crash when class-string class doesn’t exist
2019-01-28 01:12:41 -05:00
Matthew Brown
081ba4b204
Fix #1072 - add support for @use SomeTrait<T>
2019-01-27 23:12:40 -05:00
Brown
fcc9d1a979
Fix #1244 and fix #1243 - add template-extends checks
2019-01-25 15:31:17 -05:00
Brown
c0f3197790
Fix #1238 - only emit MissingTemplateParam on direct interface implementers
2019-01-25 10:10:22 -05:00
Brown
cd0a7441d9
Add warnings for extended template param counts off
2019-01-24 17:55:03 -05:00
Brown
650c2b70f8
Fix #1236 - forbid bad class names in @extends
2019-01-24 16:43:22 -05:00
Brown
5352084188
Fix #1234 - apply @template-extends to inherited method signatures
2019-01-24 16:09:04 -05:00
Matthew Brown
03c5823051
Fix #1217 - allow protected property to be se by parent constructor
2019-01-20 11:20:39 -05:00
Matthew Brown
9c5ef33997
Allow @property to override parent class property type
...
Fixes #1214
2019-01-19 14:26:27 -05:00
Matthew Brown
bf13ff2e7d
Detect bad interface types
2019-01-19 12:19:51 -05:00
Matthew Brown
94af3b6c51
Add automatic inheritance to properties
...
Fixes #1210
2019-01-19 10:09:26 -05:00
Brown
d068f1535d
Fix issue with implemented class interface in subclass
2019-01-16 15:08:11 -05:00
Brown
ee366015f7
Fix #1205 - allow traits to override inheritance checks
2019-01-16 10:59:06 -05:00
Matthew Brown
c43734f3ab
Don’t localise PropertyNotSetInConstructor issues
2019-01-15 21:34:18 -05:00
Matthew Brown
b43a6a31f1
Enable casing plugin and fix issues it found
2019-01-12 10:52:23 -05:00
Brown
2195caaeae
Check type var
2019-01-11 17:28:57 -05:00
Matthew Brown
6e585008f2
Fix #1183 - add hook for class analysis
2019-01-09 08:28:12 -05:00
Matthew Brown
0f6ce983f4
Fix #1154 - parent::foo() calls should not cause exception when parent does not exist
2018-12-30 18:28:15 +01:00
Matthew Brown
b32000fa05
Fix #689 - add checks for @internal annotations
2018-12-01 18:37:49 -05:00
Brown
9e4765663d
Fix #999 - respect @method annotations to redefine parent methods
2018-11-30 15:13:25 -05:00
Matthew Brown
26947888f6
Add some basic support for class_alias
2018-11-29 00:05:56 -05:00
Matthew Brown
9709263b8d
Make many PropertyAnalyzer properties private
2018-11-12 11:20:59 -05:00
Matthew Brown
4d79b61e93
Change _checker to _analyzer
2018-11-12 11:20:59 -05:00
Matthew Brown
4688b25fd9
Move internal classes to own namespace
2018-11-12 11:20:59 -05:00