Matt Brown
b2b2572e4d
Fix #478 - allow is_a checks with string arg
2018-01-30 16:45:29 -05:00
Matthew Brown
6c38b2fdfe
Fix #348 - don’t warn about a little contravariance
2018-01-29 22:29:49 -05:00
Matt Brown
c7b2ae4e0e
Fix do while nullability issue
2018-01-29 17:18:03 -05:00
Matt Brown
5200a25efa
Fix #477 - make sure that isset applies to property object
2018-01-29 15:47:25 -05:00
Matt Brown
8ad863614c
Don’t add unnecessary space between paras
2018-01-29 13:42:04 -05:00
Matt Brown
4099bf24ce
Make sure new $class args are always evaluated
2018-01-29 12:22:50 -05:00
Matt Brown
66c8637b5b
Fix unused code checks for possibly undefined vars
2018-01-29 12:13:44 -05:00
Matthew Brown
6bfb27165d
Check property defaults again
2018-01-28 21:43:26 -05:00
Matthew Brown
3482ee3b39
Split UntypedParam into MissingParamType and MissingClosureParamType
2018-01-28 20:03:47 -05:00
Matthew Brown
1c34dbe289
Fix erroneous treatment of finally blocks after return in try
...
Fixes #473
2018-01-28 19:02:31 -05:00
Matthew Brown
b68611c156
Fix #474 - change text colour of info text
2018-01-28 18:44:58 -05:00
Matthew Brown
e0fa3adb6f
Split up CallChecker to speed up Psalm
2018-01-28 18:29:38 -05:00
Matthew Brown
ed5245bc47
Go easy on unknown invocations
2018-01-28 18:13:38 -05:00
Matthew Brown
44b8b22995
Improve checks for unused variables and params
2018-01-28 17:28:34 -05:00
Matthew Brown
4a672fade8
Add a couple of optimisations suggested by Scrutinizer
2018-01-28 17:26:09 -05:00
Matthew Brown
8b740110f4
Remove more ? from docblocks
2018-01-28 17:07:09 -05:00
Matthew Brown
7ce053bd8a
Make docblocks sligtly more phpdoc-compatible
2018-01-28 16:52:57 -05:00
Matthew Brown
eb2870562b
Remove last two that Psalm found
2018-01-28 16:06:42 -05:00
Matthew Brown
8799b856cb
Add a couple more unused code locations
2018-01-28 13:50:41 -05:00
Matthew Brown
0cf8bb435f
Remove more unused code found by Psalm
2018-01-28 13:46:18 -05:00
Matthew Brown
8fd0b120df
Fix test config loading
2018-01-28 12:46:58 -05:00
Matthew Brown
dd32452d90
Remove more dead code found by Psalm
2018-01-28 12:43:19 -05:00
Matthew Brown
59cdc5494f
Remove unused list vars
2018-01-28 12:29:14 -05:00
Matthew Brown
f628187de9
Remove dead code found by improved Psalm checks
2018-01-28 12:01:51 -05:00
Matt Brown
2d8468cb49
Allow interface to extend travserable and pass iterable test
2018-01-26 14:08:45 -05:00
Matt Brown
576f835858
Exit early if key does not exist
2018-01-26 13:56:53 -05:00
Matt Brown
a2d11cce51
Fix static/self return type handling
2018-01-26 13:51:00 -05:00
Matt Brown
b333e90fee
Fix casing of duplicate interface method check
2018-01-26 12:00:02 -05:00
Matt Brown
1320b6dd54
Fix #472 - inherit interface method docblocks if defined just once
2018-01-26 11:50:29 -05:00
Matt Brown
5e0a8c4339
Inherit correct self return type
2018-01-26 10:59:30 -05:00
Matt Brown
62401f15fd
Prevent finding unused classes and methods when multithreaded
2018-01-25 15:40:01 -05:00
Matt Brown
75fd14c492
Fix long line
2018-01-25 14:19:22 -05:00
Matt Brown
450618cc35
Treat do expression as statements plus loop
2018-01-25 13:46:17 -05:00
Matt Brown
1a2d13ae32
Ignore falsable issues from core functions
2018-01-25 13:07:36 -05:00
Matt Brown
d67f1e3c28
Fix #252 - allow custom vendor directory
2018-01-25 11:32:54 -05:00
Matt Brown
cf7c5c2a0d
Fix #470 - follow vendor directory symlinks
2018-01-25 11:07:16 -05:00
Matt Brown
127c743906
Fix #471 - assign static class const to mixed
2018-01-25 10:47:15 -05:00
Matthew Brown
ea28ee709d
Improve unused variable detection slightly
2018-01-25 01:04:26 -05:00
Matt Brown
543872f186
Allow @psalm-ignore-falsable-return annotation
...
Downgrades issues around use of current(), reset(), end() etc.
2018-01-24 18:52:58 -05:00
Matt Brown
f46cf729bb
Allow null checks against preg_replace and related
2018-01-24 17:07:03 -05:00
Matt Brown
b0f3992f36
Remove stopOnFirstError config option, because it hasn’t worked for a while
...
Fixes #248
2018-01-24 16:22:54 -05:00
Matt Brown
93ac3eaadb
Fix #213 by evaluating switch statements better
2018-01-24 16:15:53 -05:00
Matt Brown
24cbe6a52a
Fix #466 - initialize variable
2018-01-24 13:52:34 -05:00
Matt Brown
e905fc2660
Prevent offset if key doesn’t exist
2018-01-24 13:50:33 -05:00
Matt Brown
f0ee7203ec
Copy over infinite loop protection
2018-01-24 13:38:53 -05:00
Matt Brown
445b128a50
Fix recursion in static calls too
2018-01-24 13:26:24 -05:00
Matt Brown
72a4f148ff
Prevent infinite loops when analysing private functions that call each other
2018-01-24 13:11:23 -05:00
Matt Brown
0018dee5e3
Fix single file checks
2018-01-24 12:00:10 -05:00
Matthew Brown
78e34c0548
Ignore nonexistent static class constants
2018-01-24 00:17:20 -05:00
Matthew Brown
b06cfd025a
Allow continue inside case statement as alias for break
...
Fixes #464
2018-01-24 00:01:08 -05:00
Matt Brown
dea5d92e9b
Add support for static::class
2018-01-23 15:46:14 -05:00
Matt Brown
c0fda0ef1e
Allow instanceof static checks
2018-01-23 14:46:46 -05:00
Matt Brown
31e57dbdfa
Add generic support for current on array
2018-01-23 14:20:37 -05:00
Matt Brown
abf561bb7d
Improve Psalter return type additions
2018-01-23 12:03:18 -05:00
Matthew Brown
507007a2bf
Add DeprecatedInterface and emit DeprecatedClass in more places
...
Fixes #463
2018-01-23 09:09:43 -05:00
Matthew Brown
fdadcd3a70
Fix implemented interface checks for self/static
2018-01-23 01:32:16 -05:00
Matt Brown
e249c27308
Don’t update return types to null
2018-01-22 18:00:19 -05:00
Matt Brown
e58e824af3
Make sure replacements only happen when called for
2018-01-22 13:54:32 -05:00
Matthew Brown
bfb31bb669
Lowercase folder name
2018-01-22 02:08:06 -05:00
Matthew Brown
2994d1e339
Add tests for reference checks
2018-01-21 23:42:57 -05:00
Matthew Brown
e8487e86f0
Make sure else/elseif roots are at the if declaration
2018-01-21 22:05:57 -05:00
Matthew Brown
0fcba8547c
Make the ordering for file manipulations strict as possible
2018-01-21 22:01:02 -05:00
Matthew Brown
dea1d58b2a
Fix #461 - allow multiple replacements at the same location
2018-01-21 21:24:22 -05:00
Matthew Brown
68b00ea49a
Add automatic fix for PossiblyUndefinedVariable
2018-01-21 16:24:20 -05:00
Matthew Brown
bc9761f6c9
Create Codebase out from ProjectChecker
2018-01-21 13:45:33 -05:00
Matthew Brown
e05a7c00cc
Break FileScanner out from FileChecker
2018-01-21 12:44:46 -05:00
Matthew Brown
f4a9306eee
Add descriptive comments about storage performance
2018-01-21 10:53:17 -05:00
Matthew Brown
9b6b03ff9f
Create Config before ProjectChecker, and remove test-specific code from FileChecker
2018-01-21 10:22:04 -05:00
Matthew Brown
67ef894ecc
Add extra trait test
2018-01-21 00:32:45 -05:00
Matthew Brown
92e43b8fa0
Add a few optimisations
2018-01-20 21:22:33 -05:00
Matthew Brown
799aef628e
Fix type assignment checks
2018-01-20 11:48:16 -05:00
Matthew Brown
5200ffa214
Do not crash on intersection type method lookup
2018-01-20 01:04:15 -05:00
Matt Brown
9f2a0847a4
Fix #453 - catch bad objectlike type when analysing docblock
2018-01-19 16:06:30 -05:00
Matt Brown
6ce4aa19e4
Fix formatting in examples
2018-01-18 17:41:14 -05:00
Matt Brown
4b4e09277c
Fix #450 - add checks for duplicate array keys
...
And fix the embarassing errors in tests
2018-01-18 17:16:50 -05:00
Tyson Andre
77b41f4e9f
Bring phpdoc @param
up to date
2018-01-18 16:07:48 -05:00
Scott
0d4bf94017
Return an empty string on magic __toString method
...
We can't throw exceptions here, due to engine constraints.
2018-01-17 18:33:02 -05:00
Scott
2bab66855b
Specify delimiter in preg_quote
...
```
PHP Warning: preg_match(): Unknown modifier 't' in /home/scott/project-redacted/vendor/vimeo/psalm/src/Psalm/Checker/Statements/Block/IfChecker.php on line 166
```
2018-01-17 18:15:13 -05:00
Matt Brown
a253ca68bc
Allow array_filter to inspect closure bodies
2018-01-17 16:07:46 -05:00
Matt Brown
2212d7c032
Reinstate $this type after parent call
...
Fixes #444
2018-01-17 11:00:58 -05:00
Matthew Brown
2b122cb80e
Fix compact call back
2018-01-15 21:01:29 -05:00
Matthew Brown
1d16f1e352
Update the callmap from Phan
2018-01-15 20:21:08 -05:00
Matthew Brown
14e7b75dbb
Fix bad formatting for ibase_query
2018-01-15 15:27:46 -05:00
Matthew Brown
26945acce6
Move ClassLikeChecker::analyze into ClassChecker and InterfaceChecker
2018-01-14 13:08:24 -05:00
Matthew Brown
bd6e4a09bd
Refactor to break up too-large-files
2018-01-14 12:09:40 -05:00
Matthew Brown
e402ae978a
Fix Array_ items nullability
2018-01-13 18:33:32 -05:00
Matthew Brown
2a38bec5bc
Fix style
2018-01-13 02:08:53 -05:00
Matthew Brown
f3bfb089ad
Don’t investigate property mutations if they’re not visible
2018-01-13 01:52:46 -05:00
Matthew Brown
95553ffc0e
Fix by ref method location
2018-01-13 01:25:13 -05:00
Matthew Brown
5b45909d6f
Use better method for determining by-reference status of functions
2018-01-13 01:15:00 -05:00
Matthew Brown
6e6c20b968
Remove unused property
2018-01-13 00:45:28 -05:00
Matthew Brown
d61829adde
Allow the use of property docblocks without all docblocks
2018-01-13 00:32:20 -05:00
Matthew Brown
5d9ebd06d6
Don’t check classes after extension_loaded call
2018-01-12 23:47:36 -05:00
Matthew Brown
db7b80d391
Fix ArrayIterator::setOffset param type
2018-01-12 23:46:11 -05:00
Matthew Brown
573260b16d
Don’t warn about null array access if we’re ignoring null issues
2018-01-12 18:04:11 -05:00
Matt Brown
21eafd8bfc
Fix #352 with a mixed copout if the use is passed by reference
2018-01-12 12:33:26 -05:00
Matthew Brown
7fa541e39b
Allow reference-returning functions to be passed as arguments of byref functions
2018-01-11 23:18:13 -05:00
Matt Brown
4ea1eb3e2c
Fix #436 - get the right location for stubbed functions before analysing their calls
2018-01-11 17:39:12 -05:00
Matt Brown
2120d258a4
Fix formatting of return type adder
2018-01-11 15:50:58 -05:00
Matthew Brown
49981f63c6
Be less alarmist info issues, colour-wise
2018-01-10 23:29:46 -05:00
Matthew Brown
fb9f20f4b8
Find unused properties with dead code checks
...
Fixes #424
2018-01-10 23:29:18 -05:00
Matt Brown
d93906243d
Fix incorrect missing return type
2018-01-10 13:04:37 -05:00
Matt Brown
72848477c2
Add all Possibly* issues to more lenient config
...
And add granularity to InvalidPropertyAssignment* issues
2018-01-10 10:56:43 -05:00
Matthew Brown
75daea5f04
Fix #382 - improve reserved word checks
2018-01-10 00:07:47 -05:00
Matthew Brown
6b68da0e4d
Always check typehints for bad classes
2018-01-09 22:46:55 -05:00
Matthew Brown
89af8f2c2c
Fix #434 - preserve formatting when replacing docblocks
2018-01-09 22:33:36 -05:00
Matt Brown
27e47365e3
Fix #422 - be better about checking isset call variables
2018-01-09 19:33:39 -05:00
Matt Brown
9d63faf544
Fix SplFixedArray::toArray return type
2018-01-09 17:14:13 -05:00
Matt Brown
3b5ddb8dc2
Reduce use of __toString and remove profiling
2018-01-09 15:44:31 -05:00
Matt Brown
edde8930af
Speed up Psalm by caching result of Union::getId
2018-01-09 15:05:48 -05:00
Matt Brown
1a048040bf
Move IssueBuffer finish logic into the command line
2018-01-09 11:49:10 -05:00
Matt Brown
916ae930e2
Use properly-cased version of class name
2018-01-09 10:49:29 -05:00
Matthew Brown
3f3c1380ee
Fix erroneous error about no parent when analysing trait call
2018-01-09 09:22:23 -05:00
Matthew Brown
c6ee617cd0
Prevent generic objects from appearing in typehints
2018-01-09 00:35:26 -05:00
Matthew Brown
de269f969b
Void return types shouldn’t magically become null ones
2018-01-09 00:29:43 -05:00
Matthew Brown
f44ed22063
Fix null return
2018-01-08 20:12:24 -05:00
Matt Brown
914a352146
Do not fail on a null type here
2018-01-08 18:41:50 -05:00
Matt Brown
27db90dd1e
Fix bad fix
2018-01-08 18:30:30 -05:00
Matt Brown
faee4f6a0d
Fix issue with return type of null
2018-01-08 18:28:55 -05:00
Matt Brown
b373d6093a
Be more lenient with nullable docblock types, allow no return statements
2018-01-08 17:17:49 -05:00
Matt Brown
65bd144cec
Remove typehint
2018-01-08 11:05:29 -05:00
Matt Brown
be779382d1
Fix #428 - remove from_docblock on reconciled types
2018-01-08 10:32:58 -05:00
Matthew Brown
c28b804633
Fix potential filtering of non-zero keys
2018-01-08 01:38:25 -05:00
Matthew Brown
8ababf1537
Allow assertions on mixed vars
2018-01-08 00:14:02 -05:00
Matthew Brown
8e4f8fabe3
Fix getenv calls
...
Fixes #386
2018-01-08 00:09:22 -05:00
Matthew Brown
bb41b92789
Filter forumulae to remove assertions on unknowable things
2018-01-07 23:59:25 -05:00
Harrison Heck
78346b3400
Fix method call missing object.
2018-01-07 23:49:26 -05:00
Matthew Brown
66fa081488
Fix issue with nullable types going into docblock
2018-01-07 18:06:31 -05:00
Matthew Brown
fe96868e27
Add documentation
2018-01-07 17:25:23 -05:00
Matthew Brown
e8ad6a477e
Fix missing docblocks
2018-01-07 17:25:23 -05:00
Matthew Brown
693c7a81fa
Improve tracking of docblock types
2018-01-07 17:25:23 -05:00
Matthew Brown
39685e1be6
Collapse Issue inheritance and rename new issues
2018-01-07 17:25:23 -05:00
Matthew Brown
5d259dbd1e
Fix single line detection bug (found by Psalm!)
2018-01-07 17:25:23 -05:00
Matthew Brown
aa3f60bad1
Fix style issues
2018-01-07 17:25:23 -05:00
Matthew Brown
77b6b397fc
Handle comments in area where return type should be
2018-01-07 17:25:23 -05:00
Matthew Brown
29b09f9633
Continue after param replacement
2018-01-07 17:25:23 -05:00
Matthew Brown
d096d812cb
Fix local namespacing of root-level classes
2018-01-07 17:25:23 -05:00
Matthew Brown
dc053e699b
Fix resolution of same-namespaced classes
2018-01-07 17:25:23 -05:00
Matthew Brown
05d2c3dcb8
Fix differ to only use available commands
2018-01-07 17:25:23 -05:00
Matthew Brown
456a2ebaaa
Add --dry-run option
2018-01-07 17:25:23 -05:00
Matthew Brown
0e67aae21b
Allow updating of params
2018-01-07 17:25:23 -05:00
Matthew Brown
5bae869dc6
Break file manipulation out into Psalter
2018-01-07 17:25:23 -05:00
Matt Brown
796a3c5066
Fix style issues
2018-01-07 17:25:23 -05:00
Matt Brown
928b01a7c7
Find and fix code issues where functionality is available
2018-01-07 17:25:23 -05:00
Matt Brown
53d8c7ba52
Fix issue ideas
2018-01-07 17:25:23 -05:00
Matthew Brown
93fcaf38ef
Fix type regex to allow for spaces after nullable
2018-01-06 22:11:33 -05:00
Matt Brown
a76fde5b98
Break out mismatching param/return type issues from InvalidDocblock
2018-01-05 12:11:12 -05:00
Matt Brown
45eaea1ed9
Flesh out callmap type
2018-01-05 11:50:27 -05:00
Matthew Brown
2ebf6a0ef5
Allow non-lethal method signature mismatches to be suppressed
2018-01-05 01:04:07 -05:00
Matthew Brown
40587292a5
Don’t warn about wider child param types
2018-01-05 00:55:48 -05:00
Matthew Brown
3de584cbc1
Add more specific argument for ReflectionObject
2018-01-05 00:54:48 -05:00
Matthew Brown
51edeead84
Fix invalid Reflection methods
2018-01-05 00:26:51 -05:00
Matthew Brown
6f5a214365
Allow param redefinition, but complain if it differs to parent class
2018-01-05 00:19:35 -05:00
Matthew Brown
c9173c7da3
Add more specific issues for falsable/nullable invalid return types
2018-01-04 21:36:16 -05:00
Matthew Brown
6cff92d813
Don’t worry about invalid closure docblocks
2018-01-04 20:35:43 -05:00
Matthew Brown
a8ac9d4fdc
Flesh out return types before comparing
2018-01-04 20:13:09 -05:00
Matthew Brown
eefa4f925f
Improve Reflection class method return types
2018-01-04 20:13:09 -05:00
Matthew Brown
5995de0c9f
Fix possible nullref
2018-01-04 19:31:12 -05:00
Matthew Brown
6e7bab58c4
Be better about inherited core method arg types
2018-01-04 18:58:03 -05:00
Matthew Brown
db7abc2b90
Add more debug output when using reflection/composer classmap
2018-01-04 14:13:54 -05:00
Matthew Brown
12aef22f05
Fix issue where byref differences would not be highlighted
2018-01-04 14:01:17 -05:00
Stéphane Bour
9b2cfdc669
fix: add preserve_keys on array_reverse function
2018-01-03 21:57:11 -05:00
Matt Brown
24c69a9a7c
Allow all DateTime/DateTimeImmutable methods to return static
2018-01-03 10:53:45 -05:00
Matt Brown
ff5b2ce799
DateTimeImmutable::add/sub return static
...
Fixes #419
2018-01-03 10:35:22 -05:00
Matthew Brown
8a8253ac4c
Fix indentation
2018-01-02 21:23:48 -05:00
Matt Brown
13931766ce
Add PHP 7.2-compatibility for Psalm development
2018-01-02 19:55:07 -05:00
Matt Brown
e6aae2f2e2
Fix issue assigning string-typed properties without a string cast
2018-01-02 18:01:59 -05:00
Matt Brown
310f91ea81
Warn when methods with typehints don’t return for all codepaths
2018-01-02 16:57:40 -05:00
Matt Brown
fdff250c4a
Preserve keys when merging arrays
2018-01-02 12:59:22 -05:00
Matthew Brown
8da23605bb
Add unqualifier plugin test to remove unnecessary namepaces
2018-01-02 09:46:50 -05:00
Matthew Brown
cc81d78dfd
Add code replacement api to allow Psalm to update arbitrary parts of the codebase
...
Fixes #264
2018-01-02 09:46:50 -05:00
Matthew Brown
72b127e061
Allow plugins to be run via the command line
2018-01-02 09:46:50 -05:00
Matthew Brown
81cfe09fae
Improve reporting of classlike locations in docblocks
2018-01-01 20:04:03 -05:00
Matthew Brown
a1247aeb60
Remove unused var
2018-01-01 12:13:32 -05:00
Matthew Brown
7418d6685f
Add PossibyInvalidFunctionCall, emitted when function call may not be valid
2018-01-01 12:00:02 -05:00
Matthew Brown
5afe3b10fa
Scan compoer autoload files before any sweep of code
2018-01-01 11:47:03 -05:00
Matthew Brown
1608463b09
Strip leading slashes from generic object classes on creation
2017-12-31 21:17:39 -05:00
Matthew Brown
290cf396d4
Remove unnecessary suppression
2017-12-31 13:12:19 -05:00
Matthew Brown
921d0ad75c
Look for dead code in every Psalm build ( #417 )
2017-12-30 09:51:01 -05:00
Matthew Brown
2d24f9e99d
Don’t complain about unused variables when they’re passed by reference
2017-12-30 09:30:02 -05:00
Matthew Brown
752e99ad2e
Reduce PossiblyUnusedParam false positives
2017-12-30 08:47:00 -05:00
Matthew Brown
c0e923acb9
Update get_defined_functions to more recent signature
2017-12-29 22:57:02 -05:00
Matthew Brown
f81642c1eb
Fix location of function param vars
2017-12-29 21:28:21 -05:00
Matthew Brown
37a3c0a81e
Avoid checking classes named Null, because PHP will complain
...
Ref #415
2017-12-29 19:45:32 -05:00
Matthew Brown
086b314df8
Cut down on interface PossiblyUnusedMethod reports
2017-12-29 19:38:01 -05:00
Matthew Brown
875bb8c072
Improve dead code detection, reducing false positives for params
2017-12-29 17:27:16 -05:00
Matthew Brown
8efc939a5f
Move Psalm execution code into PHP file that Psalm can analyse
2017-12-29 17:02:56 -05:00
Matthew Brown
0b58ee425d
Fix trait method evaluation order
2017-12-29 11:26:28 -05:00
Matthew Brown
c38cf9b672
Migrate type reconciliation code to its own class
2017-12-29 10:55:53 -05:00
Tim van Dijen
4d0e775346
openssl_encrypt and _decrypt can return false ( #414 )
2017-12-29 04:26:53 +01:00
Matthew Brown
81efe28f79
Fix #403 by complaining about return values in void functions
2017-12-28 21:49:03 +01:00
Matthew Brown
b96ab18d4b
Improve throw issue message
2017-12-28 21:35:25 +01:00
Matthew Brown
b8c349166e
Add InvalidCatch and InvalidThrow to prevent erroneous exceptions
...
Fix #411 and fix #412
2017-12-28 20:40:28 +01:00
Matthew Brown
dd0f046aee
Fix #410 - make sure anything inside a catch statement is treated as Throwable ( #413 )
2017-12-28 01:49:36 +01:00
Matthew Brown
becce4ae36
Use composer classmap where available to remove need for reflection of vendor classes
2017-12-28 00:56:10 +01:00
Matthew Brown
57592aca41
Fix #409 - PropertyNotSetInConstructor can be suppressed at the property level
2017-12-27 12:27:59 +01:00
Matthew Brown
e2e1094ec6
Fix #407 - improve treatment of array_merge unpacked args
2017-12-23 02:09:58 +01:00
Matthew Brown
ec92b40ed3
If class checking fails for storage reasons, don’t quit analysis
2017-12-23 01:26:08 +01:00
Matthew Brown
58c7aa74b4
Prevent recursion when analysing constructor property assignments
2017-12-23 01:01:59 +01:00
Matthew Brown
2f5b05887b
Promote CircularReference from exception to issue
2017-12-22 18:56:59 +01:00
Matthew Brown
c5ea5178e1
Remove unnecessary issue type
2017-12-22 16:09:56 +01:00
Matthew Brown
84260c5edc
Prohibit array pass by ref
2017-12-22 15:21:23 +01:00
Matthew Brown
714d0678b1
Fix file analysis after realpath fix
2017-12-19 13:08:47 -05:00
Matthew Brown
68a4f30e96
Fix realpath return type
...
Fixes #405
2017-12-19 12:55:43 -05:00
Matthew Brown
abc9c051a9
Improve analysis of constant arrays
2017-12-19 09:48:01 -05:00
Matthew Brown
035f528581
Make sure that combining false with false simplifies to false
2017-12-19 00:06:05 -05:00
Matthew Brown
53d887d356
Make sure nested lists get some sort of assignments
2017-12-18 23:13:18 -05:00
Matthew Brown
45fc9fd5d9
Check LHS of property when RHS is variable
2017-12-18 22:35:03 -05:00
Matthew Brown
0e6006deda
Fix #328 and allow single-entry object-like shorthand
2017-12-18 22:07:52 -05:00
Matthew Brown
ab3b8a0cf2
Make array{a:string} a subtype of array<string, string>
...
cc @weirdan
2017-12-18 20:08:45 -05:00
Matthew Brown
17edb2bbe6
Add better understanding of arrays with keyed integer offsets ( #400 )
...
* Add tests for keyed integer assignemnt
* First pass to get keyed integer assignment working
* Fix array assignment to object-like with different key type
* Improve treatment of objectlikes for callable and iterable comparisons
* Fix array assignment to strings and addition
* Convert expression to CNF
* Do better at merging property types
* Fix array_rand key type
2017-12-18 18:47:17 -05:00
Matt Brown
72da8f655a
Don’t stop analysis after mixed method call
2017-12-18 11:05:53 -05:00
Matt Brown
597ed0ed12
Fix #401 - don’t panic when checking generator against other types
2017-12-18 10:58:46 -05:00
Matthew Brown
4b0cee6142
Only complain about redundant conditions if there’s one negated clause
2017-12-18 00:47:36 -05:00
Matthew Brown
4ff26cdd8f
Fix RedundantCondition complaint when examining CNF queries
2017-12-18 00:39:00 -05:00
Matthew Brown
2ec09b26d2
Clone all types on assignment
2017-12-17 23:22:26 -05:00
Matthew Brown
3b7c84f484
Detect instances where loop invariants are invalidated
...
Fixes #389
2017-12-17 10:58:03 -05:00
Matthew Brown
c1ce543e81
Make sure to clear previously inferred types when rechecking trait statements
...
Fixes #399
2017-12-17 01:06:12 -05:00
Matthew Brown
ad67256be0
Remove more methods never called
2017-12-16 10:59:04 -05:00
Matthew Brown
2011b8fb8f
Remove dead code
2017-12-16 10:51:04 -05:00
Matt Brown
8ca5fbefea
Invalidate clauses when assigning root vars
2017-12-15 17:34:21 -05:00
Matt Brown
3b4a7a97bc
Don’t treat callmap scalar types as any sort of filtering mechanism
...
Fixes #393 and fixes #394
2017-12-15 16:48:06 -05:00
Tyson Andre
d0fe5e3127
Don't convert standalone false/true to bool in combineTypes ( #396 )
...
Fixes #392
2017-12-15 16:36:42 -05:00
Tyson Andre
e2e86beee7
Fix a possibly undefined variable seen when issue is suppressed ( #391 )
2017-12-15 12:07:34 -05:00
Tyson Andre
136d48f77c
Support @property-read and @property-write as new tags. ( #317 )
...
In combination with `@psalm-seal-properties`, this can be used to
have in-depth checking of magic properties.
2017-12-14 14:22:27 -05:00
Matt Brown
52c414f1d2
Fix return {expr} checks for void functions
2017-12-14 12:50:02 -05:00
Matt Brown
d440e4bbb1
Keep going after seeing a type coercion
2017-12-14 11:33:18 -05:00
Matt Brown
b319f54ff6
Fix issue with equality of scalar types not from docblock
2017-12-14 11:23:20 -05:00
Matthew Brown
dc65c14bc4
Fix properties fetches with self
2017-12-13 22:29:38 -05:00
Matthew Brown
34c133d5d0
Add for post conditions to assignment map analysis
2017-12-13 22:04:37 -05:00
Matthew Brown
298ee214e9
Only allow variables greater than a number to be non-null
2017-12-13 20:48:01 -05:00
Matthew Brown
e63441af1e
Make sure $a > 0 removes null from $a
...
Fixes #186
2017-12-13 20:06:19 -05:00
Matthew Brown
e55fe2f158
Don’t complain about possibly undefined vars when calling unset
...
Fixes #139
2017-12-13 19:46:58 -05:00
Matt Brown
dd11a792fd
Add trailing commas
2017-12-13 15:57:10 -05:00
Matt Brown
4b8c242f5d
Create fake get_class/gettype statements where necessary
2017-12-13 15:56:05 -05:00
Matthew Brown
5f22203bd1
Fix #385 , fix return type of sodium function
2017-12-12 02:10:17 -05:00
Matt Brown
51a2f12bbf
Only update inner loop vars that have changed given preconditions
2017-12-11 12:03:50 -05:00
Matt Brown
301e393e37
Remove resource and callable from falsy checks
2017-12-11 11:32:14 -05:00
Matthew Brown
146cb12277
Refine function arguments if they match non-docblock equivalents
2017-12-10 21:14:30 -05:00
Matthew Brown
46feaaf1c6
Don’t run try/catch analysis twice
2017-12-10 20:21:21 -05:00
Matthew Brown
a2d5bc59ad
Get rid of undefined variable issues
2017-12-10 18:34:22 -05:00
Matthew Brown
db72ef29d8
Fix type reassignment in catches
2017-12-10 18:09:38 -05:00
Matthew Brown
f8207fe490
Improve handling of try/catch blocks, suppressing RedundantCondition where necessary
...
Fixes #355
2017-12-10 17:36:33 -05:00
Matthew Brown
a413e0496a
Fix #361 by terminating analysis if loop statements have issues
2017-12-10 16:22:45 -05:00
Matthew Brown
31ce716647
Widen empty array checks
2017-12-10 16:17:27 -05:00
Matthew Brown
c95af0bb57
Fix issue with assigning empty type
2017-12-10 14:56:51 -05:00
Matthew Brown
7fb1b476c7
Sort results from multi-threaded execution
2017-12-10 11:22:36 -05:00
Matthew Brown
a345ec49a1
Fix is_bool checks on true vars
2017-12-09 16:05:31 -05:00
Matthew Brown
42dcd136ca
Improve treatment of true and fix #369
2017-12-09 15:51:38 -05:00
Matthew Brown
13f290038a
Improve RedundantCondition checks and add true type
...
Fixes #383
2017-12-09 14:53:39 -05:00