1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-12 01:09:38 +01:00
Commit Graph

75 Commits

Author SHA1 Message Date
orklah
dbf3512b70 introduce $definite_class flag and use it to avoid using final keyword for simple inference 2021-08-19 23:19:59 +02:00
orklah
1bf7447685 small refactor, add LiteralClassString, remove alter code blocks 2021-08-17 18:51:59 +02:00
orklah
9264ea5cbb Allow type inference on dynamic ClassConstFetch 2021-08-16 21:20:20 +02:00
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