Bruce Weirdan
7d3dd47efa
Added support for preg_grep ( #2523 )
2019-12-29 11:05:08 -05:00
Matthew Brown
b375ebf06f
Fix test
2019-12-29 10:29:03 -05:00
Matthew Brown
26876b9a13
array_push shouldn’t change list type
2019-12-29 10:20:44 -05:00
Matthew Brown
d3fb0181cb
Fix #2527 - no crash when template cannot be resolved
2019-12-29 08:45:42 -05:00
Matthew Brown
0c7851ae21
Fix #2526 - always check for array assignment in assignop
2019-12-29 08:36:46 -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
Bruce Weirdan
4110ec351b
Make travis green again ( #2518 )
...
* Bumped phpspec/prophecy version to prevent 7.4 deprecations
* Fix DOMDocument::$config type
This property was documented as containing DOMConfiguration object, but
in fact always returned `null` (see [php source](ee80567a83/ext/dom/document.c (L542)
)).
DOMConfiguration class is removed in PHP 8.
* Dropped unused use
* Allow to set PHP 8.0 as current version
* Fix CallMap issues for PHP 8.0
- Use both major and minor version to load deltas
- Don't load non-existent deltas
- Stop at lowest possible delta
2019-12-27 19:06:09 -05:00
Matthew Brown
6a6a6ab2d7
Fix dumb
2019-12-27 16:51:49 -05:00
Matthew Brown
982fe627e0
Fix #2515 - allow chained assertions on @psalm-mutation-free methods
2019-12-27 16:44:55 -05:00
Matthew Brown
1d2fefd647
Preserve more information after removing types
2019-12-27 15:26:01 -05:00
Matthew Brown
9a04d93cf9
Fix #2352 - treat hexdec return type a bit better
2019-12-27 14:14:49 -05:00
Matthew Brown
4a28525275
Fix removal of traversable from iterable
...
Fixes #2509
2019-12-27 13:01:44 -05:00
Matthew Brown
068afa09d3
Add very basic implementation for class-string-map
...
Fixes #1969
2019-12-27 12:49:28 -05:00
Matthew Brown
b78f273ccf
Improve handling of template params a smidge
2019-12-27 11:49:44 -05:00
Matthew Brown
2f2cd85a6a
Identify invalid static property array assignment
2019-12-27 10:34:51 -05:00
Valentin Udaltsov
006f788d6a
Added array_fill_keys support ( #2512 )
...
* Added array_fill_keys support
* Removed unnecessary array_fill_keys phpdoc
2019-12-27 13:30:42 +00:00
Matthew Brown
6b81f8c64a
Fix #2506 - use correct flag when checking classes after analysis
2019-12-24 01:02:34 +00:00
Matthew Brown
ee35db5a3b
Refine assignment somewhat
2019-12-22 12:43:57 +00:00
Matthew Brown
141bfd313f
Improve handling of assignments in arrays
2019-12-22 12:36:16 +00:00
Matthew Brown
8bd68608fa
Fix message
2019-12-22 11:08:47 +00:00
Matthew Brown
8fc3c3b8cd
Improve removing types from callable
2019-12-22 10:29:00 +00:00
Matthew Brown
3be8e4c6ba
Improve string comparison negation
2019-12-22 02:09:22 +00:00
Matthew Brown
4c8730c5a3
Improve handling of unset array, ensuring that keys don’t persevere
2019-12-22 01:42:39 +00:00
Bruce Weirdan
ede1076039
Dropped unused use ( #2495 )
2019-12-21 00:58:05 +00:00
Matthew Brown
946b4f73e6
Fix #2493 - don’t crash when provided function doesn’t exist
2019-12-21 00:34:31 +00:00
Bruce Weirdan
7e8268fe94
Drop non-existent param from docblock ( #2492 )
...
I wonder why psalm didn't catch it.
2019-12-21 00:14:22 +00:00
Matthew Brown
59aeb6b6c3
Fix #2490 - allow overriding renamed trait methods in subclass
2019-12-20 20:11:27 +00:00
Matthew Brown
8c1638efc5
Fix tests once more
2019-12-20 19:37:36 +00:00
Matthew Brown
3d03da271d
Fix tests to give more accurate locations
2019-12-20 18:18:26 +00:00
Matthew Brown
395cac0e0b
Add specific exception
2019-12-20 18:08:53 +00:00
Matthew Brown
e475a1826c
Issues with non-abstract methods should always be MethodSignatureMismatches
2019-12-20 18:08:35 +00:00
Matthew Brown
a5434aabfe
Fix #2491 - report trait issues at the most local place
2019-12-20 17:57:31 +00:00
Matthew Brown
1b54d058aa
Fix #2488 - add support for @phpstan- annotations
2019-12-20 10:49:10 +00:00
Matthew Brown
a4191171bf
Fix #2483 - treat intersecting PHPDocs from interfaces better
2019-12-20 01:42:57 +00:00
Matthew Brown
d7b99148be
Add support for JUnit report type
...
Fixes #2485
2019-12-19 20:18:09 +00:00
Matthew Brown
15cd62d332
Fix #2484 - add support for spaces in assert-if-true types
2019-12-19 19:24:26 +00:00
Matthew Brown
ab03ac06f4
Add support for spread operator before type as well
...
Ref #2429
2019-12-19 00:29:01 +00:00
Matthew Brown
cc3df7d6be
Remove errant comma
2019-12-18 23:50:57 +00:00
Matthew Brown
af28d650f3
Fix #2408 - existing offsets checked with isset should be valid
2019-12-18 23:48:25 +00:00
Matthew Brown
456aa1c569
Fix #2468 - add support for zipping arrays
2019-12-18 18:14:02 +00:00
Matthew Brown
734ad02203
Fix #2476 - flesh out iterable params
2019-12-18 17:19:54 +00:00
Matthew Brown
9d8ca08fb9
Fix #2479 - analyse undefined function arguments too
2019-12-18 16:37:48 +00:00
Matthew Brown
11433dc9d0
Fix references
2019-12-18 14:43:15 +00:00
Matthew Brown
cb797c6159
Fix inherited class methods as well
...
Ref #2478
2019-12-18 14:39:37 +00:00
Matthew Brown
49a3f89526
Fix #2478 - process trait template inheritance sensibly
2019-12-18 13:58:37 +00:00
Brown
e551b24843
Classes that just reference themselves aren’t used
2019-12-16 11:46:10 -05:00
Matthew Brown
bf67c036aa
Fix #2474 - treat free-standing binaryops as ifs instead
2019-12-16 08:32:00 -05:00
Matthew Brown
bdbc758ddc
Fix #2475 - allow iterable covariance
2019-12-16 07:16:35 -05:00
Matthew Brown
529efaa29c
Fix #2473 - allow array_map to work with callables returning static
2019-12-15 19:55:20 -05:00
Matthew Brown
7cb021a268
Fix the fix
2019-12-15 14:11:24 -05:00
Matthew Brown
1d0ac3df29
Fix #2472 - array_map should retain non-emptiness when passed string callables
2019-12-15 14:06:12 -05:00
Matthew Brown
3ef93fd795
Add slash
2019-12-15 13:34:12 -05:00
Matthew Brown
090ad90de3
Fix build issues
2019-12-15 13:28:38 -05:00
Matthew Brown
72f3c306d7
Fix #2471 - don’t erroneously template class-strings
2019-12-15 13:23:04 -05:00
Matthew Brown
1a92e98dd3
Warn about more generic callables
2019-12-14 11:55:26 -05:00
Matthew Brown
ce2e5b27c0
Fix #2470 - only parameterise constructors according to inherited params
2019-12-14 11:38:09 -05:00
Matthew Brown
c7a3ba9e4a
Refine callable type
2019-12-14 10:47:20 -05:00
Matthew Brown
c3d8315ab9
Don’t inherit parameter covariance
2019-12-14 10:06:40 -05:00
Matthew Brown
797a059a84
Prevent static methods using class instance template types
2019-12-14 09:40:09 -05:00
Matthew Brown
b48021dbfd
Allow null return on template with null as type
...
Ref #2466
2019-12-13 21:56:43 -05:00
Matthew Brown
f40b6625eb
Fix #2431 - allow null in template defaults
2019-12-13 21:40:09 -05:00
Brown
2469f04715
Improve reconciliation of arrays with constant offsets
2019-12-13 17:17:14 -05:00
Brown
6d02aa86e8
Reconcile string emptiness a bit better
2019-12-13 15:51:54 -05:00
Matthew Brown
c9b5e96b0f
Fix ref
2019-12-13 08:11:04 -05:00
Matthew Brown
ca5f8fabdc
Fix #2464 - null coalesce shouldn’t allow undefined vars
2019-12-13 08:06:40 -05:00
Matthew Brown
6ff312fe13
Fix test
2019-12-12 11:43:03 -05:00
Matthew Brown
1df77a9f43
Only mark vars as reconcilable if they can be memoized
2019-12-12 11:24:47 -05:00
Matthew Brown
f45014d403
Fix #2460 - allow assertions on immutable method calls
2019-12-12 09:32:33 -05:00
Matthew Brown
8f25183784
Fix #2459 - don’t add assertions to parent context unnecessarily
2019-12-12 00:37:00 -05:00
Brown
05783eb616
Find issues with impossible property values
2019-12-11 17:08:02 -05:00
Brown
612f74f481
Clean up static property reconciliation
2019-12-11 15:05:09 -05:00
Brown
6b56a0239d
Improve handling of assertions on static properties
2019-12-11 14:06:09 -05:00
Brown
d2b99cbe77
Add possibly defined vars in binary op analysis
2019-12-11 13:09:27 -05:00
Brown
e476eed111
Fix issue where inside_conditional is forgotten
2019-12-11 12:06:10 -05:00
Brown
2f9b1ff665
Fix too-long line
2019-12-11 11:40:47 -05:00
Brown
e564d67214
Add support for simple default arrays in @method docblocks
...
Fixes #2455
2019-12-11 11:29:00 -05:00
Brown
79f3a5d371
Allow empty string parsing
2019-12-11 10:52:46 -05:00
Brown
3a7dd61889
Fix #2457 - allow psalm-type aliases to be used above return type
2019-12-11 10:30:40 -05:00
Brown
4b715cdbff
Fix #2456 - ignore UnusedFunctionCall when function asserts
2019-12-11 10:13:22 -05:00
Matthew Brown
c27d0d953b
Add null check
2019-12-11 00:38:28 -05:00
Matthew Brown
848cbbb487
Fix #2454 - build up template map to better understand passed-through data
2019-12-11 00:34:54 -05:00
Brown
2e322ee214
Don’t try to fix missing trait method params
...
Fixes #2427
2019-12-10 17:32:39 -05:00
Brown
b3cf9d3958
Catch circular references in constants
...
Fixes #2453
2019-12-10 16:16:44 -05:00
Brown
20049eb0b5
Fix #2437 - don’t worry about mixed templated param types
2019-12-10 14:58:26 -05:00
Brown
9d22f56560
Fix #2443 - templates are not valid PHPDoc
2019-12-10 14:03:51 -05:00
Brown
423288d2fe
Fix negations of templated numeric
2019-12-10 10:55:24 -05:00
Matthew Brown
a3ab8e8973
Fix dumb
2019-12-10 09:47:17 -05:00
Matthew Brown
3faf1f8bc2
Improve int assertions
2019-12-10 09:44:38 -05:00
Matthew Brown
750d4b4f4f
Be more accurate when assertion is incorrect
...
Ref #2452
2019-12-10 09:26:46 -05:00
Matthew Brown
8494f02008
Fix template handling when templating inside templated class
2019-12-10 00:50:36 -05:00
Brown
af63f87689
Fix dumb;
2019-12-09 17:42:22 -05:00
Brown
c8d8244e73
Fix copy/paste snafu
2019-12-09 17:35:50 -05:00
Brown
74de32fefe
Allow multiple @psalm-assert annotations for a given variable
2019-12-09 17:21:58 -05:00
Brown
aaffdbc79f
Add support for non-empty scalar
...
Ref #2449
2019-12-09 17:06:10 -05:00
Teemu Koskinen
447e3539af
ssh2-functions can return false on error, added missing parameters ( #2447 )
...
Source: http://git.php.net/?p=pecl/networking/ssh2.git;a=tree
2019-12-09 14:50:55 -05:00
Brown
b78acf796f
Fix #2445 - only generalise param when it’s generic
2019-12-09 10:58:09 -05:00
Brown
40bdc219ff
Add more info for too many params error
2019-12-09 10:31:00 -05:00
Matthew Brown
517aaac851
Fix #2432 - narrow template type after is_object check
2019-12-08 21:40:15 -05:00
Matthew Brown
432c291dd7
Fix #2440 - add support for uasort
2019-12-08 21:30:19 -05:00
Matthew Brown
d6a731be73
Fix #2441 - add error when @template type is missing
2019-12-08 21:19:29 -05:00
Matthew Brown
e3d108ebd9
Fix #2439 - fix templating of class-string<T>::returnsStatic
2019-12-08 21:12:25 -05:00
Matthew Brown
69e6624b16
Fix #2436 - fix templating of property types inside templated functions
2019-12-08 19:25:40 -05:00
Matthew Brown
02fbf12337
Only warn about clauses in the currently-scanned conditional
2019-12-08 16:35:56 -05:00
Matthew Brown
6236a30bf5
Add broken test
2019-12-08 13:02:38 -05:00
Matthew Brown
c9f43782fd
Fix mixed method issues after defining new type
2019-12-08 10:17:40 -05:00
Matthew Brown
83b10bb9af
Fix #2426 , or at least some of it
2019-12-08 00:49:34 -05:00
Matthew Brown
2e00ad2240
Treat more things as assignments
2019-12-07 15:58:05 -05:00
Matthew Brown
f0cd7eab04
Remove redundant calls
2019-12-07 14:05:43 -05:00
Philip Hofstetter
528180998e
fix return type of stream_bucket_new ( #2434 )
...
the function returns `object` since 2003 in
php/php-src@c4a491e12c and
`stream_bucket_append()` is type hinted to take `object` too.
This fixes #2430
2019-12-07 14:04:18 -05:00
Matthew Brown
3c52102388
Fix #2438 - improve handling of get_class calls
2019-12-07 14:03:20 -05:00
Matthew Brown
2b6831ba10
Fix too-long line
2019-12-07 01:38:24 -05:00
Matthew Brown
df395944f8
Change how $changed_var_ids is communicated
2019-12-07 01:23:35 -05:00
Brown
ef44bd104e
Consolidate some fixes from the binaryop branch
2019-12-06 12:47:27 -05:00
Brown
19838fc7f5
Fix #2423 - pass by ref variable status after byref assignment
2019-12-05 13:37:03 -05:00
Brown
8ff33ee64d
Fix #1943 - give up analysing really complicated conditionals
2019-12-05 10:26:53 -05:00
Tyson Andre
b713066d32
Add an exception handler that prints full exception trace ( #2418 )
...
By default, php will only print the first few thousand bytes of the
exception, for an uncaught exception
(I think that's the default, and not just my configuration)
Instead, print all of the parts of the exception.
For #1083 (this PR does not cover set_error_handler)
2019-12-04 23:17:08 -05:00
Tyson Andre
6b2c1401c8
Workaround for uncaught InvalidArgumentException ( #2420 )
...
Fixes #2419
2019-12-04 23:16:51 -05:00
Tyson Andre
4548fb87f7
Add space for 'can automatically fix Nissues' ( #2416 )
2019-12-04 16:16:37 -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
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
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
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
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
Matthew Brown
54a31f8cff
Be more scrupulous about mixed vars
2019-10-17 00:29:51 -04:00
Matthew Brown
29902c8b99
Fix #2237 - suppress reconciling issues when inherited clauses couldn’t be resolved into types
2019-10-16 21:55:11 -04:00
Brown
d52d9b6552
Fix #2234 - treat continuous assertions on interfaces as redundant
2019-10-16 18:43:03 -04:00
Matthew Brown
7b522af169
Provide necessary typehint
2019-10-15 20:41:06 -04:00
Matthew Brown
9115ffd237
Fix #2215 - refine closure type if it doesn’t clash
2019-10-15 20:34:41 -04:00
Brown
b29227aaf6
Allow taints to be removed via annotation
2019-10-15 16:25:27 -04:00
Brown
22a12444df
Fix #2220 - detect destructuring of non-array
2019-10-15 13:55:30 -04:00
Brown
aa5d82d30d
Fix #2228 - load functions defined on traits included in a class
2019-10-15 12:09:08 -04:00
Brown
5e649f684c
Fix erroneous return type resolution
2019-10-14 17:10:30 -04:00
Matthew Brown
3dc96edf08
Update file references again
2019-10-13 23:37:15 -04:00
Matthew Brown
477fa8cba8
Set file references before they’re used
2019-10-13 23:30:01 -04:00
Matthew Brown
a0d484a314
Reduce duplicate calls
2019-10-13 22:05:16 -04:00
Matthew Brown
8c6b234c2c
Improve speed of taint analysis
2019-10-13 20:10:31 -04:00
Matthew Brown
e1e2ff3e57
Improve shuffling
2019-10-13 20:09:50 -04:00
Matthew Brown
7e76d3386d
Fix phpcs issues
2019-10-13 12:38:16 -04:00
Matthew Brown
3c00f3d029
Limit taint file re-analysis
2019-10-13 12:34:40 -04:00
Matthew Brown
cd8534fb6c
Shuffle file analysis order for more even threaded workload distribution
2019-10-13 12:33:18 -04:00
Matthew Brown
d0a9bf24f8
Void-returning functions are going to be impure
2019-10-13 09:51:25 -04:00
2e3s
a658566429
Add impure functions for mcrypt and iterator_apply ( #2227 )
2019-10-13 09:43:25 -04:00
Matthew Brown
7e2d00d6ed
Allow taints to be added to root array types
2019-10-12 12:23:40 -04:00
Matthew Brown
e5623e9257
Fix function call
2019-10-11 23:33:36 -04:00
Matthew Brown
4478d31593
Taint arrays in creation
2019-10-11 23:28:17 -04:00
Matthew Brown
5918278af3
Fix cache growth thanks to array_recursive
2019-10-11 20:17:07 -04:00
Brown
09cf864d9b
Mark preg_replace_callback as sometimes-pure
2019-10-11 13:54:33 -04:00
Brown
3f837a3493
Fix #2192 - allow static return value on templated object
2019-10-11 12:02:41 -04:00
Matthew Brown
7857b07f91
Fix list-could-be-array issue
2019-10-11 08:24:35 -04:00
Matthew Brown
1a1b3a10a9
Fix #2225 - iterator_to_array can return a list
2019-10-10 23:47:11 -04:00
Matthew Brown
0556f28a9f
Fix #2224 - make sure literal strings are put into appropriate arrays when templating
2019-10-10 23:38:57 -04:00
Matthew Brown
c419e0e798
Fix #2222 - check for @throws docblock inheritance
2019-10-10 22:44:21 -04:00
Matthew Brown
03c39cbe7c
Fix #2223 - make sure lists are handled in more places
2019-10-10 20:16:43 -04:00
Brown
3658771bff
Fix #2221 - variadic args are lists
2019-10-10 17:46:20 -04:00
Brown
67b32f463e
Support assertions on lists
2019-10-10 10:57:43 -04:00
Brown
99c91efbc6
Add support for reconciling callable lists
2019-10-10 10:34:31 -04:00
Brown
cc9a925e84
Allow list to be coerced to callable
2019-10-10 10:26:13 -04:00
Brown
a05f4744cb
Only show taint issues when tracking tainted input
2019-10-09 14:26:32 -04:00
Brown
50e729a6d1
Fix more list issues
2019-10-09 13:42:39 -04:00