Brown
f91e94b64e
Make sure to remember correct positions of @var references
2020-04-27 00:05:20 -04:00
Brown
d88c31f461
Support templated @mixin
2020-04-26 16:49:52 -04:00
Brown
52c0346b65
Fix #3213 - make sure static is bound from a static call with set class
2020-04-22 11:34:46 -04:00
Brown
edb07952fc
Static call inside throw does not violate purity
2020-04-18 12:43:51 -04:00
Brown
5988149272
Prevent checking assertions on $this-> types, always accessible
2020-04-12 14:13:42 -04:00
Brown
c733d6d373
Only perform assertions where the property type is known
...
cc @m0003r
2020-04-12 12:56:33 -04:00
m0003r
77270dc9b7
Getters automagic ( #3122 )
...
* When method is a plain getter: (1) correct method return type if property type is known (2) auto assert-if-true that corresponding property is not falsy
* do not use getter automagic if getter is overridden somewhere
2020-04-12 08:40:24 -04:00
m0003r
4d1be3f0c4
Allow plain assertions (@psalm-assert) about $this ( fixes #3105 ) ( #3108 )
...
* Allow plain assertions (@psalm-assert) about $this (fixes #3105 )
* Fix multiple assertion combining
* Fix multiple assertion combining for $this again
* Add test for multiple assertion combining for $this again
2020-04-09 08:15:07 -04:00
Brown
067104e170
Fix #3084 - keep track of upper and lower bounds of inferred template types
2020-04-07 00:13:56 -04:00
Matthew Brown
194f02507d
Allow conditional types to reference class constants
2020-03-29 13:37:37 -04:00
Matthew Brown
5ad55ae693
Fix type inference on simple conditional function calls
2020-03-29 10:42:57 -04:00
Matthew Brown
e85d22f004
Fix #3033 - allow __invoke on unions with non-objects
2020-03-28 23:41:05 -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
5cb1538448
Don’t add unnecessary taints
2020-03-27 19:09:15 -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
Brown
a9b6c51748
Improve new $class to make it more static-y
2020-03-24 18:30:08 -04:00
Brown
ec34a16291
Warn about invalid static returns
2020-03-24 18:00:20 -04:00
Brown
a7245b4459
Fix bugs
2020-03-23 13:29:00 -04:00
Matthew Brown
27a0651b6c
Fix #3009 - make sure return type is set when returning early
2020-03-23 13:25:55 -04:00
Matthew Brown
ce9eef9ed7
Improve returning
2020-03-23 13:25:55 -04:00
Matthew Brown
eeed5ecccc
Only prevent AbstractMethodCall on direct calls
...
Fixes #3007
2020-03-23 07:40:30 -04:00
Matthew Brown
951b943c38
Fix #2981 - check that class exists before making it a phantom
2020-03-17 15:04:50 -04:00
Matthew Brown
a4add37293
Check for variadic functions
2020-03-16 11:46:44 -04:00
Matthew Brown
3ebb5a1142
Fix #1843 - ignore intersection TooManyArguments issues
2020-03-15 14:01:33 -04:00
Matthew Brown
0022de1f13
Fix #946 - allow too many arguments when one of union agrees
2020-03-15 13:44:00 -04:00
Matthew Brown
0aca01faea
Improve fix to #2805
2020-03-14 01:09:12 -04:00
Matthew Brown
5210f9b69b
Fix #2966 - register constructor use for new $templated_class
2020-03-12 11:42:01 -04:00
Matthew Brown
c6a5781e78
Break apart FunctionCallAnalyzer::analyze method
2020-03-12 11:05:50 -04:00
Matthew Brown
96fbcd5a64
Break out more methods
2020-03-11 23:38:49 -04:00
Matthew Brown
329c9afdf5
Actually remove method
2020-03-11 23:20:19 -04:00
Matthew Brown
973703e396
Break out template param collection
2020-03-11 23:15:15 -04:00
Matthew Brown
9732697e45
Break out method call purity checks
2020-03-11 23:09:09 -04:00
Matthew Brown
bfb919d26a
Break out methods into their own classes
2020-03-11 23:04:52 -04:00
Matthew Brown
8f28f41399
Improve magic checks
2020-03-11 18:42:41 -04:00
Matthew Brown
950260a041
No erroneous UndefinedMethod when accessing sealed class
2020-03-11 18:27:07 -04:00
Matthew Brown
43d9361395
Break out more methods
2020-03-11 13:35:33 -04:00
Matthew Brown
89f6866893
Fix magic property test
2020-03-11 12:45:30 -04:00
Matthew Brown
50cddb5350
Break out purity checks
2020-03-11 12:24:25 -04:00
Matthew Brown
ef64e6e8eb
Improve abstract call handling
2020-03-11 10:36:39 -04:00
Matthew Brown
27598f508e
Fix too-long line
2020-03-11 10:18:53 -04:00
Matthew Brown
0d62fbdf98
Detect erroneous abstract static method calls
2020-03-11 10:18:40 -04:00
Matthew Brown
d2950af636
Break apart MethodCallAnalyzer a bit
2020-03-11 09:38:09 -04:00
Brown
2a72990d62
Add back support for unused method checks
2020-03-09 18:55:35 -04:00
Brown
40a7a1156f
Fix #2930
2020-03-09 09:45:35 -04:00
Matthew Brown
b999037263
Fix #2928 - properly expand out skipped template inheritance
2020-03-06 19:24:47 -05:00
Matthew Brown
766effb0db
Improve accuracy of diff generation
2020-03-06 13:48:59 -05:00
Matthew Brown
10b807b4f6
Fix reference generation from methods in --diff mode
2020-03-06 13:02:34 -05:00
Matthew Brown
a2a507166d
Fix #2923 - remove hack to fix a template issue
2020-03-06 09:42:23 -05:00
Matthew Brown
88c4088bc2
Prevent self/static refs outside classes
...
Fixes #2895
2020-03-01 17:25:55 -05:00
Matthew Brown
39d6800531
Remove default
2020-02-27 21:54:19 -05:00
Matthew Brown
c565afde64
Fix method call after method_exists check
2020-02-27 21:46:58 -05:00
Matthew Brown
1f19aed31b
Fix support for replacing mocked types in own classes
2020-02-27 21:36:03 -05:00
Matthew Brown
eeb2858b30
Add additional fix for #2784
2020-02-27 08:56:39 -05:00
Brown
ea0a670230
Flesh out class constants in function call return type
...
Fixes #2884
2020-02-26 17:28:44 -05:00
Matthew Brown
1abece4f7c
Use more accurate types
2020-02-23 17:03:27 -05:00
Matthew Brown
1c218c020e
Fix #1684 - detect error in assertion on return type of direct call
2020-02-22 10:41:57 -05:00
Matthew Brown
4707b21227
Fix tests
2020-02-21 22:15:25 -05:00
Matthew Brown
aea33824e6
Fix #1555 - allow phantom class constants
2020-02-18 19:46:05 -05:00
Matthew Brown
653353709a
Use MethodIdentifier object instead of string
2020-02-14 20:54:26 -05:00
Matthew Brown
422bd25f04
Maybe fix indentation
2020-02-13 19:33:47 -05:00
Matthew Brown
95e1bc0c48
Fix line breaks
2020-02-13 18:32:40 -05:00
Brown
1c42875179
Support lowercase-string and warn about unnecessary calls to strtolower
2020-02-13 16:38:58 -05:00
Philip Hofstetter
395cf587d3
add plugin hook to be called after every function call
...
compared to AfterFunctionCallAnalysisInterface which gets only called
after a call to a function declared within the project, a plugin
implementing AfterEveryFunctionCallAnalysisInterface will get called for
every function call, including calls of PHP builtins.
On the other hand, this interface doesn't allow modification of the code
nor tweaking the return type, but it's still useful for accounting
purposes and for depreacting calls to PHP builtins
this fixes #2804
2020-02-13 09:10:24 -05:00
Brown
f141f7c526
Improve --diff checks by including trait-using classes in dependents
2020-02-11 16:39:33 -05:00
Brown
89a0b101e4
Fix #2784 - no crash when get_class arg is mixed
2020-02-10 14:44:33 -05:00
Matthew Brown
3559fdd6b3
Fix #2742 - prevent paradoxes in assert calls
2020-02-09 11:42:41 -05:00
Matthew Brown
4de6f5c4ec
Fix #2442 - using asserting after a MixedAssignment
removes that error
2020-02-08 23:01:45 -05:00
Brown
d5f71bf529
Localise template checks to class being tested
2020-02-06 16:38:45 -05:00
Brown
54efbbe831
Fix bad assertion
2020-02-06 16:32:26 -05:00
Brown
9af12932b5
Add slash
2020-02-06 15:09:34 -05:00
Brown
6116b457ed
Port over more fixes from template match refactor
2020-02-06 15:07:57 -05:00
Matthew Brown
f0fc9cce5f
Fix missing param doc
2020-02-01 18:24:09 -05:00
Matthew Brown
d0b87b6cb0
Fix #2723 - use magic method return type where necessary
2020-02-01 18:21:32 -05:00
Matthew Brown
5eb2ebc508
Add more type-system protections for bad array args
2020-01-29 23:41:17 -05:00
Matthew Brown
933dff9e20
Fix #2712 - allow __toString to have more specific type
2020-01-29 22:28:40 -05:00
Brown
c3a989f6a8
Fix bad var
2020-01-24 15:44:18 -05:00
Brown
c09f97ed6e
Fix #2691 - allow list to be a callable maybe
2020-01-24 15:09:06 -05:00
Brown
38e9e8ba87
Register methods as used
2020-01-24 14:53:32 -05:00
Brown
548c9f7e65
Remove unused var
2020-01-24 14:09:25 -05:00
Brown
9f077f5aec
Fix formatting
2020-01-24 14:08:01 -05:00
Brown
faf6afdce8
Support call_user_func evaluation
...
Fixes #726
2020-01-24 13:34:50 -05:00
Brown
0ac20e76c4
Fix #2631 - evaluate purity of uasort closure
2020-01-23 13:49:15 -05:00
Matthew Brown
4a03c4aedd
Fix impossible isset checks
2020-01-14 21:54:02 -05:00
Brown
3fd70a9c88
Only set if non-null
2020-01-14 17:03:58 -05:00
Brown
adc658901a
Improve inference of constant() calls
2020-01-14 16:56:09 -05:00
Matthew Brown
1f777bec0e
Capture non-empty-string from concat more effectively
2020-01-07 01:44:12 -05:00
Brown
083fbc55e1
Add more specific UndefinedMagicMethod issue
2020-01-06 14:23:33 -05:00
Matthew Brown
9fa2db1b6c
Move Union::getTypes to Union::getAtomicTypes
2020-01-04 12:20:26 -05:00
Brown
ca1e65b29b
Handle iterators better
2020-01-02 10:41:43 -05:00
Matthew Brown
4630d19d45
Fix psalm running
2020-01-01 12:49:12 -05:00
Matthew Brown
5bd9b988fb
Fix #2494 - don’t use extended name for anonymous classes
2019-12-31 08:46:52 -05:00
Matthew Brown
44441042f0
Fix style things
2019-12-30 11:07:04 -05:00
Matthew Brown
19faa31865
Allow assertions on nested properties
2019-12-30 10:01:31 -05:00
Matthew Brown
c79ba0b09e
Include non-empty-string type in more places
2019-12-30 07:25:36 -05:00
Matthew Brown
2b88261ecd
Fix templated assertion cc @vasily-kartashov
...
This is a good reason for you to skip 3.8.1
2019-12-29 11:57:54 -05:00
Matthew Brown
55c2f7faa2
Fix #2508 - don’t replace templated types with generic ones inside own function
2019-12-28 18:38:02 -05:00
Matthew Brown
ce9435da19
Fix #2521 - use correct context class when analysing trait
2019-12-28 15:56:26 -05:00
Matthew Brown
982fe627e0
Fix #2515 - allow chained assertions on @psalm-mutation-free methods
2019-12-27 16:44:55 -05:00