Matthew Brown
34a39b895c
Support checks for array emptiness
2018-05-19 20:31:48 -04:00
Matthew Brown
ea465852e1
Move TypeCombination logic into its own class
2018-05-19 19:44:03 -04:00
Matthew Brown
09eb316a9c
Fix #755 - add support for inferring explicit true checks
2018-05-19 00:41:07 -04:00
Matt Brown
f2a70fef85
Fix #745 - give iterator_to_array back its type info
2018-05-18 18:10:10 -04:00
Matt Brown
c6aa396dea
Fix #741 - make sure closures are cloned properly
2018-05-18 17:47:40 -04:00
Matthew Brown
b0733254bb
Use individual type objects for each string ( #757 )
...
* Experiment with individual types for each string
* Fix bunch of errors
* Fix a few more issues
* Fix a whole bunch of bugs
* Fix most remaining bugs
* Fix isset warnings
* Fix psalm errors in psalm
* Limit big string size
* Fix falsiness of ints
* Fix issue with type widening, allowing value set in nested if to be altered
* Don’t complain if type is mixed
* Add skipped-for-now test
* Add specific test to address issue
2018-05-18 11:02:50 -04:00
Jay Klehr
80b6347a72
Updating openssl callmaps to reflect php documentation
2018-05-18 10:46:38 -04:00
Matthew Brown
ec381308dd
Fix #753 - prevent some strings from becoming literals
2018-05-17 01:46:01 -04:00
Matt Brown
3263b64301
Filter conditions better when encountering parent instanceof
2018-05-16 11:47:39 -04:00
Matt Brown
3119a1f68a
Allow resolution of class constants in const arrays
2018-05-14 17:39:08 -04:00
Matt Brown
a0281e5716
Improve clause eradication after ifs
2018-05-14 16:29:51 -04:00
Matt Brown
02c72f6de5
Fix buggy if checks
2018-05-14 12:25:58 -04:00
Matt Brown
02d65b617b
Allow weak comparison between floats and ints
2018-05-14 12:02:06 -04:00
Matt Brown
58c68c355e
Allow weak equality between scalar types
2018-05-14 10:36:41 -04:00
Matthew Brown
af8705502e
Improve impossible case location reporting
2018-05-13 22:31:45 -04:00
Matthew Brown
557c3ddace
Limit to the case condition
2018-05-13 22:25:08 -04:00
Matthew Brown
05c3d1ab03
Improve reporting of duplicate case statements
2018-05-13 22:02:10 -04:00
Matthew Brown
5c1726cece
Fix return type of ReflectionParameter::getDefaultValue
...
Fixes #739
2018-05-13 19:35:57 -04:00
Matthew Brown
c00fdd0fe3
Add better type inference for next and prev
...
Fixes #738
2018-05-13 19:20:05 -04:00
Matthew Brown
d46997b196
Make sure weak equality clauses don’t generate ParadoxicalCondition
2018-05-13 01:27:45 -04:00
Matthew Brown
9f28be415a
Fix reconciliation of ored types
2018-05-13 00:54:12 -04:00
Matthew Brown
69338abf7c
Allow rough equality assertions to be negated too
2018-05-12 20:08:22 -04:00
Matthew Brown
8e90334428
Allow assignment to numeric string via assertion
2018-05-12 19:56:17 -04:00
Matthew Brown
dbc0e6dfcb
Use arrays instead of strings for assertions
2018-05-12 19:38:43 -04:00
Matthew Brown
7dd86efa13
Add support for checking negative values
2018-05-12 18:46:47 -04:00
Matthew Brown
759516d01f
Fall back to $method_id if no defining method id found
2018-05-12 13:19:19 -04:00
Matthew Brown
313a010355
Add workaround for Closure::__invoke
2018-05-12 13:02:53 -04:00
Matthew Brown
4fe5ac87b6
Fix #712 - rewrite switch statement fallthroughs to understand logic better
2018-05-12 12:55:24 -04:00
Matthew Brown
8de8ce2ef4
Only assign new offset types when it’s safe to do so
2018-05-12 11:19:31 -04:00
Matthew Brown
5589aa89be
Fix #736 - only remove offset type when it doesn’t contain const array type
2018-05-12 11:17:41 -04:00
Matthew Brown
56a1f744a0
Fix #734 - allow DOMDocument::appendChild to mirror its first arg
2018-05-12 00:28:21 -04:00
Matthew Brown
1b8fd75a77
Suppress possibly-invalid key issue
2018-05-11 23:24:50 -04:00
Matthew Brown
071558ec83
Fix #733 - DomNodeList implements ArrayAccess
2018-05-11 23:21:53 -04:00
Matthew Brown
b9b2a909a1
Fix #729 and prevent impossible const array access
2018-05-11 23:14:44 -04:00
Matt Brown
5c0f4a999c
Move a bunch of classes to better places
2018-05-11 18:35:02 -04:00
Matt Brown
ef519ade72
Don’t adjust vars unless they’re passed by ref
2018-05-11 18:09:11 -04:00
Matt Brown
64b8603ee4
Remove further ??
2018-05-11 17:57:18 -04:00
Matt Brown
87a11bd86a
Remove PHP7-only language
2018-05-11 17:34:10 -04:00
Matt Brown
e9411eec76
Fix #730 - improve handling of templated closure params
2018-05-11 16:17:21 -04:00
Matt Brown
e3b6b9c273
Fix #724 - ignore any return types after return/throw/break/continue
2018-05-11 11:26:32 -04:00
Matthew Brown
a33d52d935
Add support for referencedProperty error restrictions
2018-05-11 00:07:41 -04:00
Matt Brown
92bb22ccca
Fix misfire with similarly named class constants
2018-05-10 14:12:50 -04:00
Matt Brown
444dd33118
Fix issue with undefined class constant keys
2018-05-10 13:01:55 -04:00
Matt Brown
ad94761e15
Fix undefined property fetch redundant condition
2018-05-09 12:54:31 -04:00
Matthew Brown
318220a1bf
Fix #728 - remove statement return type when re-analysing
2018-05-09 09:30:23 -04:00
Matthew Brown
31121cfc6d
Fix substr return in Union::__toString
2018-05-09 01:13:25 -04:00
Jay Klehr
242f46ac35
Updating stubs for several string functions ( #727 )
2018-05-09 00:40:06 -04:00
Matthew Brown
b4c0ffbe9d
Also match substr_replace
2018-05-09 00:39:45 -04:00
Matthew Brown
8149573754
Treat str_ireplace like str_replace
2018-05-09 00:34:44 -04:00
Matthew Brown
3380de16a2
Fix #709 - detect intersection template matches a bit better
2018-05-08 23:17:11 -04:00
Matthew Brown
77d4629896
Fix #714 - fix trait class constants
2018-05-08 22:32:57 -04:00
Matthew Brown
8f9b4098bc
Allow scalar to work with false
...
Fixes #718
2018-05-08 22:18:58 -04:00
Jay Klehr
21c1f54af2
Updating zlib function stubs to match php.net docs ( #725 )
2018-05-08 22:14:11 -04:00
Matthew Brown
bfa21e1108
Fix #721 by allowing @property annotations to be inheritable
2018-05-08 22:13:26 -04:00
Matthew Brown
2c0dd36035
Fix get type return types
2018-05-08 22:01:05 -04:00
Matthew Brown
5c39fb5ab1
Fix #716 - uss string inference to inform property names
2018-05-08 21:21:22 -04:00
Matthew Brown
c1440c11dc
Create separate file for magic properties
2018-05-08 20:25:39 -04:00
Matthew Brown
e50ef8bf03
Support __invoke return types
2018-05-08 19:49:25 -04:00
Tyson Andre
9a9f6d1856
Make the string concatenation of two known values into a known value ( #717 )
...
* Make the string concatenation of two known values into a known value
address review comments
* Add vim temporary files to .gitignore
2018-05-08 19:11:18 -04:00
Matt Brown
6e259bed03
Always evaluate closures, even when passed as mixed call args
2018-05-08 18:11:10 -04:00
Matt Brown
53ff05783c
Clean up code slightly
2018-05-08 17:43:26 -04:00
Matt Brown
4f678f5f99
Fix bad comparisons
2018-05-08 17:42:02 -04:00
Matt Brown
03ea65cff8
Don’t complain about false values on properties when we don’t care
2018-05-08 16:57:16 -04:00
Matt Brown
bc17d23788
Fix mixed empty checks
2018-05-08 16:34:08 -04:00
Bruce Weirdan
2afe364ee0
simplexml callmap update ( #723 )
...
* simplexml callmap update
fixes vimeo/psalm#722 and includes a number of manual updates to
simplexml function/method signatures (based on php.net docs)
* minor fixes
- s/qname/name/
- explicit void return type for `SimpleXMLElement::addAttribute()`
2018-05-08 13:50:32 -04:00
Matt Brown
0eda76b742
Fix strict reconciliation of bools
2018-05-07 18:09:40 -04:00
Matt Brown
3c9e42f884
Fix string assertion for ternaries
2018-05-07 17:52:18 -04:00
Matt Brown
f858924b60
Fix erroneous string matching after oring
2018-05-07 17:40:16 -04:00
Matt Brown
2299cecd23
Fix strict isset reconciliation
2018-05-07 17:15:27 -04:00
Matt Brown
6460d907f9
Improve array handling when offsets hard to define
2018-05-07 16:22:04 -04:00
Matt Brown
091d13b73f
Fix reconciliation of non-isset array vars
2018-05-07 16:00:56 -04:00
Matt Brown
c6ed1b0458
Fix bad offset
2018-05-07 15:47:04 -04:00
Matt Brown
c0729a02cd
Fix remaining issues with logic checks
2018-05-07 14:52:45 -04:00
Matthew Brown
61aeea6375
Fix whole bunches of things
2018-05-07 01:26:06 -04:00
Matthew Brown
3b9b4a8a6f
Improve binary op function layout
2018-05-06 12:11:40 -04:00
Matthew Brown
c31f787f7c
Convert DNF conditions to CNF
2018-05-06 12:11:40 -04:00
Matthew Brown
00838d19b5
Fix #534 - fix bug in type simplification
2018-05-06 12:05:55 -04:00
Matthew Brown
04bd492360
Fix erroneous scope resolution
2018-05-05 20:52:10 -04:00
Matthew Brown
8d8fdad924
Always set array offset type
2018-05-05 17:50:19 -04:00
Matthew Brown
21261172a8
Fix #713 - support offsets of known array types
2018-05-05 17:30:18 -04:00
Matthew Brown
0181fce46f
Fix #711 - concat ops contribute to loop map
2018-05-05 16:17:54 -04:00
Matthew Brown
85c69f1335
Make sure div operations return GMP too
2018-05-05 13:14:59 -04:00
Matthew Brown
c39af03a01
Allow GMP to be converted to string
2018-05-05 13:04:27 -04:00
Matthew Brown
3718bd5c61
Fix GMP arithmetic operations
2018-05-05 12:59:30 -04:00
Matthew Brown
1a4ddc7cdd
Support value types ( #707 )
...
* Add first idea
* Add initial count experiments
* Remove false positives
* Fix getId to support changes in conditionals
* Add better tests
* Strip types when not exists
* Fix array offsets
* More fixes
* Add class constant value types
* Clone constants everywhere
* Don’t complain unnecessarily
* Be more lenient with possibly invalid __sets
* Fix mixed issues
* Fix bug concerning orred string equality
* Remove unnecessary casts
2018-05-03 13:56:30 -04:00
Matt Brown
521237dc56
Fix #705 - don’t be so strict about undefined constants
2018-05-03 13:20:42 -04:00
Matt Brown
f2ff727649
Fix #706 - don’t namespace &
2018-05-03 13:15:16 -04:00
Matt Brown
ae49558de6
Ignore MissingConstructor a little less
2018-05-03 11:38:27 -04:00
Matthew Brown
7ccc17cd98
Fix #324 - improve undefined array handling
2018-05-02 20:10:08 -04:00
Matthew Brown
fa95dede08
Fix #455 - allow unset to alter object-like arrays
2018-05-02 19:39:11 -04:00
Matt Brown
4513d24b7d
If there’s any overlap in types use PossiblyInvalidArgument
2018-05-01 14:27:05 -04:00
Matthew Brown
b36b50784d
Fix #703 - prevent undefined param offset
2018-04-30 22:18:41 -04:00
Matthew Brown
15e1003c37
Warn about impossible empty
2018-04-30 22:13:13 -04:00
Matt Brown
6e67030925
Fix #702 - prevent bad array to iterable cast
2018-04-30 13:17:09 -04:00
Matthew Brown
acacde173e
Fix highlight_string return type default
2018-04-30 01:49:55 -04:00
Matthew Brown
59bbf6f896
Allow Exception::getPrevious to return null
2018-04-30 00:44:43 -04:00
Matthew Brown
6ad2184b7e
Improve highlight_string/highlight_file signatures
2018-04-30 00:31:27 -04:00
Matthew Brown
1946bc0085
Allow resource to be cast to string
2018-04-30 00:19:35 -04:00
Matthew Brown
99da371ac4
Move memoisation after callmap branch
2018-04-28 13:49:27 -04:00
Matthew Brown
496256c2a5
Make memoisation more universal
2018-04-28 13:49:21 -04:00
Matthew Brown
da6209276f
Allow ability to memoize empty method calls based on config
2018-04-28 13:05:43 -04:00
Matt Brown
a0984cdaf1
Fix #697 - make missing objectlike fields an InvalidArgument
2018-04-27 17:10:57 -04:00
Matt Brown
6b3759a266
Fix #699 - prevent stubs from overriding known functions
2018-04-27 15:00:22 -04:00
Matt Brown
4507962883
Fix possibly undefined issue
2018-04-25 14:45:51 -04:00
Matt Brown
8ec34ed4ed
Only cache effects hashes when there’s no change
2018-04-25 14:33:39 -04:00
Matt Brown
0c24c0cb20
Remove unused code
2018-04-25 13:12:42 -04:00
Matt Brown
a409b3c32a
Remove unnecessary echo
2018-04-25 11:53:10 -04:00
Matt Brown
9a1674bd0e
Remove checker cache optimisation (v2 only)
2018-04-25 11:52:24 -04:00
Matt Brown
d09d547718
Trigger InvalidDocblock when @return missing type
2018-04-25 11:18:05 -04:00
Matthew Brown
048a32e7b6
Also check incremental overflows ref #691
2018-04-24 23:12:01 -04:00
Matthew Brown
35725267f9
Fix #691 - Allow comparisons to float for integer results
2018-04-24 23:02:20 -04:00
Matthew Brown
e2400920b9
Fix #693 - add @TysonAndre’s fix for atomic type checks
2018-04-24 21:27:31 -04:00
Matthew Brown
19ccdbc08b
Remove unnecessary foreach
2018-04-24 21:15:33 -04:00
Matthew Brown
3e7e1b3020
Fix #694 - remove descendent vars when possibly reassigning
2018-04-24 21:02:07 -04:00
Matthew Brown
21871bd8d4
Remove PHP 5 dead code cc @TysonAndre
2018-04-24 07:08:14 -04:00
Matthew Brown
09082ddf52
Fix #695 - fix PHP parser cache version
2018-04-24 07:07:04 -04:00
Matthew Brown
668cf2c0be
Fix #692 - remove text after the end of a method
2018-04-23 09:52:40 -04:00
Matthew Brown
2fabdf3353
Fix #314 - add a way to indicate @method list is comprehensive
2018-04-22 00:40:30 -04:00
Matthew Brown
1c7568e612
Fix #642 - allow @method to override existing methods
...
behind usePhpDocMethodsWithoutMagicCall="true"
2018-04-21 23:08:08 -04:00
Matthew Brown
8b50cdf315
Fix #632 - add support for @method annotations when method can’t be found
2018-04-21 22:44:54 -04:00
Matthew Brown
d02b148820
Fix #633 - support @method for magic __call methods
2018-04-21 22:13:10 -04:00
Matthew Brown
da69e60cf3
Don’t error on existing Psalm configs cc @ostrolucky
2018-04-21 19:05:26 -04:00
rightfold
10a90d2270
Use less obscure method for checking a string against many other strings
2018-04-21 16:04:03 -04:00
rightfold
5c908da55a
Check that __clone, __construct, __destruct signatures omit return types
...
PHP complains when you have a return type declared for these three methods.
2018-04-21 16:04:03 -04:00
Matt Brown
0882b9c0f9
Fix #687 - interpret unpacked arguments in array_push and array_unshift
2018-04-20 17:14:38 -04:00
Matt Brown
131cab2528
Remove bad var_dump
2018-04-20 15:53:19 -04:00
Matt Brown
8b9753a235
Fix parsing of nested callable without args
2018-04-20 15:22:48 -04:00
Matt Brown
8d7c365e5f
Fix #679 - improve template param type checks
2018-04-20 10:52:23 -04:00
Matt Brown
a25a989c12
Prepare v2 dev release
2018-04-19 17:29:07 -04:00
Matt Brown
1f3837d972
Fix #686 - allow undefined class inside class_exists call
2018-04-19 12:16:00 -04:00
Matt Brown
f3b579b06a
Fix #685 - ignore assignment in conditional
2018-04-19 11:58:51 -04:00
Matthew Brown
a5f639d879
Fix array type conversion
2018-04-18 23:49:09 -04:00
Matthew Brown
392f3194c0
Fix #684 - use getIterator return type for IteratorAggregate functions
2018-04-18 23:47:21 -04:00
Matt Brown
41e2d9ef58
Bind callable ): stronger than |
2018-04-18 19:00:08 -04:00
Matt Brown
6a8fcaef56
Break compatibility with EventBuffer <= 1.5 (5+ years old)
2018-04-18 14:56:33 -04:00
Matt Brown
8c34c3d653
Support empty callable returning callable
2018-04-18 13:23:48 -04:00
Matt Brown
9099a0972b
Remove bad variable check
2018-04-18 12:10:49 -04:00
Matt Brown
4ee0298558
Always panic when two types can never be the same
2018-04-18 12:01:13 -04:00
Matt Brown
b9f55b7b8b
Fix #680 - add intersection to cloned type
2018-04-18 10:59:46 -04:00
Matt Brown
5b7d190640
Emit RedundantCondition when asserting two variables can never be equal
2018-04-17 15:39:09 -04:00
Matt Brown
5a2f6ff0e0
Fix #624 - change some innaccurate issue names
2018-04-17 14:07:02 -04:00
Matt Brown
6afaf5aae9
Make Psalm compatible with PHP Parser 4
2018-04-17 13:06:02 -04:00
Matt Brown
87be0b5863
Change die($message) to explicit exit(1)
2018-04-17 11:48:29 -04:00
Matt Brown
df5d369443
Fix #677 - handle get_class checks more accurately
2018-04-17 10:28:49 -04:00
Matt Brown
b28cc19fd2
Fix bitwise operations on strings
2018-04-16 18:19:18 -04:00
Matt Brown
55153f9542
Fix #676 - bitwise operators didn’t have int return type
2018-04-16 16:36:06 -04:00
Matt Brown
3cc549384f
Type explode more accurately
2018-04-16 16:03:04 -04:00
Matt Brown
02a5d22449
Fix #674 - remove summary for full Psalm run if not in console mode
2018-04-16 14:05:46 -04:00
François Kooman
0c815c7bf4
fix return type of Sodium\crypto_sign_open (sync with sodium_crypto_sign_open)
2018-04-16 14:00:43 -04:00
Matthew Brown
7345a44494
Fix callable parse issue
2018-04-15 18:16:31 -04:00
Matthew Brown
50f4ee95e8
Set from docblock before queuing params for scanning
2018-04-14 13:41:25 -04:00
Matthew Brown
8e07119e57
Fix #673 - don’t store hydration failures when exhuming
2018-04-14 13:39:30 -04:00
Radosław Kowalewski
eab7f7b68b
Suppress MixedArgument
2018-04-14 10:45:05 -04:00
Radosław Kowalewski
88bf8e284c
Configuration fallback to psalm.xml.dist file
...
Closes vimeo/psalm#644
2018-04-14 10:45:05 -04:00
Matt Brown
21b74ae725
Turn useAssertForType on by default (was off)
2018-04-13 17:35:56 -04:00
Matt Brown
3cf5345728
Improve codebase mixed coverage calculation by ignoring initial loops
2018-04-13 17:26:07 -04:00
Bruce Weirdan
11f239f6cb
dropped $link params that shouldn't be there for OO interface
2018-04-13 14:55:34 -04:00
Bruce Weirdan
ea748c5e83
dropped mysqli properties (these should not be in the CallMap)
2018-04-13 14:55:34 -04:00
Matt Brown
6ae39c84fc
Use more locals
2018-04-13 11:28:15 -04:00
Matt Brown
6502eba658
Don’t invalidate object vars after callmap functions
2018-04-13 11:24:59 -04:00
Matt Brown
564cebbaad
Fix #669 - improve signatures of mysql
2018-04-13 10:51:18 -04:00
Matt Brown
8fdd827e0d
Fix scope leaking from autoloader
2018-04-13 10:32:08 -04:00
Radosław Kowalewski
15c1a82d8c
Few fixes to make tests pass on windows
...
* changed / to DIRECTORY_SEPARATOR in expected messages
* cahnged most occurences PHP_EOL to "\n" in tests and src
* added output buffering in test to avoid marking test as risky
2018-04-12 22:41:13 -04:00
Radosław Kowalewski
0ea053bda1
Fix detecting relative paths on windows
...
Fixes vimeo/psalm#655
2018-04-12 16:08:50 -04:00
Matthew Brown
f9b6027bbc
Fix relative path includes on windows
2018-04-11 20:56:11 -04:00
Matthew Brown
1d6e75b06e
Fix #662 - allow callable void return types to be widened
2018-04-11 20:29:16 -04:00
Matt Brown
e58274acaa
Fix #665 - callmap for SplFileObject::fgetcsv
2018-04-11 15:11:14 -04:00
Matt Brown
6e6ae7aaa6
Only complain about redundant conditions when check_variables is true
2018-04-11 14:37:01 -04:00
Matt Brown
6426dbbf0e
Propagate array key updates after assertions to base array
2018-04-11 14:19:42 -04:00
Matt Brown
fe46e4e63d
Make tests a bit more specific
2018-04-10 15:47:04 -04:00
Matt Brown
8faa36c1cf
Improve closure type checking
2018-04-10 15:41:57 -04:00
Matt Brown
c721a7085a
Remove blank line
2018-04-10 14:03:36 -04:00
Matt Brown
fe033f1b6c
Fix #663 - infer array return types for closures
2018-04-10 13:05:31 -04:00
Matt Brown
9bdf9eefd3
Revert changes to sorting, force int return types for comparison functions
2018-04-10 12:38:29 -04:00
Matthew Brown
f15c26d7f4
Change how type impossibilities are treated to improve message types
2018-04-10 01:27:26 -04:00
Matthew Brown
5915718013
Fix #660 - always refer closure types
2018-04-09 22:00:36 -04:00
Matthew Brown
5f47374606
Fix indentation
2018-04-09 21:50:38 -04:00
Matt Brown
7640b00635
Only check functionlike arguments match if we know params
2018-04-09 18:49:11 -04:00
Matt Brown
47255fb19b
Fix array key check after direct assignment
2018-04-09 18:02:45 -04:00
Matt Brown
d3fa972fab
Fix uksort signature too
2018-04-09 16:55:29 -04:00
Matt Brown
7a7bc26ccd
Allow custom sorting methods to only return true/false
2018-04-09 16:54:04 -04:00
Matt Brown
6eabdf326d
Fix display of closure objects
2018-04-09 16:45:54 -04:00
Matt Brown
2b9a2d36cf
Don’t allow non-existent vars to be overridden
2018-04-09 14:32:22 -04:00
Matt Brown
af63d28b56
isset always returns bool
2018-04-09 10:20:18 -04:00
Matt Brown
cf6326f5e6
Fix #658 - empty always returns bool
2018-04-09 10:19:23 -04:00
Matthew Brown
bf7bf1ab3c
Make pcntl_signal sig clearer
2018-04-08 13:08:28 -04:00
Matthew Brown
0b95f1017e
Fix issues with callmap callable types
2018-04-08 12:57:56 -04:00
Matthew Brown
7e3a1ec9c3
Add support for checking callable/closure param types
...
Fixes #580
2018-04-08 12:03:35 -04:00
Matthew Brown
3f4083eac8
Remove blank line
2018-04-08 10:26:04 -04:00
Matthew Brown
797cab22f8
Fix support for Closure(int):int annotation
2018-04-08 10:02:41 -04:00
Matthew Brown
3fe9a0606e
Fix #654 - warn about MixedArgument when inferredType property does not exist
...
And handle str_replace more leniently when args unknown
2018-04-07 15:16:46 -04:00
Matthew Brown
0f0f405b9f
Allow mixed property assignment when the user wants it
...
Fixes #652
2018-04-07 12:13:30 -04:00
Matthew Brown
3771ea206c
Fix #648 - stop scanning when encountering a duplicate class
2018-04-07 11:38:41 -04:00
Matt Brown
60c6bb4021
Fix #650 - be more judicious about inserting mixed into places
2018-04-06 18:28:22 -04:00
Matt Brown
c932ed7764
Fix #651 - allow Psalm to understand assertions on properties of array objects
2018-04-06 16:23:10 -04:00
Matt Brown
6abbc23947
Catch type exception when fixing local type
2018-04-05 17:18:49 -04:00
Matt Brown
81f167df65
Remove bad semicolon
2018-04-05 14:40:41 -04:00
Matt Brown
e97750c761
Check for empty values properly
...
Ref #647
2018-04-05 14:28:33 -04:00
Matt Brown
6d572096d6
Prohibit bad characters from types
2018-04-05 14:11:57 -04:00
Matt Brown
4927dfd337
Fix issue with InvalidArrayOffset from falsable
2018-04-05 13:57:01 -04:00
Matt Brown
0b268eb602
Allow scalars to be empty
2018-04-05 12:11:58 -04:00
Matt Brown
24f307d568
Fix #645 - add isa- prefix for strings as well as class constants
2018-04-05 12:03:36 -04:00
Matthew Brown
78d5adb17d
Make key work with typed arrays
2018-04-05 00:21:14 -04:00
Matt Brown
1282f74931
Allow coercion from generic array to objectlike with possible keys
2018-04-04 18:01:53 -04:00
Matt Brown
4065fa894f
Add numeric to Psalm reserved types
2018-04-04 14:42:23 -04:00
Matt Brown
b4fba8f805
Allow capitalised reserved words
2018-04-04 12:39:05 -04:00
Matthew Brown
03b3a764e3
Fix #641 - allow is_a to operate on strings as well
2018-04-03 23:14:23 -04:00
Matthew Brown
4552e69ef2
Allow classes to be instantiated by their name only
...
Ref #641
2018-04-03 22:20:00 -04:00
Matt Brown
f679900028
Remove aggregate_* methods c/o @weirdan
2018-04-03 11:55:13 -04:00
Scott
35ca719c07
Fix callmap for ext/hash fucntions
...
Fixes #627 -- until PHP < 7.2 support can be dropped, we need to be able to resolve `resource` or `HashContext`.
2018-04-03 11:53:02 -04:00
Jon Ursenbach
f51a5f79ed
pow()
accepts int|float
, not just float
.
2018-04-03 11:52:38 -04:00
Matt Brown
fef56c7633
Fix #639 - add scalar to psalm-recognised types
2018-04-03 11:24:23 -04:00
Matthew Brown
1395299e28
Fix #637 - allow int|string array key types to be compared to mixed
2018-04-02 22:40:29 -04:00
Matthew Brown
4ff7db09f9
Fix var_export return type
...
Fixes #636
2018-04-02 22:19:58 -04:00
Matt Brown
734b6915db
Fix #635 - type combinations should copy over possibly undefined flag
2018-04-02 14:36:33 -04:00
Matthew Brown
faa2d6f2e1
Fix #634 - prevent prefixing objectlike keys with namespaces
2018-04-02 00:39:59 -04:00
Matthew Brown
ef37f0cfe8
Fix #626 - check __invoke methods
2018-03-31 18:57:13 -04:00
Matthew Brown
ca8f2626a2
Remove extraneous function reflection
2018-03-30 20:08:12 -04:00
Matthew Brown
75e59f29ea
Check as many autoloaded files as possible
...
and ignore reflected function docblocks - fixes #629
2018-03-30 20:03:56 -04:00
Matthew Brown
51055eb17e
Add self and static to reserved word list
2018-03-30 19:20:38 -04:00
Matthew Brown
6a6d6465f5
Fix #619 - don’t use capitalised letters to discriminate classes
2018-03-30 19:04:21 -04:00
Matthew Brown
c8c216edb2
Fix #610 - add slightly hacky check for multiple callmap options
2018-03-30 18:51:59 -04:00
Matthew Brown
2a544c3076
Fix #560 - ignore @param $var annotations
2018-03-30 17:46:12 -04:00
Matthew Brown
17b27b31e8
Fix erroneous input/output lines
2018-03-29 10:26:26 -04:00
Matthew Brown
7a0c7f4d1e
Improve handling of ||
...
Ref #630
2018-03-29 02:20:19 -04:00
Matt Brown
3213695c95
Fix off-by-one error
...
Fixes #625
2018-03-27 14:43:39 -04:00
Matt Brown
fd9e783a37
Emit InvalidDocblock for bad static keyword in @var
...
Ref #623
2018-03-27 11:34:48 -04:00
Matthew Brown
5783611366
mixify parse_url return type until I can get a handle on it
2018-03-27 08:24:48 -04:00
Matthew Brown
c0c5966b4c
Fix callable() parsing
2018-03-27 08:21:48 -04:00
Matthew Brown
504a057071
Trap return type parse issues in fixUpLocalType
2018-03-27 08:07:44 -04:00
Matthew Brown
843a8a4e40
Make CallMap have compatible signatures
2018-03-27 08:02:08 -04:00
Matthew Brown
3ef7073862
Add callmap updates from Phan
2018-03-27 01:05:37 -04:00
Matthew Brown
44cccb5b3d
Fix build
2018-03-27 01:05:11 -04:00
Matthew Brown
fb802540d6
Fix variadic format cc @TysonAndre and allow callable param types
...
Ref #580
2018-03-27 00:12:41 -04:00
Matthew Brown
7d7f5d00a1
Prevent duplicate properties
2018-03-26 23:37:35 -04:00
Matthew Brown
58115599a1
Add support for callable(...) syntax
...
Ref #580
2018-03-26 22:13:10 -04:00
Matthew Brown
871a91c850
Add debug-by-line option
2018-03-26 09:08:55 -04:00
Matthew Brown
cad60619c2
Fix callmap signatures from @weirdan
2018-03-25 08:54:05 -04:00
Tyson Andre
04d4c719f9
Sort the call map
...
Psalm's function signature map was based on an old ad hoc sorting order
(Possibly the unix sorting utility?)
Instead, sort by `strtolower(str_replace("'", "\x0", $functionKey))`
(To group classes together, and global functions together, and alternates together,
instead of mixing them)
`phan/phan/internal/internalsignatures.php sort` was used to perform this
sorting (It's hardcoded to expect src/Phan/Internal/FunctionSignatureMap.php, though)
Other changes:
- Add signature for `_()`, which is an alias of gettext()
https://secure.php.net/manual/en/function.gettext.php#refsect1-function.gettext-notes
- etsy/phan -> phan/phan
- Mention that __construct has type void, not the class name.
- nit: Change __halt_compiler to void.
2018-03-25 08:50:04 -04:00
Matthew Brown
74aa376ec7
Fix #617 - catch exception on bad square brackets
2018-03-24 21:02:44 -04:00
Matt Brown
f5ef864168
Improve checks to prevent breaking existing typehints when running psalter
2018-03-23 16:34:45 -04:00
Matt Brown
06e850867d
Allow combined keys to be possibly undefined
2018-03-23 13:14:00 -04:00
Matthew Brown
a4a618c9e5
Fix rules regarding always-defined object-like properties
2018-03-23 01:36:56 -04:00
Matthew Brown
7637eb5075
Allow possibly undefined object-like vars to not cause problems
2018-03-23 01:13:46 -04:00
Matthew Brown
a96ce89e9f
Allow arbitrary bracketing of types
2018-03-22 22:28:06 -04:00
Matthew Brown
c54850aa5b
Revert changes to Type.php
2018-03-22 21:52:36 -04:00
Matthew Brown
5ff6f27178
Fix #615 - numeric-string is always still a string
2018-03-22 21:48:26 -04:00
Matthew Brown
c8fe9e89f3
Fix parsing of array{a:int}[]
...
Fixes #614
2018-03-22 21:21:04 -04:00
François Kooman
b6499c33ed
fix ldap_bind parameters, allow null for bind_rdn and bind_password
2018-03-22 19:09:51 -04:00
Matt Brown
cc3aafe4c4
Improve intersection type parsing
2018-03-22 17:55:36 -04:00
Matthew Brown
ccbe9980f5
Fix issue with nested trait methods
2018-03-21 17:39:01 -04:00
Matthew Brown
49c4dd8a5d
Fix trait method aliasing
2018-03-21 16:55:31 -04:00
Matthew Brown
c2002d0250
Add intersection iteration test
2018-03-21 12:21:46 -04:00
Matthew Brown
1f57876e48
Allow extract array to be passed by ref
2018-03-21 11:14:05 -04:00
Matthew Brown
bc0c4322d5
Allow object-like with all optional vars to be compared to empty array
2018-03-21 10:46:21 -04:00
Matthew Brown
452fd2e7c9
Make UndefinedClass an explicit class-related issue
2018-03-21 10:17:57 -04:00
Matthew Brown
49820b06dd
Prevent variadic args disrupting required closure param count
2018-03-21 09:04:07 -04:00
Matthew Brown
9404de699d
Allow list vars to have array keys
2018-03-21 08:48:30 -04:00
Matthew Brown
be72423980
Check for magic __call when analysing callables
2018-03-21 00:13:57 -04:00
Matthew Brown
7a5d4b8516
Fix the right thing
2018-03-20 23:55:26 -04:00
Matthew Brown
75e76eb327
Perform more granular scan for PossiblyInvalidPropertyAssignmentValue
2018-03-20 23:44:26 -04:00
Matthew Brown
f47012823e
Fix incorrect issue type emitted for static properties
2018-03-20 23:19:26 -04:00
Matthew Brown
b634e1a1b7
Add more refined treatment of InvalidIterator
2018-03-20 22:59:22 -04:00
Matthew Brown
5384f193d1
Allow class and method issues to be suppressed by their identifiers
...
Ref #603
2018-03-20 22:36:03 -04:00
Matthew Brown
837f5d7096
Fix #594 - support intersection types (and catch errors)
2018-03-20 20:56:33 -04:00
Matthew Brown
3f90bceabf
Use objects for type parsing
2018-03-20 20:26:58 -04:00
Matt Brown
24490aac0e
Fix #609 - fix callable coercion in reconciliation step
2018-03-20 13:24:16 -04:00
Matthew Brown
d17058e7d5
Fix #608 - only check callable type if string/array is not also there
2018-03-20 08:58:05 -04:00
Matthew Brown
8dcb878af4
Fix #606 - fatal error when evaluating array_key_exists
2018-03-19 19:14:55 -04:00
Matthew Brown
8ce46aabd2
Allow intersection types in comments
2018-03-18 20:46:45 -04:00
Matthew Brown
8b102d891c
Allow intersection types in callable args
2018-03-18 20:29:41 -04:00
Matthew Brown
5068981902
Show info suppression instructions in output
2018-03-18 18:27:10 -04:00
Matthew Brown
303e3bbf0f
Fix #590 - add error count to stdout
2018-03-18 18:04:50 -04:00
Matthew Brown
cc9ffb36d9
Actually suppress child issues
2018-03-18 17:26:28 -04:00
Matthew Brown
0defe84e01
Allow use of $argv and $argc in function use statements
2018-03-18 17:11:14 -04:00
Matthew Brown
80cf80dbda
Reduce number of InvalidOperand issues further
2018-03-18 16:58:54 -04:00
Matthew Brown
e0bdfeb625
Fix erroneous message for invalid right operands
2018-03-18 16:46:26 -04:00
Matthew Brown
d7a585160f
Add more granular error messages for invalid operands
2018-03-18 16:39:34 -04:00
Matthew Brown
33be97b1f8
Check for to-string casts in strict operands mode
2018-03-18 14:42:23 -04:00
Matthew Brown
f5ee373244
Fix build
2018-03-18 14:23:11 -04:00
Matthew Brown
4b014eaee1
Fix #600 - don’t implicitly convert object name to string
2018-03-18 14:16:47 -04:00
Matthew Brown
6b793db5c6
Allow some intersection types
...
Fixes #600 Ref #594
2018-03-18 13:57:28 -04:00
Matthew Brown
025b7049fd
Allow $argv/$argc to be accessed from namespace
2018-03-18 10:38:08 -04:00
Matthew Brown
28522c4f94
Fix #588 - allow anonymous classes to call $this functions
2018-03-18 01:07:14 -04:00
Matthew Brown
5575ead4b2
Make get_called_class and get_class return class-string pseudotype
...
Fixes #584
2018-03-17 22:11:16 -04:00
Matthew Brown
2e0aded816
Fix issue with empty checks and array_key_exists for property keys
2018-03-17 19:28:01 -04:00
Matthew Brown
b0b3c9287e
Fix array_key_exists calls on possibly undefined objectlike
2018-03-17 19:03:46 -04:00
Matthew Brown
e61815bb72
Fix #458 - fully support optional array keys
2018-03-17 18:05:50 -04:00
Matthew Brown
4175d1a887
Add PossiblyUndefinedVariable warning when using possibly undefined array key
2018-03-17 17:35:36 -04:00
Matthew Brown
61af2a924c
Fix #575 - generated possibly-undefined keys when scanning objectlike return types
...
Ref #458
2018-03-17 16:53:11 -04:00
Matthew Brown
91955f67d0
Fix return
2018-03-17 15:28:41 -04:00
Matthew Brown
3578c49bf2
Add test for #587
2018-03-17 15:02:25 -04:00
Matthew Brown
a51e67018e
Fix #587 - check RHS of assignments for variadic receptors
2018-03-17 15:01:13 -04:00
Matthew Brown
95b5f205c4
Fix #587 - scan all functions for func_get_args
2018-03-17 09:22:28 -04:00
Matthew Brown
eb3750d8f3
Remove unnecessary @var annotations
2018-03-17 00:19:55 -04:00
Matthew Brown
10d18481a2
Add syntax support for optional array types
...
Ref #458
2018-03-16 23:37:10 -04:00
Matt Brown
f806e16c10
Fix #516 - never show issues when finding references
2018-03-16 11:15:07 -04:00
Matt Brown
d6e0708e88
Fix #577 - allow int in second param of strpos
2018-03-15 17:32:03 -04:00
Matt Brown
e5e0c56abc
Don’t remove clauses on mixed, just substitute for wedges
2018-03-15 16:40:22 -04:00
Matt Brown
651b375c62
Fix #579 - improve checks for meta-type negation
2018-03-15 14:25:04 -04:00
Matt Brown
a253463ba8
Use strings for numeric string key offsets
2018-03-15 10:16:11 -04:00
Matthew Brown
d0fc48cfaf
Remove unnecessary whitespace
2018-03-15 00:37:08 -04:00
Matt Brown
822d0a116e
Reflect all numeric types passed to abs
...
Fixes #576
2018-03-14 18:05:36 -04:00
Matt Brown
92ada48433
Allow the iterable pseudo-type to be treated as array|Traversable
...
Fixes #574
2018-03-14 17:50:55 -04:00
Matt Brown
d9ab5e62d6
Prevent unnecessary warnings when checking trait-required methods
2018-03-14 10:51:13 -04:00
Matt Brown
0bd229a86f
Add better checks for trait-related fatal errors
2018-03-13 18:12:05 -04:00
Bruce Weirdan
1dfd103aa2
ReflectionExtension type refinements
...
Added more detailed return types for ReflectionExtension methods, fixed
`isPersistent` method name
2018-03-13 13:53:40 -04:00
Matt Brown
0637e02a6d
Fix build bug
2018-03-13 13:50:53 -04:00
Matt Brown
52b6a5cbde
Fix #571 - fix buggy handling of packed vars
2018-03-13 13:50:41 -04:00
Matt Brown
ef35cfc6fe
Fix #566 - check for abstract methods inheriting from non-abstract ones
2018-03-13 12:52:00 -04:00
Matthew Brown
5cd8b3cccd
Don’t ignore @function calls
...
Fixes #570
2018-03-12 23:48:10 -04:00
Matthew Brown
3059a54768
Fix #569 - fix trait method mapping bug
2018-03-12 23:37:21 -04:00
Matthew Brown
73fadab0b5
Make Phar more robust to object namespace changes
2018-03-12 00:01:52 -04:00
Bruce Weirdan
a1f481d8a2
commented out code cleanup
2018-03-08 19:14:06 -05:00
Bruce Weirdan
12488ea8ed
dropped commented out code, added file_exists() checks for stubs
2018-03-08 19:14:06 -05:00
Bruce Weirdan
32884774e4
build psalm.phar using humbug/box
2018-03-08 19:14:06 -05:00
Matt Brown
b54fb06552
Handle variable paths in a less naive fashion
...
Fixes #564
2018-03-08 15:57:46 -05:00
Matt Brown
19ee843d6c
Emit InvalidOperand if both sides are not numeric
2018-03-08 14:30:40 -05:00
Matt Brown
56bdb924f5
Fix #563 - improve error message and ignore falsable issues for strtotime
2018-03-08 14:04:00 -05:00
Matt Brown
4873228e52
Fix #561 - add all the do-defined vars before checking loop
2018-03-08 11:17:27 -05:00
Matthew Brown
67312be2a9
Fix #562 - allow if/else blocks to initialise vars
2018-03-08 09:30:31 -05:00
Matt Brown
cd521e7ba5
Also flesh out object like array types
2018-03-07 13:54:46 -05:00
Matt Brown
79c373c121
Add more LessSpecificReturnTypeTests
2018-03-07 13:11:36 -05:00
Matt Brown
692edd44c9
Use properly namespaced generic object
2018-03-07 12:00:33 -05:00
Matt Brown
e5ccdc7fa0
Make sure php string from TClassString is accurate
2018-03-07 11:35:48 -05:00
Matt Brown
4bf652863b
Also check for non-false returns on LessSpecificReturnType
2018-03-07 11:16:56 -05:00
Matt Brown
d185253396
Don’t throw exception if classloader hasn’t been set
2018-03-06 17:30:54 -05:00
Matt Brown
4248cacbaf
Flesh out template type before replacing
2018-03-06 14:23:41 -05:00
Matt Brown
6d767de043
Ignore nullable class strings where appropriate
2018-03-06 14:11:32 -05:00
Matt Brown
fac5554e13
Fix errors around static class constants in template vars
2018-03-06 13:59:59 -05:00
Matt Brown
b664c85642
Add new issue conditional on config flag
2018-03-06 12:19:50 -05:00
Matt Brown
357ad1aa82
Add config flags to allow stricter class invocation checks
2018-03-06 11:20:59 -05:00
Matthew Brown
4074b3fff0
Fix ctype_xdigit
2018-03-05 23:20:55 -05:00
Matthew Brown
123f70fc52
All the ctype functions con take a string or an int
2018-03-05 23:19:12 -05:00
Matt Brown
57bbdc8034
Replace classlike name with more accurate context self
2018-03-05 18:05:12 -05:00
Matt Brown
7c5986de01
Add return type checks for missing classes
2018-03-05 17:46:13 -05:00
Matt Brown
aff689deea
Add support for __CLASS__ in template types
2018-03-05 17:36:08 -05:00
Matt Brown
57c2adb923
Fix #558 - add extra tests around functionality
2018-03-05 17:10:52 -05:00
Matt Brown
850998ed1a
Add class-string type for enforcing use of ::class constants
2018-03-05 16:06:06 -05:00
Matt Brown
d8825701f5
Fix #556 - closure params with defaults can still accept extra
2018-03-05 10:29:19 -05:00
Matthew Brown
a0be2e390a
Fix case of mapping function before analysis
2018-03-05 09:05:38 -05:00
Matthew Brown
67cad2063d
Fix #555 - fix function name mapping class
2018-03-05 09:01:24 -05:00
Matthew Brown
806b032b13
Downgrade UndefinedMethod to PossiblyUndefinedMethod issue when one type has __call defined
2018-03-04 13:23:40 -05:00
Matthew Brown
5f03d08cb2
Remove unused variable
2018-03-04 12:54:00 -05:00
Matthew Brown
a0ce8791d3
Detect fatal issues where property access is overridden
...
Fixes #547
2018-03-04 12:24:50 -05:00
Matthew Brown
9d48585b0e
Fix #552 - fix path that stubs are loaded from
2018-03-03 19:05:15 -05:00
Matthew Brown
3b48f43fdc
Throw exception if function doesn’t exist
2018-03-03 16:52:48 -05:00
Matthew Brown
ecef628e21
Prevent iterating over undefined class
2018-03-03 16:52:04 -05:00
Matthew Brown
6458aa2e91
Remove unused methods
2018-03-03 15:29:13 -05:00
Matthew Brown
b90a58533b
Fix tests and return types
2018-03-03 15:25:35 -05:00