Matthew Brown
8d59ab736f
Allow password_hash to return false or null (this will change in 7.4)
2019-03-03 17:09:43 -05:00
Matthew Brown
b7320e2778
Remove unnnecessary param
2019-03-03 16:45:35 -05:00
Matthew Brown
fb9e9bea32
Fix const reference in current context
2019-03-03 16:43:24 -05:00
Matthew Brown
472cdf6bea
Fix #1379 - allow @param-out to change type
2019-03-03 15:11:09 -05:00
Matthew Brown
82e6876011
Fix #1397 - fix get_class behaviour for new instances
2019-03-02 18:02:11 -05:00
Matthew Brown
ef0abf1c30
Fix #1411 - allow covariance on extended templates
2019-03-02 16:31:34 -05:00
Matthew Brown
f9b1a63146
Fix #1421 - variadic params are extra
2019-03-02 15:26:18 -05:00
Matthew Brown
4757c2fe8e
Fix messaging
2019-03-02 15:19:59 -05:00
Matthew Brown
5e61f198e1
Fix #1419 - allow checks against empty arrays
2019-03-02 15:18:29 -05:00
Matthew Brown
efbcf7dc5b
Fix #1417 - store root file path when scanning for manipulations
2019-03-02 15:07:26 -05:00
Matthew Brown
4ba15ec18d
Flip abstract trait analysis implementation checks
...
Fix #1414
2019-03-02 14:17:26 -05:00
bugreportuser
65102b8088
Fix non-empty-array @param in namespace ( #1416 )
2019-03-02 08:35:50 -05:00
Matthew Brown
5c76ab35c8
Allow properties to be set regardless of visibility
2019-03-01 17:30:55 -05:00
Matthew Brown
4bbe13e28f
Fix #1412 - use proper method name where appropriate
2019-03-01 13:33:23 -05:00
Matthew Brown
564da61937
Add missing return type
2019-03-01 09:24:52 -05:00
Matthew Brown
619590aa71
Fix parsing of template of type with spaces
...
Fixes #1406
2019-03-01 09:20:59 -05:00
Bruce Weirdan
e734b54aab
Fix vimeo/psalm#1409 ( #1410 )
2019-03-01 09:09:48 -05:00
Matthew Brown
4cc93644e5
Added more descriptive type for callables
...
Ref #1408
2019-03-01 09:06:37 -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
d1cf9d61ba
Fix #1398 - improve casting rules for resource
2019-03-01 00:50:22 -05:00
Matthew Brown
42d4156423
Add DOMElement constructor
2019-03-01 00:09:22 -05:00
Matthew Brown
ee942b3c02
Fix return type
2019-03-01 00:06:35 -05:00
Matthew Brown
55e125f495
Check method args before returning
2019-02-28 23:59:17 -05:00
Matthew Brown
b8b752ed01
Fix #1402 - don’t halt after suppressing static UndefinedMethod
2019-02-28 23:46:11 -05:00
Matthew Brown
b3c5120d72
Fix #1403 - warn about duplicate templates
2019-02-28 23:43:55 -05:00
Brown
b2c236a1a1
Allow @psalm-variadic annotation
2019-02-28 14:44:35 -05:00
Brown
815bf845dc
Improve handling of method/function return types
2019-02-27 17:06:44 -05:00
Brown
f8c2b2d81a
Fix #1399 - allow literal comparison to scalar
2019-02-27 16:21:23 -05:00
Brown
07825c9ff8
Fix long line
2019-02-27 16:16:19 -05:00
Brown
601f303de2
Fix position of invalid param
2019-02-27 16:00:44 -05:00
Brown
d46c6ac0e4
Fix #1395 - set all callable types as coming from a docblock
2019-02-27 14:52:58 -05:00
François Kooman
fa26499dd9
fix return value for Sodium\crypto_aead_aes256gcm_decrypt
2019-02-27 14:24:57 -05:00
Brown
1263a2e9a3
Fix missing param location
2019-02-27 14:17:11 -05:00
Brown
119687f934
Fix redundant condition message when negating a docblock type
2019-02-27 14:02:02 -05:00
Matthew Brown
6af222f36a
Fix #1393 - support analysing non-empty-array calls
2019-02-27 09:08:27 -05:00
Matthew Brown
b310cc07b5
Array access on objects should always be treated as method call
2019-02-26 21:24:30 -05:00
Bruce Weirdan
9c5ee3e9d6
Added AfterCodebasePopulated hook registration
2019-02-26 01:16:22 -05:00
Bruce Weirdan
24a71be425
Added Hook\AfterCodebasePopulatedInterface
2019-02-26 01:16:22 -05:00
Matthew Brown
8650f9eb1a
Fix #1356 - improve assertion system to work better on function calls
2019-02-26 01:03:33 -05:00
Bruce Weirdan
abb1c95b94
Limited custom metadata to be (array of) scalars
...
Also moved `$custom_metadata` property to trait
2019-02-25 10:19:31 -05:00
Bruce Weirdan
19a9ff4bcf
Added custom storage metadata
2019-02-25 10:19:31 -05:00
Brown
f5ce136dc7
Simplify handle type for pcntl_signal
2019-02-25 10:16:16 -05:00
bugreportuser
7f7125f334
Fix crash for empty string array access
2019-02-25 08:26:12 -05:00
Matthew Brown
4f770d356e
Fix #1384 - evaluate array fetches even when we don’t know function
2019-02-24 09:58:11 -05:00
Matthew Brown
3ad1abece4
Add generation of json artifacts
2019-02-24 01:33:25 -05:00
Matthew Brown
fff56f7b26
Use better heuristic to determine missing types
2019-02-23 11:39:00 -05:00
Matthew Brown
cdae79b9fe
Fix unnecessary params in Psalm codebase
2019-02-23 11:31:33 -05:00
bugreportuser
68a135f434
Allow @psalm-property and @psalm-method
2019-02-23 11:04:08 -05:00
bugreportuser
34b333cf7f
Fix file return types
2019-02-23 11:03:35 -05:00
Matthew Brown
6671e0dc7c
Fix #1382 - flag unused docblocks
2019-02-23 11:02:04 -05:00
Matthew Brown
6420a5605b
Put nullable in docblock for PHP 7.0
2019-02-22 01:05:35 -05:00
Matthew Brown
3d4710c9d3
Add better checks for invalid array_map/array_filter args
2019-02-22 00:50:41 -05:00
Matthew Brown
ce4f2e6334
Fix #1364 - use proper types for extended getIterator calls
2019-02-21 23:01:34 -05:00
Matthew Brown
f87827e812
Fix #1288 - prevent template names from clashing with real-world classes
2019-02-21 21:54:00 -05:00
Matthew Brown
1c8a573b5f
Change TGenericParam to TTemplateParam
2019-02-21 21:40:06 -05:00
Brown
154e1fa38b
Fix #1375 - improve treatment of dynamically-declared namespaces
2019-02-21 18:19:12 -05:00
Brown
653555a8cc
Remove unused var
2019-02-21 17:49:33 -05:00
Brown
41b133178a
Improve handling of count comparisons
2019-02-21 17:17:10 -05:00
Brown
00b225beda
Strip $ in token
2019-02-21 16:13:31 -05:00
Brown
0b7d4e4aad
Add slightly hacky support for param names in callables
2019-02-21 16:00:18 -05:00
Brown
375f3917b2
Prevent empty unions as soon as possible
2019-02-21 15:09:55 -05:00
Brown
b7a0950aea
Prevent passing casts to byref vars
2019-02-21 13:26:37 -05:00
Bruce Weirdan
991fd90a12
Added tests for exposed methods
2019-02-21 08:43:57 -05:00
Matthew Brown
0e5ee1a811
Fix typo
2019-02-21 08:43:57 -05:00
Bruce Weirdan
adc5d24399
Added documentation for several exposed methods
...
Documented:
- isTypeContainedByType
- canTypeBeContainedByType
- getKeyValueParamsForTraversableObject
2019-02-21 08:43:57 -05:00
Bruce Weirdan
a0e040a462
Expose more internal methods through Codebase
...
- `bool Codebase::canTypeBeContainedByType(Union $input, Union $container)`
- `array{Union,Union} Codebase::getKeyValueParamsForTraversableObject(Atomic $type)`
For usage, see psalm/phpunit-psalm-plugin#15
2019-02-21 08:43:57 -05:00
Brown
1e2c29041f
@param-out should not override @param byref type def
...
when checking for unuitialised vars
2019-02-20 18:53:42 -05:00
Brown
079ac44263
Prevent pass by ref when type type is given
2019-02-20 17:43:12 -05:00
Brown
d2968081f8
Fix #1370 - allow phpstorm generic iterator
2019-02-20 11:13:40 -05:00
bugreportuser
024488c1d6
Use helper methods
2019-02-20 10:55:36 -05:00
bugreportuser
c097c59f33
Remove wrong condition
2019-02-20 10:55:36 -05:00
bugreportuser
14ee221075
Fix errors
2019-02-20 10:55:36 -05:00
bugreportuser
cd23a19931
Allow concat for define first arg
2019-02-20 10:55:36 -05:00
bugreportuser
f603449745
Infer literal string for __namespace__
2019-02-20 10:55:36 -05:00
Matthew Brown
6b045236e0
Use appearing method for array lookup
2019-02-20 02:41:59 -05:00
Brown
348b8eef1f
Fix #1366 - don’t complain about invalid array offset when possibly mixed
2019-02-19 11:42:24 -05:00
Matthew Brown
cd2eb3edb9
Fix #1361 - flesh out array map return type before using
2019-02-19 01:25:36 -05:00
bugreportuser
61e086ac7b
Ignore more redundant issues
2019-02-18 22:44:26 -05:00
Matthew Brown
f49be31aeb
Fix #1332 - use the correct identifier for trait property resolution
2019-02-18 16:52:09 -05:00
Matthew Brown
41255b42c6
Fix #1325 - allow MissingThrowsDocblock to be suppressed
2019-02-18 16:41:06 -05:00
Matthew Brown
75104f4712
Fix #1359 - error on bad iterable args
2019-02-18 16:35:23 -05:00
Matthew Brown
6b419452af
Fix #1337 - don’t crash when examining __call methods in initialisation checks
2019-02-18 16:04:27 -05:00
Matthew Brown
81a5a24e15
Suppress PossiblyUnusedMethod
2019-02-18 15:56:31 -05:00
Bruce Weirdan
e87f500458
Added Psalm\Codebase::isTypeContainedByType()
2019-02-18 15:56:31 -05:00
Matthew Brown
3fdef1a032
Fix #1350 - allow parameterised iterable and unparameterised traversable
2019-02-18 13:01:20 -05:00
Matthew Brown
709a5c31da
Allow bitwise or ops to change type
...
Ref #1340
2019-02-18 12:53:55 -05:00
Matthew Brown
5aaa68c214
Add better error message and also update callmap
2019-02-18 12:28:30 -05:00
Matthew Brown
12f1ffca11
Fix issue reconciling mixed vars inside loop
2019-02-18 11:39:05 -05:00
ADmad
8d54825582
Fix signature for datefmt_create().
2019-02-18 09:33:08 -05:00
Bruce Weirdan
cb453a8da9
Allow suppressing UnusedClass on specific classes
...
This allows suppressing UnusedClass with either `referencedMethod` or
`@psalm-suppress`
Fixes vimeo/psalm#1353
2019-02-18 09:32:09 -05:00
bugreportuser
24cdb6e1d3
Fix array_unique stub
2019-02-17 21:35:54 -05:00
Matthew Brown
5777e008c0
Remove var_dump
2019-02-17 13:18:23 -05:00
Bruce Weirdan
8408effe57
Dropped unused uses
2019-02-17 13:17:45 -05:00
bugreportuser
93bc7c477e
Fix mb return types
2019-02-17 13:16:55 -05:00
ADmad
7298638dff
Fix invalid return type in callmap.
...
apu_delete() only returns boolean.
http://php.net/manual/en/function.apcu-delete.php
2019-02-17 13:15:59 -05:00
Matthew Brown
40a91eab6e
Fix #1339 - no crash when using self/static/parent in closure
2019-02-17 13:14:59 -05:00
bugreportuser
8edb117451
Fix password_hash change between versions
2019-02-16 23:57:49 -05:00
bugreportuser
13f182bf9f
Revert "fixed password_hash signature"
...
This reverts commit 32377d6751
.
2019-02-16 22:13:05 -05:00
Matthew Brown
a428b34a1a
Fix #1338 - ignore redundant issues when collecting initialisations
2019-02-16 20:27:42 -05:00
Matthew Brown
356a45a155
Improve ergonomics of PHPStorm meta parsing
2019-02-16 18:50:25 -05:00
Matthew Brown
2ef82d785f
Improve signature of FunctionReturnTypeProvider to omit internal things
2019-02-16 15:29:54 -05:00
Matthew Brown
fa362b04cb
Fix treatment of '' => '@' mapped value
2019-02-16 12:16:34 -05:00
Matthew Brown
0739d017ac
Use information from .phpstorm.meta.php files in stubs
2019-02-16 11:16:52 -05:00
Matthew Brown
d5420a7708
Suppress PossiblyUnusedParam for PHP 7.0
2019-02-15 18:50:23 -05:00
Matthew Brown
0c9c8c204c
Suppress UndefinedMethod for Php 7.0 Psalm check
2019-02-15 18:41:30 -05:00
Matthew Brown
149d7cab1c
Add PHP 7.0-compatible closure creation
2019-02-15 18:33:29 -05:00
Matthew Brown
d76459e138
Move to a PHPStan-like return type provider class model
2019-02-15 18:00:40 -05:00
Matthew Brown
0ea22e8d82
If we’re checking $_SESSION for existence return an array
...
Fixes #1335
2019-02-15 15:58:36 -05:00
Brown
dca8bf9d36
Fix #1329 - improve handling arrays with string offsets
2019-02-15 14:42:17 -05:00
Brown
d70e29508f
Don’t fatal error when callable class does not exist
2019-02-15 12:02:44 -05:00
Brown
0f45d14fea
Only collapse Traversable|array when we’re super sure it’s safe
...
Fixes #1333
2019-02-15 11:07:08 -05:00
Brown
27c99aed2f
Improve recovery from InvalidScalarArgument issue
2019-02-14 16:55:54 -05:00
Brown
9f1dc425d0
Reduce repetition in the baseline files
2019-02-13 15:10:50 -05:00
Brown
50421b297a
Don’t report undefined properties when collecting initialisations
2019-02-13 14:04:10 -05:00
Brown
3deea3980d
Add checks for unitialized properties
...
Fixes #1328
2019-02-13 13:32:19 -05:00
Matthew Brown
3497ad4765
Allow namespaced use of optional callable params
2019-02-11 08:41:48 -05:00
Matthew Brown
7fdc226ac5
Always remove callable type
2019-02-11 01:44:07 -05:00
Matthew Brown
e5360a6faa
Check callable types too
2019-02-11 01:41:28 -05:00
Matthew Brown
867ea1fa34
Fix #1320 - allow iterable comparison
2019-02-10 23:51:26 -05:00
Matthew Brown
8fc0b43973
Fix typecercion issues
2019-02-10 21:13:06 -05:00
Matthew Brown
0ec83a24d4
Fix docblocks cc @SignpostMarv
2019-02-10 20:57:22 -05:00
SignpostMarv
230821591a
amending methods
2019-02-10 20:40:32 -05:00
SignpostMarv
60f9d3558c
templating for ReflectionClass
2019-02-10 20:40:32 -05:00
Matthew Brown
c6b3fc512f
Don’t throw exception when ignoring trait absence
2019-02-10 16:32:30 -05:00
Matthew Brown
af61e167f4
Add callable literal string
...
Fixes #1315
2019-02-10 16:27:37 -05:00
Matthew Brown
9a8f969d5c
Fix #1314 - make sure we always know what a closure is if we’re using one
2019-02-10 16:23:31 -05:00
Matthew Brown
c58100e3af
Fix #1313 - don’t allow mixed function calls
2019-02-10 16:15:52 -05:00
Matthew Brown
7a1ff78bb3
Fix #1316 - is_iterable should remove arrays from union
2019-02-10 15:56:35 -05:00
Matthew Brown
62fb8035bf
Fix #1309 - no PropertyNotSetInConstructor warnings for grandchild of class
2019-02-10 15:01:10 -05:00
Matthew Brown
6976528c7e
Fix #1310 - check template defining class matches
2019-02-10 12:02:18 -05:00
Matthew Brown
c765d0e969
Fix #1307 - improve generator array type
2019-02-09 15:48:15 -05:00
Matthew Brown
83e22a10f8
Fix #1299 - vars defined in catches before throw are possibly-defined for finally
2019-02-09 15:39:30 -05:00
Maria Luiza Soares
5bd16c686f
Show total fixed errors when updating baseline
2019-02-09 11:20:48 -05:00
bugreportuser
6c7819b438
Allow @psalm-template for classes
2019-02-09 11:15:25 -05:00
Brown
c68209b8f3
Fix #1300 - add functions mentioned in class file where class is used
2019-02-08 17:41:03 -05:00
Matthew Brown
f4518d59e0
Fix #1303 - improve handling of class-string<Foo> type arg passed to class-string<T> param
2019-02-08 13:34:30 -05:00
Matthew Brown
98644f7a65
Allow more-specific template types to override mixed
2019-02-08 13:09:36 -05:00
Matthew Brown
6d0e78540a
Only move issue once
2019-02-07 18:47:50 -05:00
Matthew Brown
0bca8db561
Don’t throw exception when property is missing type
2019-02-07 18:10:32 -05:00
Matthew Brown
e6f3948f7b
Fix #1297 - prevent false positive TypeDoesNotContainType for class const array offset
2019-02-07 16:24:31 -05:00
Matthew Brown
ed4ed957c8
Use more specific templated argument
2019-02-07 15:21:34 -05:00
Matthew Brown
fbe5801345
Prevent issues being forgotten when another error crops up
2019-02-07 14:06:37 -05:00
Matthew Brown
c383e61805
Fix #1296 - array_filter should allow scalar values
2019-02-07 13:05:17 -05:00
Matthew Brown
17541b415f
Fix #1191 - allow Psalm to check against different versions of PHP
2019-02-07 12:25:57 -05:00
Matthew Brown
f8f5ddfb04
Add support for string range
2019-02-07 10:50:42 -05:00
SignpostMarv
3de4457a45
adding type-hinting stub for array_chunk()
2019-02-06 16:43:22 -05:00
Matthew Brown
c758678022
Fix remaining issues
2019-02-06 16:08:41 -05:00
Matthew Brown
e7d73c3ff2
Fix generator ref
2019-02-06 16:08:41 -05:00
Aaron Piotrowski
e6fcb79392
Update ProtocolStreamReader
2019-02-06 16:08:41 -05:00
Matthew Brown
7249539fc6
Add a few return types and improve formatting
2019-02-06 16:08:41 -05:00
Matthew Brown
d18ef9c6e1
Add ideal stub return types
2019-02-06 16:08:41 -05:00
Aaron Piotrowski
b0d97843ce
Update Amp usage
...
Fixed a few errors and used byte-stream for reading and writing.
2019-02-06 16:08:41 -05:00
Matthew Brown
263a4c8cf1
Use Amp for handling language server event loop
2019-02-06 16:08:41 -05:00
Matthew Brown
dfe45e7d26
Fix #1290 - improve handling of more specific template
2019-02-06 15:56:40 -05:00
Matthew Brown
d45326759f
Fix #1287 - improve handling of templated intersection
2019-02-06 12:37:05 -05:00
Matthew Brown
822e840d0c
Prevent union in function template as
2019-02-05 17:39:11 -05:00
Matthew Brown
899dd16e8f
Be more strict about what can be a template as type
2019-02-05 17:26:34 -05:00
Matthew Brown
c83afc1af2
Fix element type inference for DOMNodeList
2019-02-05 13:34:59 -05:00
Matthew Brown
6d5c995458
Fix #1282 - allow generic self and static
2019-02-05 08:02:06 -05:00
Matthew Brown
6033345694
Fix #1281 - improve handling of mixed property array assignment
2019-02-05 00:36:57 -05:00
Brown
e8a157f8d7
Add missing second arg
2019-02-04 18:00:23 -05:00
Brown
27428b8743
Allow ArrayAccess::offsetGet to return null
2019-02-04 17:27:08 -05:00
Brown
bbf013bfb8
Fix #1279 - speed up analysis of large arrays
2019-02-04 16:06:14 -05:00
Matthew Brown
ab22634d23
Fix #1274 - fix parent:: call to templated method
2019-02-04 00:52:31 -05:00
Matthew Brown
f81f325c8e
Fix #1275 - improve combination of class-string types
2019-02-03 17:32:44 -05:00
Matthew Brown
261c44504e
Add more specific return type for #1275
2019-02-03 17:26:56 -05:00
Matthew Brown
d665f98fe7
Fix issue reconciling class strings
2019-02-03 17:25:22 -05:00
Matthew Brown
f06ed8bf84
Fix #1273 - don’t change type with unpacked var
2019-02-03 16:36:10 -05:00
Matthew Brown
e97d4f85ee
Break large CallAnalyzer funtions apart
2019-02-03 16:21:37 -05:00
Matthew Brown
194bb31221
Fix #204 - allow missing param types to be added with Psalter
2019-02-02 14:16:49 -05:00
Matthew Brown
3a01afbe0a
Refine inferred type when possible
2019-02-02 12:10:52 -05:00
Matthew Brown
db89b3cc3f
Add initial support for fixing MissingParamType
2019-02-02 11:28:48 -05:00
Tim van Dijen
45d61fc861
Set proper return type for ldap methods
2019-02-01 14:15:34 -05:00
Brown
533b92e15a
Fix #1269 - fill in object type
2019-02-01 14:13:21 -05:00
Brown
8b65acf15b
Make return type mismatch more clear
2019-02-01 10:55:28 -05:00
Matthew Brown
509709d6bc
Fix #1267 - flesh out self static property types
2019-02-01 08:59:01 -05:00
Andrii
21d383d6c6
🐛 #1225 Allow use lead asterisk wildcard in referenceClass
2019-02-01 07:59:44 -05:00
Matthew Brown
b8b1106d79
Fix #1265 - allow referencedClass/Property/Method to be warnings
2019-02-01 07:58:40 -05:00
Matthew Brown
79544eb289
Fix comment analysis for callable(): returntype
2019-02-01 07:50:48 -05:00
Tyson Andre
53756e7017
Remove redundant catching and rethrowing
...
I assume these used to have additional logging,
but they're no-ops.
2019-01-31 21:18:00 -05:00
Matthew Brown
ac79e9a311
Fix #1263 - return proper class string
2019-01-31 21:06:21 -05:00
Matthew Brown
0be6aac30c
Fix #1262 - fix object check redundant condition
2019-01-31 20:31:40 -05:00
Brown
3f289731bb
Add ability to check descendants in ignored exceptions
2019-01-31 18:40:40 -05:00
Brown
c5a0a3df86
Fix yielding from iterable
2019-01-31 17:58:53 -05:00
Brown
fd88f00526
Fix a few small bugs
2019-01-31 17:48:48 -05:00
Brown
74ebb0b2d5
Don’t copy context unnecessarily when checking methods had no effect
2019-01-31 12:55:48 -05:00
Brown
2054e3753f
Fix #1260 - improve handling of ArrayAccess assignment
2019-01-31 12:45:47 -05:00
Brown
c195e8fd21
Add more nuanced analysis of array access fetch
2019-01-30 15:40:37 -05:00
Brown
900d5fa9db
Fix ArrayIterator::unserialize return type
2019-01-30 14:56:10 -05:00
Brown
4bc2fcc2f8
Fix serialized interface usage and generic ArrayIterator offset methods
2019-01-30 14:32:08 -05:00
Brown
d52fd70fd6
Fix invalid inheritance for SplObjectStorage
2019-01-30 13:48:05 -05:00
Brown
8c27bd77f6
Fix #1259 - add support for SplObjectStorage type params
2019-01-30 13:03:22 -05:00
Brown
e060ec35de
Fix #1258 - allow static method returns
2019-01-30 11:44:12 -05:00
Brown
661c7ee707
Fix #1256 - detect illegal closure use
2019-01-30 11:36:21 -05:00
Matthew Brown
bfb2a5c19e
Fix #1257 - transform docblock types for magic methods to something more meaningful
2019-01-30 09:46:23 -05:00
Brown
0bb5143efd
Fix #1254 - merge literal and class-strings types into string
2019-01-29 10:34:31 -05:00
Brown
9edbae2bdc
Fix possible fatal when builtin function is called in array_filter
2019-01-28 17:54:50 -05:00
Brown
819489e68d
Add method that reflection doesn’t know exists
2019-01-28 17:09:23 -05:00
Brown
3e4c63eb9a
Fix template extension in grandchildren
2019-01-28 16:56:42 -05:00
Brown
a801923502
Add support for SplQueue templating
2019-01-28 12:27:04 -05:00
Brown
f33415827e
Add checks for rounded values
2019-01-28 11:57:49 -05:00
Brown
b5059f45a0
Allow users to ignore missing ignorefiles
2019-01-28 11:50:18 -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
09ee6e3d13
Fix #1253 - prevent ints from coercing to literal floats
2019-01-27 23:21:54 -05:00
Matthew Brown
081ba4b204
Fix #1072 - add support for @use SomeTrait<T>
2019-01-27 23:12:40 -05:00
Matthew Brown
f67bab6d52
Restrict template-extends to actual extends
2019-01-27 21:00:27 -05:00
Matthew Brown
2d32e4b92a
Remove 7.0-incompatible type
2019-01-27 18:43:36 -05:00
Matthew Brown
89999fd554
Add suppport for float enums
...
Fixes #1099
2019-01-27 18:34:13 -05:00
Matthew Brown
0574e06a42
Remove 7.0-incompatible type
2019-01-27 18:31:40 -05:00
Matthew Brown
45cf35350c
Add non-internal endpoint for parsing types
2019-01-27 17:26:32 -05:00
Matthew Brown
d8783c277f
Add support for getPsalmTypeFromReflectionType
2019-01-27 17:16:22 -05:00
Matthew Brown
00e95cbd6b
Understand that template class string transforms back to templated class
...
Fixes #1250
2019-01-27 15:08:17 -05:00
Matthew Brown
cd4d2027d0
Fix #1249 - allow iterator_to_array to respect getIterator method
2019-01-27 14:50:05 -05:00
Matthew Brown
60e7587c2d
Replace template types in object-like arrays
2019-01-27 14:20:41 -05:00
Matthew Brown
be06393b9c
Fix #1251 - allow instanceof comparisons to class strings
2019-01-27 14:10:33 -05:00
Matthew Brown
16c2a0f899
Fix #1246 - check @var annotations
2019-01-26 17:30:44 -05:00
Matthew Brown
22ee72808a
Remove a bunch of hacks around generic offsets
...
Also fixes #1245
2019-01-26 16:58:49 -05:00
Brown
fcc9d1a979
Fix #1244 and fix #1243 - add template-extends checks
2019-01-25 15:31:17 -05:00
Brown
55913699d3
Allow iterable to subsume array and traversable
...
Fixes #1242
2019-01-25 14:43:16 -05:00
Brown
c9e1df510e
Fix #1241 - allow negative string offsets on a string
2019-01-25 10:23:50 -05:00
Brown
bed1f15e09
Fix #1240 - reconcile array to iterable in template replacement
2019-01-25 10:17:41 -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
Brown
0d52dc4e00
Fix #1232 - allow checking of extended templated function returns
2019-01-24 15:03:13 -05:00
Brown
006801f661
Fix #1233 - inherit docblock return types from interfaces and classes when signature exists
2019-01-24 11:55:59 -05:00
Brown
67a14cefde
Still complain about less specific types when signature type is present
...
Ref #1233
2019-01-24 10:58:59 -05:00
Brown
184ee76176
Remove erroneous regular namespace check
...
Fixes #1235
2019-01-24 10:41:06 -05:00
Brown
8a97e32e16
Add code to make handling interfaces with magic get/set
...
Ref #1228
2019-01-23 16:58:50 -05:00
Brown
60e9d4f245
Don’t give up after method_exists if static method exists
2019-01-23 15:50:12 -05:00
Brown
59baa53b3d
Fix #1229 - only check for inheritance if class exists
2019-01-23 13:02:07 -05:00
Matthew Brown
8bc17e47be
Fix #1227 - allow genric params in @psalm-assert
2019-01-22 23:42:54 -05:00
Brown
51c6621925
Add property lookup
2019-01-22 11:10:37 -05:00
Matthew Brown
1c5f6963a6
Skip callable tests for PHP 7
2019-01-21 18:01:15 -05:00
Matthew Brown
ea137fc20c
Don’t complain about mixed after unpacking arg
2019-01-21 17:42:25 -05:00
Matthew Brown
e0067e53c5
Fix param chosen to be expected
2019-01-21 17:35:55 -05:00
Matthew Brown
1b0c426c52
Improve error message when type cannot be inferred, fixes #1110
2019-01-21 17:29:12 -05:00
Matthew Brown
5cc3fe6b67
Fix #760 - coerce __invoke method to closure
2019-01-21 17:08:12 -05:00
Matthew Brown
99569e8ee3
Fix #1173 - transform const X = true to a true type
2019-01-21 16:55:50 -05:00
Matthew Brown
930a8b2689
Fix #1225 - ignore classes using patterns
2019-01-21 16:48:12 -05:00
Matthew Brown
075446e7df
Fix #1223 - MissingClosureParamType should use all known suppressed issues
2019-01-21 12:36:17 -05:00
Andrii Dembitskyi
9b6b79728e
Fixes #1222 - incorrect config value used for allowStringToStandInForClass
...
Please make attention, that `allowCoercionFromStringToClassConst` are mentioned in docs, but not used now in config
2019-01-21 09:00:57 -05:00
Matthew Brown
5eb0bb8126
Make foreach var annotation use more cautious
2019-01-20 11:49:13 -05:00
Matthew Brown
af19ca4bd5
Only worry if the alias is different to the intended one
2019-01-20 11:29:25 -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
60088b1189
Fix #1215 - prevent bad code from crashing Psalm
2019-01-20 11:10:12 -05:00
Matthew Brown
6fe9e525df
Fix #1219 - allow generation of intersections inside class-string
2019-01-20 10:39:08 -05:00
Matthew Brown
681391f970
Fix #1220 - improve constant resolution
2019-01-20 09:52:26 -05:00
Matthew Brown
0ac7d106a3
Fix #1221 - no TypeDoesNotContainType in catch or finally
2019-01-20 09:27:46 -05:00
Matthew Brown
7fa05abb5a
Remove unused vars
2019-01-20 01:52:58 -05:00
Matthew Brown
7dfcefd35d
Support intersections on LHS of static calls
2019-01-19 23:25:23 -05:00
Matthew Brown
394d6509c6
Restrict class-string types to named objects (and intersections)
2019-01-19 22:46:06 -05:00
Matthew Brown
1c17d2e2f2
Extract template params from string/array callables cc @weirdan
...
The culmination of what you were getting at
2019-01-19 20:18:45 -05:00
Matthew Brown
590bea305d
Fix #1218 - find issues with bad callables
2019-01-19 19:49:58 -05:00
Matthew Brown
e3df0ec5e2
Apply same rules that Hack uses for bottom types
2019-01-19 18:51:18 -05:00
Matthew Brown
1d2a0f8b39
Add more robust template constraint checks
2019-01-19 18:35:53 -05:00
Matthew Brown
ed68cb973d
Fix #1109 - add bad usort protection
2019-01-19 18:11:49 -05:00
Matthew Brown
e28bf1a29b
Fix null ref
2019-01-19 16:01:43 -05:00
Matthew Brown
44b51cdf8e
Support @inherits and @extends keywords too
2019-01-19 15:12:13 -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
ee2b06ac43
Add initial support for @param-out
2019-01-19 13:32:43 -05:00
Matthew Brown
e2db6a77a6
Allow mixed param overrides for @inheritdoc
2019-01-19 12:46:39 -05:00
Matthew Brown
4f3d7fca0d
Fix issue where @inheritdoc could override local param types
2019-01-19 12:42:46 -05:00
Matthew Brown
11dc78fd76
Don’t override local docblocks when inheritdoc is present
2019-01-19 12:30:14 -05:00
Matthew Brown
bf13ff2e7d
Detect bad interface types
2019-01-19 12:19:51 -05:00
Matthew Brown
9bd5f06c7d
Allow inheritdoc to propogate param types
2019-01-19 12:19:07 -05:00
Matthew Brown
545c7e3cba
Fix #1211 - allow docblocks to override foreach type earlier
2019-01-19 11:31:51 -05:00
Matthew Brown
94af3b6c51
Add automatic inheritance to properties
...
Fixes #1210
2019-01-19 10:09:26 -05:00
Matthew Brown
b313971935
Remove unused code
2019-01-18 11:57:52 -05:00
Matthew Brown
eddaaea01b
Add support for static @method annotations
2019-01-18 11:37:52 -05:00
Matthew Brown
22ec7e537c
Fix #1208 - respect inheritance when combining in boolean operation
...
Also fixes issue reconciling inside trait
2019-01-18 10:08:16 -05:00
Matthew Brown
4ec7903e8b
Fix #390 - add support for object{foo:int, bar:string} annotation
2019-01-18 00:56:24 -05:00
Bruce Weirdan
0358719037
Added DateTime::createFromImmutable()
...
It's available in PHP 7.3, see [FR 74668](https://bugs.php.net/bug.php?id=74668 ) and php/php-src#2484
2019-01-17 18:53:57 -05:00
Brown
d78c70d521
Add better messaging for MixedMethodCall
2019-01-17 14:04:40 -05:00
Brown
d068f1535d
Fix issue with implemented class interface in subclass
2019-01-16 15:08:11 -05:00
Brown
1ac51fcea6
Allow binding params of extended templates
...
Fixes #1207
2019-01-16 12:07:30 -05:00
Brown
ee366015f7
Fix #1205 - allow traits to override inheritance checks
2019-01-16 10:59:06 -05:00
Matthew Brown
ee97c9dbaf
Add support for T of Foo
2019-01-16 09:23:25 -05:00
Roland Franssen
9a827c48ae
Tweak error message
2019-01-16 09:02:45 -05:00
Matthew Brown
90dc39c296
Don’t preserve old storages when receiving worker data
...
This bug was found when running Psalm in threaded execution mode
2019-01-15 23:24:29 -05:00
Matthew Brown
37aef674a1
Remove unused library
2019-01-15 22:17:45 -05:00
Matthew Brown
c43734f3ab
Don’t localise PropertyNotSetInConstructor issues
2019-01-15 21:34:18 -05:00
Brown
8d61cb4816
Fix #1200 - no fatal error in array_map when not checking functions
2019-01-15 17:53:23 -05:00
Brown
f5a81249e0
Fix #1202 - don’t allow undefined constants in enums
2019-01-15 11:31:13 -05:00
Brown
773be5ceb2
Remove blank line
2019-01-14 17:13:55 -05:00
Brown
496bd97714
Make sure we’re not flipping the wrong constraint
2019-01-14 16:07:57 -05:00
Brown
ee004a91ac
Fix #1068 by restricting template types to passed called closure returns
2019-01-14 15:50:25 -05:00
Matthew Brown
3ca5ec9281
Fix templated class conversion allowing child class
2019-01-13 14:40:21 -05:00
Matthew Brown
2c55e7aabb
Support template-typeof in class again
2019-01-13 14:29:04 -05:00
Matthew Brown
1de0e35545
Add checks for Psalm reserved words in assertions
2019-01-13 14:06:30 -05:00
Matthew Brown
94aa51ba6d
abstract trait method return type override should not be MethodSignatureMistmatch
2019-01-13 13:27:07 -05:00
Matthew Brown
bd9f2ec546
Add separate issue type for undefined interface method
2019-01-13 13:07:53 -05:00
Matthew Brown
0cca0d76cb
Fix #813 - allow constant array to be refined with isset
2019-01-13 11:54:39 -05:00
Matthew Brown
6d462fcb64
Fix #909 - support private trait aliasing
2019-01-13 10:19:27 -05:00
Matthew Brown
7e0928d775
Fix #833 - warn on some invalid operands
2019-01-13 10:15:15 -05:00
Matthew Brown
e9b7c9e08b
Fix #1129 - mock class method arguments should be evaluated
2019-01-13 09:49:34 -05:00
Matthew Brown
9ef1ce1535
Make @template-extends more robust
2019-01-12 18:18:23 -05:00
Matthew Brown
a7005014c2
Fix #987 - namespace asserted classes
2019-01-12 11:40:19 -05:00
Matthew Brown
b43a6a31f1
Enable casing plugin and fix issues it found
2019-01-12 10:52:23 -05:00
Matthew Brown
a49b5af3e9
Refactor the method call analyzer a little
2019-01-12 09:13:54 -05:00
Matthew Brown
cfcb65aaac
Fix #1113 - treat class_alias as always global
2019-01-12 07:28:01 -05:00
Brown
2195caaeae
Check type var
2019-01-11 17:28:57 -05:00
Brown
1fddc19172
Add initial support for property types
2019-01-11 17:21:50 -05:00
Brown
cdbc63c99a
Fix #1195 - check assignments in byref
2019-01-11 14:57:21 -05:00
Brown
bf327f4933
Prevent echo removing all types
2019-01-11 14:46:03 -05:00
Brown
eb7fc96ac1
Make param type checks use template_extends too
2019-01-11 11:18:51 -05:00
Brown
4ec8d1a8dd
Fix #1198 - add support for template param extends checks
2019-01-11 10:55:44 -05:00
Matthew Brown
d891c068b4
Fix #1197 - add support for method templating without override
2019-01-11 09:35:32 -05:00
Matthew Brown
ff958ef643
Fix inheritance of method params
2019-01-11 08:54:10 -05:00
Brown
9947bc56f6
Fix Psalm errors and improve error output
2019-01-10 19:18:02 -05:00
Brown
0d28d5d82b
Add check for @template-extends return types
2019-01-10 19:01:30 -05:00
Brown
ddc2637fc5
Add support for @template-extends Foo<SomeClass>
2019-01-10 17:58:32 -05:00
Brown
f108badd03
Fix #1067 - add support for @template-extends
2019-01-10 16:59:44 -05:00
Brown
3533339884
Remove nullable arg
2019-01-10 13:07:22 -05:00
Brown
b8d822cd26
Prohibit leaking of template params across class boundaries
2019-01-10 12:13:49 -05:00
Brown
1e20cbfa79
Prevent template params leaking when extended
2019-01-10 10:27:40 -05:00
Matthew Brown
e23d5a9e79
Only use one thread for language server if there’s no pcntl extension
2019-01-10 00:15:59 -05:00
Matthew Brown
5936415b09
Exit if trying to use --threads without pcntl extension
2019-01-10 00:14:40 -05:00
Matthew Brown
27687244f0
Normalise baseline file slashes
...
Fixes #1192
2019-01-10 00:10:16 -05:00
Bruce Weirdan
32377d6751
fixed password_hash signature
...
fixes vimeo/psalm#1188
2019-01-09 12:32:06 -05:00
Brown
d1654b9bf4
Ignore @return with a newline after @return
2019-01-09 11:51:29 -05:00
Matthew Brown
d3324b42fa
Remove slashes from is_a and is_subclass_of string classes, and scan them
2019-01-09 08:49:02 -05:00
Matthew Brown
01e41951e7
Support backslash in is_a/is_subclass_of string name
2019-01-09 08:42:27 -05:00
Matthew Brown
11bfaaa5f7
Prevent crash in constructor checks
2019-01-09 08:35:53 -05:00
Matthew Brown
6e585008f2
Fix #1183 - add hook for class analysis
2019-01-09 08:28:12 -05:00
Matthew Brown
5b2d796c30
Fix up callmap
2019-01-08 21:57:22 -05:00
Matthew Brown
dc2f4929d4
Add changes from PHPStan, thanks @voku
2019-01-08 21:44:50 -05:00
Matthew Brown
2f30132d94
Add Phan updates to callmap
2019-01-08 21:19:11 -05:00
Brown
2201380c52
Fix type transformation issues in templated class strings
2019-01-08 17:34:58 -05:00
Brown
43bbd739a2
Fix generic param fetches
2019-01-08 16:55:53 -05:00
Brown
546919a515
Allow reconciliation with nullable type string
2019-01-08 15:26:54 -05:00
Brown
73770c085e
Prevent crash when @template as type is missing
2019-01-08 15:11:57 -05:00
Brown
f3133aac84
Prevent more crashes
2019-01-08 14:50:45 -05:00
Brown
8e26d639de
Fix #1181 - improve handling of complicated conditionals
2019-01-08 12:33:44 -05:00
Matthew Brown
b6865b130b
Catch exception in more places
2019-01-08 09:57:14 -05:00
Matthew Brown
a89a201c71
Fix #1180 - array key maths was wrong
2019-01-08 09:56:54 -05:00
Matthew Brown
dfba6e0dec
Fix #1181 - prevent allowed memory errors with large conditionals
2019-01-08 09:19:33 -05:00
Matthew Brown
fb83da94bd
Exit early when encountering complicated conditionals
2019-01-08 09:02:41 -05:00
Matthew Brown
370874d9b6
Make diff map more verbose so it can serve as a list of safe zones
...
Outside them all issues must be removed
2019-01-08 00:54:48 -05:00
Matthew Brown
a2ee2f12a4
Allow scalar to contain numeric
2019-01-07 21:52:58 -05:00
Brown
9ec8690825
Fix #1177 - prevent redundant condition leaking
2019-01-07 18:22:42 -05:00
Brown
be337a03cf
Simplify output of method call complaints
2019-01-07 16:38:37 -05:00
Brown
5d5fbb1e9c
Only add linked directories
2019-01-07 15:49:05 -05:00
Brown
14f456e160
Fix #1176 - always evaluate assignments in unknown function calls
2019-01-07 12:24:44 -05:00
Brown
4d959626d5
Fix #1175 - support trait method visibility changes
2019-01-07 11:53:22 -05:00
Matthew Brown
195cb289ed
Add float-checking plugin, and support for custom plugin issues
2019-01-07 08:38:56 -05:00
Matthew Brown
bcbede07ba
Fix issue with do analysis while loops
2019-01-07 01:15:30 -05:00
Matthew Brown
36a1fe07da
Allow plugins to have more than one class
...
Ref #536
2019-01-06 17:32:19 -05:00
Matthew Brown
5691c37ece
Use reflection to figure out where dupe function was defined
2019-01-06 17:24:46 -05:00
Matthew Brown
a6357b413c
Don’t complain when rescanning file with function in
2019-01-06 17:03:13 -05:00
Matthew Brown
214fd7d461
Add DuplicateFunction issue
...
Fixes #49
2019-01-06 16:40:44 -05:00
Matthew Brown
43b4c1c0a3
Fix #1168 - better return type for range
2019-01-06 13:02:46 -05:00
Matthew Brown
9c9e57cf6b
Fix #1153 - ignore redundant conditions in finally block
2019-01-06 12:39:18 -05:00
Matthew Brown
b19dd25881
Fix #742 - infer template type from closure
2019-01-06 12:16:09 -05:00
Matthew Brown
cc26ce682e
Don’t crash when encountering empty @throws
2019-01-06 10:01:35 -05:00
Matthew Brown
90e1648d5b
Fix #979 - be more conservative about method_exists handling
2019-01-06 09:36:25 -05:00
Matthew Brown
8783a33a3f
Fix #1136 - support __halt_compiler
2019-01-06 09:18:41 -05:00
Matthew Brown
07b29e4a2f
Fix #1141 - add symlinked symlinked repos to directory list
2019-01-06 09:14:35 -05:00
Matthew Brown
e3f2cee2d6
Fix thing that doesn’t work quite right
2019-01-05 17:10:29 -05:00
Matthew Brown
4d6031b39b
Fix #1172 - treat is_subclass_of similarly to is_a
2019-01-05 16:58:34 -05:00
Matthew Brown
3a405f4951
Remove public from const
2019-01-05 16:34:09 -05:00
Matthew Brown
c7723df8ff
Allow gettype vars to be compared to strings
2019-01-05 16:23:18 -05:00
Matthew Brown
9e2dacc9e4
Remove blank lines
2019-01-05 15:54:21 -05:00
Matthew Brown
355ed831e1
Add support for get_parent_class() with arg
2019-01-05 15:49:56 -05:00
Matthew Brown
58acaefe70
Add support for get_parent_class() with no args
2019-01-05 15:49:56 -05:00
Tyson Andre
d85c9d8aa2
Remove an unused closure use variable
...
This looks like debugging code added in
37dedee7b6
2019-01-05 15:48:48 -05:00
Matthew Brown
8024b4e275
Add support for $a::class
2019-01-05 15:12:42 -05:00
Matthew Brown
f5378bdca8
Improve function call resolution
2019-01-05 14:50:11 -05:00
Matthew Brown
632f613ba0
Numeric is not expressible in PHP
2019-01-05 13:17:44 -05:00
Matthew Brown
bf8f76671b
Don’t crash when suppressing UndefinedClass with bad params
2019-01-05 12:59:12 -05:00
Matthew Brown
8dbee1c1d9
Allow iterable to be output in PHP 7.1 too
2019-01-05 11:05:26 -05:00
Matthew Brown
6f1d56a80f
Upcast iterables to traversables when used in a templated class string
2019-01-05 10:32:39 -05:00
Matthew Brown
9f16ab9cb5
Fix issue where documented self param confuses
2019-01-05 08:45:12 -05:00
ADmad
407e4473f7
Improve callmap possibly false value.
...
Similar to #1147 .
2019-01-05 08:28:13 -05:00
Matthew Brown
9d8c2792e2
Add array-key type and improve general type handling
...
Fixes #1144
2019-01-05 00:15:53 -05:00
Matthew Brown
2dc3d9651f
Separate iterable into its own type
...
Fixes #1151
2019-01-04 14:54:40 -05:00
Matthew Brown
87052537cf
Fix #1167 - don’t worry about AbstractInstantiation when it could be a descendant
2019-01-04 12:28:00 -05:00
Matthew Brown
602d8a5ade
Fix issue inheriting grandparent signature
2019-01-04 08:37:54 -05:00
Matthew Brown
75e0684854
Callable can be fully expressed if its uncomplicated
2019-01-04 08:36:44 -05:00
Matthew Brown
e5559e3012
Allow callables to be plain objects, and vice versa
...
Previously Psalm required they be *known* objects
2019-01-04 08:04:26 -05:00
Matthew Brown
bfb1eb9be2
Properly namespace TClassString output
2019-01-02 20:25:42 -05:00
Brown
53749bd5c5
Do better at finding things that exit
2019-01-02 18:14:47 -05:00
Brown
6a744c0f07
Add no-returns et al to list of psalm-reserved words
2019-01-02 17:26:05 -05:00
Brown
cca0070d38
Allow function calls that exit to act themselves like exit
2019-01-02 17:16:04 -05:00
Brown
2b4b55fd33
Add support for @return no-return
...
Fixes #1155
2019-01-02 17:05:39 -05:00
Brown
c39446330e
Make class-string rules more strict
2019-01-02 14:24:45 -05:00
Brown
9fdf29c468
Fix #1165 - default inherited unresolved constants to mixed
2019-01-02 13:46:46 -05:00
Matthew Brown
6fc79e3534
Fix Psalm issues
2019-01-02 13:27:53 -05:00
Matthew Brown
93e3d66ce5
Move filter_var handler function into its own method
2019-01-02 13:27:53 -05:00
Andrii
36f6930e0c
🐛 #1163 Fix handling for default option in filter_var
2019-01-02 13:27:53 -05:00
Brown
2d22db4cb7
Clear up use of reloadFiles
2019-01-02 12:10:52 -05:00
Brown
69d9fd7e28
Fix regression when reasoning about class strings
2019-01-02 11:35:49 -05:00
Brown
1d300ec342
Fix #1150
2019-01-02 11:18:22 -05:00
Matthew Brown
c4d024a72d
Check variable static calls
...
Fixes #1142 and #1160
2019-01-02 09:00:45 -05:00
Matthew Brown
df9ea9e3b6
Potential fix for #1156
2019-01-02 08:03:24 -05:00
Matthew Brown
901596281c
Fix #1143 - check some variable new calls
2019-01-02 06:58:49 -05:00
Matthew Brown
34cbe70e6f
Fix templated @return T::class output
2019-01-02 06:46:10 -05:00
Matthew Brown
6fbf395f70
Fix #1152 - don’t complain about trait class-string comparisons
2019-01-01 21:00:34 -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