1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-14 18:36:58 +01:00
Commit Graph

72 Commits

Author SHA1 Message Date
Bruce Weirdan
6294e06955
Improve constant array inference
This fixes int offset inference and adds handling for array unpacks in
constant arrays. Mostly it's copy/pasted from `ArrayAnalyzer` with
further adjustments.

Fixes vimeo/psalm#6263
Fixes vimeo/psalm#6289
2021-08-12 20:39:21 +03:00
orklah
f8644fb508 Improve resolution of __METHOD__ and __FUNCTION__ 2021-07-03 10:01:53 +02:00
Bruce Weirdan
5bfb841072
Prevent crashes when class constant references missing class (#5902)
Fixes vimeo/psalm#5861
2021-06-07 13:20:07 -04:00
orklah
0b96f40198
quote offset value (#5760) 2021-05-14 17:19:23 -04:00
Matthew Brown
78ed9404cb Fix #4107 - resolve reference to static in class constant 2021-05-13 12:49:33 -04:00
AndrolGenhald
9a03598a6d
Improve type resolution of class constants. (#5591)
Handle array plus operator (fixes #5588).
Handle array spread operator.
Improve string concatenation to resolve to literal instead of unknown string.

I feel like it should be possible to let ConstantTypeResolver take advantage of
the better type analysis in ArrayAnalyzer, ConcatAnalyzer, etc, but it would
require a restructuring that's beyond me for the time being.
2021-04-07 21:56:35 -04:00
AndrolGenhald
d4590711d6
Fix object-like array keys when combining string and automatic keys (fixes #5427). (#5428)
* Fix object-like array keys (fixes #5427).

* Fix incorrect return types for tests.

* Fix false positive list with literal int key.
2021-03-19 21:44:44 -04:00
Matt Brown
b64eb6d716 Break out array_key_exists tests 2020-12-02 14:42:16 -05:00
Matt Brown
d47d817843 Fix #4479 - use correct keys in message 2020-11-05 10:13:08 -05:00
orklah
ead107fa9e
More return types (#4173)
* add native return types

* redundant phpdoc
2020-09-12 11:24:05 -04:00
Matthew Brown
422271b2cf Prevent variables named "haystack" from receiving literal strings
cc @staabm
2020-09-05 00:35:48 -04:00
Bruce Weirdan
6fb63903c1
Infer better types for magic constants used in const initializers (#3602)
Fixes vimeo/psalm#3464
2020-06-18 09:48:51 -04:00
Matthew Brown
ce445636e7 Fix #3535 - match template param class constants properly 2020-06-06 20:02:14 -04:00
El Azimov
bed5a74065
Add wildcard support for class constants in template. (#3489)
Co-authored-by: El Azimov <el.azimov@rocks>
2020-05-30 16:55:18 -04:00
Brown
235704ad49 Fix #3484 - use better method to determine constant existence in wildcard checks 2020-05-29 09:09:59 -04:00
Brown
9b413cfccc Improved understanding of array_key_exists
Fixes #3463
2020-05-27 09:03:36 -04:00
Brown
7af771a006 Fix #3132 - resolve array access in constant properly 2020-04-18 12:39:00 -04:00
Matthew Brown
7fdccc0439 Fix #3014 - change constant class access rules 2020-03-29 09:47:29 -04:00
Matthew Brown
c85fa9083d Fix #2915 - prevent "if (true)" and similar 2020-03-15 22:23:31 -04:00
Matthew Brown
17afeae851 Fix support for bitwise or in constant expressions 2020-03-09 00:54:26 -04:00
Brown
443558ca49 Fix #2844 - resolve constant offset references 2020-02-21 15:56:30 -05:00
Matthew Brown
cf977c3542 Don’t convert constant descriptions to lowercase 2020-02-17 18:19:33 -05:00
Matthew Brown
8dd49b1cbf Fix lowercase-string to constant string coercion 2020-02-17 17:58:36 -05:00
Brown
1c42875179 Support lowercase-string and warn about unnecessary calls to strtolower 2020-02-13 16:38:58 -05:00
Brown
41af71556d Fix #2785 - parse wildcards in variables better 2020-02-10 15:30:06 -05:00
Brown
dcc855de95 Fix #2739 - specify wildcards in constants 2020-02-07 10:54:57 -05:00
Brown
cecc5ed798 Move constant tests 2020-02-07 10:47:42 -05:00
Matthew Brown
8c89760ff3 Use more accurate type for large arraya
Fixes #2690
2020-01-25 10:38:23 -05:00
Brown
d434f7fb9d Add list identification for late-resolved constants
Fixes #2624
2020-01-15 11:54:01 -05:00
Brown
adc658901a Improve inference of constant() calls 2020-01-14 16:56:09 -05:00
Brown
1ccababcb7 Track list-ness of constant arrays
Fixes #2621
2020-01-14 12:13:41 -05:00
Brown
b3cf9d3958 Catch circular references in constants
Fixes #2453
2019-12-10 16:16:44 -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
0ac9108814 Fix #2139 - allow comprehension of constant ternaries 2019-09-17 11:29:41 -04:00
Matthew Brown
0b4981f01b Fix #1551 - do better at inferring class constant types 2019-09-14 14:26:31 -04:00
Matthew Brown
b6dc8f547e Fix #2031 - still get class const return type after defined check 2019-08-17 18:01:24 -04:00
Brown
538abbc54c Fix #2020 - allow static::CONST_NAME to have non-mixed type in final class 2019-08-15 10:41:30 -04:00
Matthew Brown
06e913e37b Fix #1791 - complain about missing class constants 2019-06-15 12:19:26 -04:00
Matthew Brown
c772914910 Add some formatting 2019-03-23 14:27:54 -04:00
Matthew Brown
fb9e9bea32 Fix const reference in current context 2019-03-03 16:43:24 -05:00
Bruce Weirdan
9bdc9f774f More provider typing 2019-03-02 08:43:19 -05:00
Brown
154e1fa38b Fix #1375 - improve treatment of dynamically-declared namespaces 2019-02-21 18:19:12 -05:00
bugreportuser
cd23a19931 Allow concat for define first arg 2019-02-20 10:55:36 -05:00
Matthew Brown
681391f970 Fix #1220 - improve constant resolution 2019-01-20 09:52:26 -05:00
Matthew Brown
0cca0d76cb Fix #813 - allow constant array to be refined with isset 2019-01-13 11:54:39 -05:00
Brown
9fdf29c468 Fix #1165 - default inherited unresolved constants to mixed 2019-01-02 13:46:46 -05:00
Matthew Brown
4688b25fd9 Move internal classes to own namespace 2018-11-12 11:20:59 -05:00
Matthew Brown
046025576e Fix issue merging class constants and inherited interface ones 2018-09-09 11:18:20 -04:00
Matthew Brown
36e2b1dd67 Fix #925 - set correct flag when coercing class-like string to specific 2018-08-20 22:25:10 -04:00
Matt Brown
0ef71a49cb Fix #882 - allow STDOUT and STDERR as constants 2018-07-10 17:40:34 -04:00