Jon Ursenbach
284565811c
feat: organizing the --help screen ( #2417 )
2019-12-04 16:16:03 -05:00
Brown
a3e51d6f13
Fix resolution for class names in lazily-evaluated class constants
...
Fixes #2413
2019-12-04 13:33:50 -05:00
Brown
3a5bb9db9a
Add slash
2019-12-04 12:29:06 -05:00
Brown
e1dd22ef6c
Allow static::class to be used in array assertions
2019-12-04 12:23:26 -05:00
Brown
d5f5c742ce
Fix #2411 - allow use of covariant params in array returned value
2019-12-04 10:49:07 -05:00
Matthew Brown
d9cae720c1
Add slash
2019-12-03 08:33:31 -05:00
Matthew Brown
016fd58547
Add command in help
2019-12-03 02:18:44 -05:00
Matthew Brown
aa4daea182
Add extra safety feature
2019-12-03 01:59:36 -05:00
Matthew Brown
97de060df9
Fix #2279 - add parameter typehint by default
2019-12-03 01:49:43 -05:00
Matthew Brown
dd05f6e3ca
Speed up missing property type consolidation
2019-12-03 00:57:26 -05:00
Matthew Brown
9f69d9ac99
Add CI_BRANCH var
2019-12-03 00:44:19 -05:00
Matthew Brown
a35d5f1308
Add temporary logging
2019-12-03 00:36:26 -05:00
Matthew Brown
843c08b8e1
Add emojis
2019-12-03 00:33:14 -05:00
Matthew Brown
71f16859fb
Add Github Repo parsing
2019-12-03 00:26:19 -05:00
Matthew Brown
946a46a761
Log when data is sent successfully
2019-12-03 00:13:46 -05:00
Matthew Brown
6fa3d3df51
Add a little more logging
2019-12-03 00:08:04 -05:00
Matthew Brown
f667dee4f5
More logging
2019-12-03 00:06:00 -05:00
Matthew Brown
260b73ce78
More logging
2019-12-02 23:59:01 -05:00
Matthew Brown
35eb0900df
Add some temporary logging
2019-12-02 22:26:17 -05:00
Brown
821f3528d2
Fix #701 - indicate issues fixable with Psalter
2019-12-02 15:24:01 -05:00
Brown
a7565bc4b0
Fix stubs casing
2019-12-02 15:23:19 -05:00
Matthew Brown
5fe3a4a5a9
Fix #2368 - don’t register class-file mapping
...
Sometimes it’s not a real class there, just a class_alias call
2019-12-01 23:47:36 -05:00
Matthew Brown
d5f4c24ee0
Fix combining class string types with explicit ones
2019-12-01 23:03:09 -05:00
Matthew Brown
ee6bf74a41
Add isset check
2019-12-01 22:15:50 -05:00
Matthew Brown
afbd04a1dc
Add slash
2019-12-01 19:20:05 -05:00
Matthew Brown
526aa000ef
Set git data from Github Actions
2019-12-01 19:16:21 -05:00
Matthew Brown
e47f5e774b
Send more info from shepherd
2019-12-01 17:20:26 -05:00
Matthew Brown
a82ed91a00
Fix build
2019-12-01 17:18:07 -05:00
Matthew Brown
0bc6d71173
Add some tracing when using GitHub Actions in CI
2019-12-01 16:49:08 -05:00
Matthew Brown
27c9aa4286
Fix code and test
2019-12-01 10:43:51 -05:00
Matthew Brown
f21150b8ad
Fix #2384 - fix resolution of @param-out template types
2019-12-01 10:40:53 -05:00
Matthew Brown
ef829002bf
Fix ref
2019-12-01 10:33:27 -05:00
Matthew Brown
e40aaafe61
Allow explicit @var mixed docblocks
...
Fixes #2397
2019-12-01 10:19:42 -05:00
Bruce Weirdan
f36766bf99
Improve CoreGenericClasses ( #2402 )
...
- general formatting
- Better definition for iterator class for `ArrayObject`
- Better definition for callable parameters to `ArrayObject`/`ArrayIterator` `uksort`/`uasort`
- Fixed signature for `ArrayIterator::current()`
- Fixed signature for `DOMNodeList::item()`
2019-12-01 09:53:48 -05:00
Matthew Brown
4e07779497
Allow callable-string to be used for callable
2019-12-01 01:15:14 -05:00
Matthew Brown
088228f119
Fix template default type issue
2019-11-30 12:54:08 -05:00
Matthew Brown
b1e8c386fd
Remove unused function
2019-11-30 12:39:17 -05:00
Matthew Brown
a8c2b7a525
Fix #2400 - string should subsume class-string
2019-11-30 12:32:31 -05:00
Matthew Brown
04879af105
Be less forgiving when extending builtin generic classes
2019-11-30 09:32:21 -05:00
Matthew Brown
952484c64d
Add workaround for pcre.jit bug
2019-11-30 08:26:26 -05:00
Matthew Brown
0fa654e011
Suppress issue
2019-11-30 01:30:55 -05:00
Matthew Brown
6ff06a4b32
Don’t bypass generator second arg when checking variance
2019-11-30 01:27:27 -05:00
Matthew Brown
8f8301b6de
Align Generator covariance with PHPStan
2019-11-30 01:11:50 -05:00
Matthew Brown
d134482ee7
Fix style
2019-11-30 01:06:48 -05:00
Matthew Brown
1b9273c8c0
Make other Generator params covariant
2019-11-30 01:02:51 -05:00
Matthew Brown
baef67e0d8
Fix evaluation order of covariant template params before invariant ones
2019-11-30 01:02:23 -05:00
Matthew Brown
c65540a323
Fix some templating issues in CoreGenericClasses
2019-11-30 00:27:07 -05:00
Matthew Brown
ccd6718582
Fix templating of objects with properties
2019-11-29 22:57:45 -05:00
Matthew Brown
2383945fb9
Support __METHOD__ and __FUNCTION__ magic constants better
2019-11-29 22:47:20 -05:00
Matthew Brown
1e3ecb5fd0
Fix #2387 - ensure docblock return types are checked
2019-11-29 11:20:37 -05:00
Matthew Brown
6a98108deb
Apply @ShiraNai7’s fix for null const values
2019-11-29 10:12:46 -05:00
Pavel Batečko
dc78e9c57b
Update password function types for PHP 7.4 ( #2396 )
...
* Support NULL predefined constants
* Fix #2395 - update password_hash() and password_needs_rehash() types for PHP 7.4
* Change $fq_const_name check so it still uses isset
2019-11-29 09:30:01 -05:00
Matthew Brown
a4e18f9b5e
Fix #2386 - make generator params invariant
2019-11-29 01:44:31 -05:00
Alfred Bez
e2d1eca2b4
fixed RarArchive signatures ( #2385 )
2019-11-29 01:22:36 -05:00
Bruce Weirdan
377e47c8bd
Added WeakReference support ( #2389 )
2019-11-29 01:21:38 -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
4052e6dfac
Allow isset to check for property initialisation
...
Ref #2382
2019-11-28 09:12:17 -05:00
Valentin Udaltsov
4a742f9940
Added array_key_first and array_key_last stubs ( #2381 )
2019-11-27 10:59:12 -05:00
Matthew Brown
113bf921f6
Add support for arrow function inference
2019-11-27 10:12:59 -05:00
Matthew Brown
a154191922
Fix #2380 - prevent string docblock for callable param
2019-11-27 09:18:47 -05:00
Matthew Brown
4334ddcaa3
Fix style
2019-11-27 02:11:18 -05:00
Matthew Brown
3f2d57c7a3
Fix #2379 - support spread array RFC
2019-11-27 02:07:17 -05:00
Matthew Brown
1b850c4026
Skip descendants if required class in && expr cannot be found
...
Fixes #2375
2019-11-27 00:44:41 -05:00
Matthew Brown
c75f7dc4d5
Fix #2339 - add support for null coalescing operator
2019-11-27 00:34:23 -05:00
Matthew Brown
d1c4c85f97
Support covariant return types & contravariant param types
...
Fixes #2102 and #2264
2019-11-27 00:19:36 -05:00
Matthew Brown
2c08321603
Ignore union types for now
2019-11-27 00:00:46 -05:00
Matthew Brown
d1fbd1fa26
Add working arrow-functions implementation
2019-11-26 23:52:26 -05:00
Brown
90cb3f4472
Speed up accessing node data
...
Ref #1837
2019-11-26 17:48:47 -05:00
Brown
f97a8f0d5b
Use more accurate way to determine list size
2019-11-26 16:34:19 -05:00
Pavel Batečko
4e594e0a65
Improve array function list handling ( #2377 )
...
* array_column() returns a list unless the 3rd arg is passed
* array_pad() return type provider
* array_chunk() return type provider
* array_map() preserve list types
2019-11-26 14:48:49 -05:00
Brown
2f02da62c1
Add note to future self
2019-11-26 14:47:07 -05:00
Lars Strojny
9d32273029
Fix typo in InfiniteIterator type definition ( #2378 )
2019-11-26 14:20:40 -05:00
Brown
7ccd73b5e3
Fix redundant condition
2019-11-26 12:32:07 -05:00
Brown
842b2a53df
Refine lists with object-like array types
...
Fixes #2357
2019-11-26 12:22:28 -05:00
Brown
532e2d64be
Allow using covariant template in mutation-free context
2019-11-26 11:35:03 -05:00
Brown
736ccd84cd
Allow more generic iterable when yielding
...
Fixes #2353
2019-11-25 16:12:44 -05:00
Brown
5626058eff
Fix #2374 - refine error-suppressed output a little better
2019-11-25 15:38:54 -05:00
Brown
1f07ea7ee7
Tighten up Psalm’s inference
2019-11-25 15:20:31 -05:00
Brown
95f7a389e1
Remove dud file
2019-11-25 13:09:06 -05:00
Brown
96c4eeec98
When calling magic method clone node info
2019-11-25 13:08:38 -05:00
Brown
ae10e6c130
Add polyfill for spl_object_id
2019-11-25 12:50:48 -05:00
Brown
1add42b691
Fix switch handling
2019-11-25 11:51:34 -05:00
Brown
0bcb7863f3
Use better system for storing inferred types and assertions
2019-11-25 11:44:54 -05:00
Takefumi Katsuren
da489d4b27
imagepng accepts resource at Argument 2 ( #2373 )
2019-11-24 20:15:05 -05:00
Tyson Andre
6bc152e2da
Use the long progress bar for CI logs ( #2364 )
2019-11-22 08:56:18 -05:00
Brown
78a3894403
Fix Psalm errors
2019-11-21 11:03:18 -05:00
Brown
06653f6322
Fix #2362 - support single value type in docblocks
2019-11-21 10:44:24 -05:00
Matthew Brown
4c2f7ad8db
Add slash
2019-11-21 09:06:19 -05:00
Matthew Brown
2b1b0f6c34
Return 0
2019-11-21 09:02:56 -05:00
Matthew Brown
3d9c94e29a
Fix #2363 - catch possible class not found errors when getting method
2019-11-21 08:56:47 -05:00
Bruce Weirdan
c50a17d415
Scan shape properties ( #2359 )
...
This prevents crashes when built-in classes are referenced by shape
properties.
Fixes vimeo/psalm#2331
2019-11-18 19:01:12 -05:00
Brown
81f513bb4c
Fix #2358 - always analyse new XXX(...) in unknown method calls
2019-11-18 16:14:21 -05:00
Matthew Brown
e76beffa78
Fix #2355 - don’t remove used variables
2019-11-17 14:53:08 -05:00
Matthew Brown
dade56e4e1
Fix #2354 - add option to match documentation
2019-11-17 14:49:28 -05:00
Tyson Andre
ecf3abc396
Fix redundant condition ( #2338 )
...
TGenericObject is always a TNamedObject
2019-11-17 14:29:38 -05:00
Matthew Brown
2369bac943
Preserve self refs where possible
2019-11-16 19:59:08 -05:00
Matthew Brown
7d7d4dd926
Fix style stuff
2019-11-15 21:47:53 -05:00
Brown
55bf6a2db3
Migrate static return types
2019-11-15 16:50:43 -05:00
Brown
4747ba709a
Migrate more things
2019-11-15 15:34:25 -05:00
Brown
5e17a9af10
Fix #2348 - ensure all functions and methods return some type
2019-11-14 14:44:29 -05:00
Brown
b3a15e8016
Fix #2349 - allow suppression of InvalidReturnType for no-return
2019-11-14 14:33:07 -05:00
Brown
d5b90f6887
Fix #2333 - don’t create array after empty check
2019-11-14 14:23:33 -05:00
Brown
8777c952c8
Fix #2330 - allow empty checks against numeric
2019-11-14 13:31:50 -05:00
Brown
09aafa40c0
No exception when file has issues
2019-11-14 12:54:35 -05:00
Brown
738ce4f850
Fix re-added function storage removal
2019-11-14 12:17:17 -05:00
Brown
b693b726c7
Improve handling of default extended params
2019-11-14 12:12:09 -05:00
Brown
70b8df268d
Fix template covariance calculation, use container covariance not inputs
2019-11-14 11:43:49 -05:00
Brown
939be92f29
Fix stubbing in end-to-end tests
2019-11-14 11:03:41 -05:00
Brown
a5c3304853
Add support for if replacement
2019-11-14 11:03:16 -05:00
Matthew Brown
8154a9ef16
Fix #2340 - don’t stub functions unnecessarily
2019-11-14 09:27:19 -05:00
Matthew Brown
5fabf41c8e
Check for not-callable return value
2019-11-14 07:57:22 -05:00
Matthew Brown
0b1f83ff98
Fix #2346 - map covariance of templated return types when extending with more params
2019-11-14 07:45:20 -05:00
Brown
00be4c2071
Mark var as unused
2019-11-13 15:06:22 -05:00
Brown
fe5e675881
Improve unvariable removal
2019-11-13 15:05:21 -05:00
Brown
c9e7dcfa92
Fix false positive UnusedVariable
2019-11-13 14:32:27 -05:00
Brown
7516b7b0cf
Fix #2336 - detect used variable in mixed array offset
2019-11-13 13:38:34 -05:00
Brown
4be3180512
Add more impure functions
2019-11-13 13:22:04 -05:00
Matthew Brown
975ff9250b
Fix #2328 - don’t crash on unexpected divider
2019-11-13 01:13:29 -05:00
Brown
7b719915f5
Fix style things
2019-11-12 10:21:27 -05:00
Brown
25b60eb944
Fix #2325 - ignore unused vars with $_ prefix
2019-11-12 10:20:34 -05:00
Brown
7f5af741f7
Improve assertion calculation on mixed vars
2019-11-12 10:12:07 -05:00
Matthew Brown
7012bedf4e
Fix #2326 - substitute static more responsibly in generic objects
2019-11-12 08:01:22 -05:00
Matthew Brown
b1aae0d1a5
Fix more try/catch stuff
2019-11-12 00:52:10 -05:00
Brown
51557c44ea
Evaluate finally blocks at the end of every catch
2019-11-11 18:38:33 -05:00
Brown
da03902f76
Fix handling of do... while vars defined in try
2019-11-11 18:24:43 -05:00
Brown
f22266b2ff
Improve reasoning around try/catch possibly-undefined vars
2019-11-11 17:42:46 -05:00
Brown
1a54aa5752
Fix test
2019-11-11 17:07:26 -05:00
Brown
cd2f8e7d65
Fix memory corruption
2019-11-11 16:56:44 -05:00
Brown
935bad9d2c
Fix erroneous unused variable
2019-11-11 16:52:55 -05:00
Brown
d15989c975
Allow catch to assume no try statements completed
2019-11-11 15:17:53 -05:00
Brown
658f86c277
Fix #2324 - avoid fatal error on self string in callable
2019-11-11 14:59:05 -05:00
Brown
fbd1cf0a71
Fix #2322 - don’t update outer context if elseif has no leaving statements
2019-11-11 11:46:27 -05:00
Brown
96586f16c0
Fix phpcs issues
2019-11-11 10:11:42 -05:00
Brown
af5f83602e
Break out more specific possibly defined offset errors
2019-11-11 09:59:56 -05:00
Brown
46d163996e
Fix #2321 - prevent inferred template coercion
2019-11-11 09:14:34 -05:00
Bruce Weirdan
79acbadfad
Added InvalidParent issue ( #2320 )
...
Refs vimeo/psalm#2304
2019-11-11 00:21:43 -05:00
Matthew Brown
2fc7f5fdf7
Fix #1830 - infer key type after array_key_exists check
2019-11-10 14:23:53 -05:00
Matthew Brown
94d4b876ba
Fix #2177 - mark variables in try block as potentially undefined
2019-11-09 12:25:30 -05:00
Matthew Brown
62a3598ed3
Fix #2197 - prevent false positive from try in while
2019-11-09 11:01:48 -05:00
Matthew Brown
7028a64440
Fix #2204 - fix try/catch false-positive
2019-11-09 10:39:21 -05:00
Brown
4e5af3490a
Fix #2315 - allow Traversable->iterable templated casting
2019-11-08 13:11:01 -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
Joram Schrijver
c97ba8f713
Implement type-checking and forbidding for print ( #2314 )
...
* Add type-checking for print
* Allow print to be forbidden
2019-11-08 07:01:34 -05:00
Joram Schrijver
e79a0cc8f0
Make --init use vendor-dir from composer.json ( #2313 )
2019-11-08 06:59:04 -05:00
Baptiste Clavié
5217156068
Support comments in ErrorBaseline ( #2311 )
2019-11-07 13:03:18 -05:00
Brown
3d7b34e7f6
Fix #2273 - ensure all template params are bound
2019-11-07 11:03:41 -05:00
Brown
3cf16c8ef3
Add back arg
2019-11-07 09:56:27 -05:00
Brown
86b6801066
Fix #2294 - detect invalid callble due to __invoke
2019-11-07 09:39:24 -05:00
Brown
64996f464e
Prevent empty array workaround to #2308
2019-11-06 16:59:08 -05:00
Brown
06b64a4a01
Detect erroneous use of empty check on bools
2019-11-06 16:14:46 -05:00
Brown
3e98c800ec
Fix #2309 - prevent closure-inferred generic template params overwriting parent ones
2019-11-06 13:13:02 -05:00
Brown
a8ed6ba9c4
Fix #2308 - prevent specialisation from bound params
2019-11-06 11:20:51 -05:00
Matthew Brown
d7e435c352
Add slashes
2019-11-05 19:08:16 -05:00
Matthew Brown
050045209f
Only allow string offset assignment when offset is integer
2019-11-05 19:05:43 -05:00
Matthew Brown
cbaf050bd2
Fix #2307 - allow setting of array string offset
2019-11-05 19:03:59 -05:00
Matthew Brown
b81a2d3852
Fix #2306 - allow nullable templated params to be compared to null
2019-11-05 18:37:46 -05:00
Brown
818f0c0985
Flesh out list types
...
Fixes #2300
2019-11-05 13:08:12 -05:00
Brown
5c8cb37b0f
Fix #2301 - do a naive projection of template params
2019-11-05 12:59:56 -05:00
Brown
d8ae33957d
Fix strtolower ref
2019-11-04 15:14:07 -05:00
Brown
1f42843d42
Fix #2296 - use case insensitive closure ids
2019-11-04 14:48:02 -05:00
Brown
4bf632bc23
Only extend covariant flag to vars without template param
2019-11-04 11:12:59 -05:00
Brown
4f9cf54005
Use unaliased name for external hook
2019-11-04 10:13:12 -05:00
Brown
e7330afe8b
Fix #2295 - support special case of array_shift on known offset type
2019-11-04 09:21:13 -05:00
Matthew Brown
8dffd65a59
Preserve possible-undefinedness
2019-11-04 07:12:22 -05:00
Matthew Brown
5faebe2674
Fix templated assertion handling for static methods
2019-11-04 05:31:45 -05:00
Matthew Brown
8f421dc0bb
Refactor template calculation out from Psalm\Type\Union
2019-11-03 21:27:40 -05:00
Matthew Brown
7c4c78f67e
Fix #2271 - treat array_replace same as array_merge
2019-11-02 10:15:03 +01:00
Pavel Batečko
b229ac875d
Improve return types of explode() with limit ( #2286 )
2019-11-02 10:10:38 +01:00
Matthew Brown
a82e35a59f
Fix #2291 - extended covariant template param types should be treated as covariant
2019-11-01 18:25:07 +01:00
Matthew Brown
bab7e46983
Fix #2281 - allow lists to accept list types
2019-11-01 13:35:16 +00:00
Matthew Brown
050eb82f04
Fix #2290 - detect call on void type
2019-11-01 13:05:28 +00:00
Jáchym Toušek
f2c82fa212
Add support for Iterator<X> type ( #2285 )
...
* Add support for Iterator<X> type
* Fix tests
2019-10-30 18:00:27 +00:00
Matthew Brown
4845bbbd49
Improve solution to extended type juggling
2019-10-29 19:30:19 +00:00
Matthew Brown
8d7cdeb8ec
Fix #2275 - allow extended templated types to bypass mixed type coercion rules
2019-10-29 10:07:34 +00:00
Tyson Andre
f40fe86321
Properly warn when a short option is invalid. ( #2280 )
...
Previously, Psalm would not warn or exit - it would skip over the arg and
continue with analysis.
2019-10-29 08:55:34 +00:00
Matthew Brown
0ac5c32f2f
Fix #2277 - scan psalm-assert types always
2019-10-25 23:39:33 +02:00
Brown
8876499ddd
Fix #2252 - allow destructuring of ArrayAccess objects
2019-10-22 11:17:42 -04:00
Brown
353cf2351e
Fix #2259 - if error suppression is use, list destructuring values will be nullable
2019-10-22 10:40:37 -04:00
Mikko Pesari
e82d3c438d
Fix wrong annotations in ext-ds method stubs ( #2263 )
...
* Fix wrong annotation for class implementing an interface
* Fix unrecognised annotations
2019-10-22 09:33:23 -04:00
Joram Schrijver
39b25f9008
Fix ArrayIterator::{uasort,uksort} parameter type ( #2254 )
2019-10-22 08:45:25 -04:00
Mikko Pesari
fc16eb5e92
Fix Ds\Set method stubs ( #2261 )
...
* Fix constructor parameters
* Add missing @param name
* Add missing implements
2019-10-22 06:12:35 -04:00
Brad Kent
6e6eea010b
callMap updates: unregister_tick_function, ReflectionClass::getInterfaceNames, ReflectionObject::getInterfaceNames ( #2258 )
2019-10-21 14:29:48 -04:00
Mikko Pesari
80665850db
Add method stubs for Ds\Set ( #2255 )
...
* Fix typo
* Add method stubs for Ds\Set
2019-10-21 10:06:26 -04:00
Matthew Brown
233977a764
Fix undefined array offset when too few iterator params supplied
2019-10-21 07:13:33 -04:00
Tyson Andre
94636476d2
Fix checking if union type with mixed is nullable ( #2253 )
...
Fixes #2249
2019-10-20 17:06:59 -04:00
Matthew Brown
05ace25817
Fix #2246 - fix return type of array_slice to be a list
2019-10-20 16:19:01 -04:00
Matthew Brown
b476761109
Fix #2235 - improve behaviour of array_merge on lists
2019-10-20 15:47:00 -04:00
Matthew Brown
1d6ca9bd7d
Allow callable-array type in docblocks
2019-10-20 15:33:57 -04:00
Matthew Brown
4aeb28aceb
Fix #2244 - correctly check do while expression before use
2019-10-20 14:18:30 -04:00
Matthew Brown
3bb0016434
Fix #2251 - add support for yielding from lists
2019-10-20 12:09:04 -04:00
Matthew Brown
22e35a7233
Improve message for mixed method call
2019-10-20 11:13:23 -04:00
Matthew Brown
0a35c9cd6a
Remove unnecessary computation
2019-10-19 23:03:59 -04:00
Matthew Brown
5910a362ea
Improve report output of taint analysis
2019-10-19 17:59:10 -04:00
Brown
8978e5c7f1
Add sink for print_r
2019-10-18 15:28:15 -04:00
Brown
2be489c527
Fix regression when identifying clauses in error
2019-10-18 15:06:37 -04:00
Brown
89752b8574
Support ext-ds and fix offset count
2019-10-18 11:35:24 -04:00
Brown
dda68228f3
Fix #2247 - don’t crash when yielding from class with too many template params
2019-10-18 11:01:16 -04:00
lhchavez
216f991b0c
Normalize stringified type names ( #2239 )
...
This change makes stringified types more normalized. Concretely it sorts
all union types, reconciled types, and sorts the keys within object-like
types.
2019-10-17 01:14:33 -04:00
Matthew Brown
e8618371fb
Refine isset checks
2019-10-17 01:09:21 -04:00