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
dd0d97755c
Add test for missing closure return type
2018-01-07 17:25:23 -05:00
Matthew Brown
90b2933525
Add more tests just to be on the safe side
2018-01-07 17:25:23 -05:00
Matthew Brown
278a6953d5
Add test for single line comment
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
dc053e699b
Fix resolution of same-namespaced classes
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
928b01a7c7
Find and fix code issues where functionality is available
2018-01-07 17:25:23 -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
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
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
ff5b2ce799
DateTimeImmutable::add/sub return static
...
Fixes #419
2018-01-03 10:35:22 -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
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
81cfe09fae
Improve reporting of classlike locations in docblocks
2018-01-01 20:04:03 -05:00
Matthew Brown
290cf396d4
Remove unnecessary suppression
2017-12-31 13:12:19 -05:00
Matthew Brown
17d208bdd5
Increase test coverage
2017-12-30 10:54:01 -05:00
Matthew Brown
d964f96439
Add test that analyses a class with a mapped property
2017-12-30 10:42:06 -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
f81642c1eb
Fix location of function param vars
2017-12-29 21:28:21 -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
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
Matthew Brown
81efe28f79
Fix #403 by complaining about return values in void functions
2017-12-28 21:49:03 +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
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
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
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
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
d804a92a93
Add skipped test with non-CNF algebra
2017-12-18 00:06:23 -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
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
Mario Blazek
8590b2b9b4
Use namespaced TestCase from PHPUnit ( #395 )
2017-12-15 06:18:33 -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
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
4b8c242f5d
Create fake get_class/gettype statements where necessary
2017-12-13 15:56:05 -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
f8207fe490
Improve handling of try/catch blocks, suppressing RedundantCondition where necessary
...
Fixes #355
2017-12-10 17:36:33 -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
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
Matt Brown
eca7351472
Add return-level issues as well as function-level ones
...
Fixes #379
2017-12-07 15:50:25 -05:00
Matthew Brown
2a7b48ce5f
Add support for infinite loops
...
Fixes #381
2017-12-06 23:46:41 -05:00
Matt Brown
6c84fecce9
Always update the parent context from the loop context
...
Fixes #377
2017-12-06 19:20:24 -05:00
Matthew Brown
0eedad4f6a
Add UndefinedGlobalVariable issue and asssociated Possibly... one
2017-12-06 00:56:00 -05:00
Matthew Brown
a87a1f0dc9
Make sure undeclared array offset vars have type mixed
...
Fixes #360
2017-12-06 00:35:41 -05:00
Matthew Brown
59b50bdcdd
Add proper types for magic constants
...
Fixes #362
2017-12-06 00:05:01 -05:00
Matthew Brown
52fc81e4ab
Remove need for a __toString return type
...
Fixes #364
2017-12-05 23:47:50 -05:00
Matt Brown
d10898b853
Remove code that only caused pain
2017-12-05 16:54:24 -05:00
Matt Brown
e2b1b24dbf
Fix empty checks, make them more like isset checks
...
Fixes #372
2017-12-05 12:14:10 -05:00
Matt Brown
98085b2267
Fix #371 - improve handling of do statements broken in loop refactor
2017-12-05 11:05:10 -05:00
Matthew Brown
a8a1489a8f
Fix closure naming convention so it doesn’t confuse method id checks
2017-12-05 01:47:49 -05:00
Matthew Brown
02dcb2be95
Get or LHS clauses after evaluating statements
2017-12-03 18:22:25 -05:00
Matthew Brown
6843dfb7fc
Remove from_docblock status if we make a successful method call
2017-12-03 17:21:20 -05:00
Matthew Brown
7d003c5bc1
Fix erroneous treatment of or clauses in if statements
2017-12-03 16:25:52 -05:00
Matthew Brown
181d1bb129
Don’t complain about redundant conditions for possibly undefined vars
2017-12-03 15:00:59 -05:00
Matthew Brown
cb4691fb44
Always set templated types as being from docblocks
2017-12-03 13:22:06 -05:00
Matthew Brown
cff7f35d00
Change __toString type conversions to more precise getId checks
2017-12-03 12:44:08 -05:00
Matthew Brown
a47675250a
Set that a type is from docblock when substituting in docblock atomic type
2017-12-03 01:24:47 -05:00
Matthew Brown
be3212eb42
Remove conflicting clauses from switch assertions
2017-12-03 00:58:24 -05:00
Matthew Brown
9a83990053
Clear clauses made redundant by pre-loop assignments
2017-12-02 20:02:29 -05:00
Matthew Brown
d20b8d3034
Improve loop analysis ( #365 )
2017-12-02 18:28:18 -05:00
Matthew Brown
3fca70c77b
Always reemove clauses if from_docblock status has changed
2017-12-02 17:57:58 -05:00
Matt Brown
c112ca9a63
Suppress issue in tests
2017-11-30 19:14:52 -05:00
Matt Brown
d6960f526c
Remove testing support for 7.2
2017-11-30 19:11:06 -05:00
Matt Brown
062d46c132
Update to latest php-cs-fixer
2017-11-30 19:00:09 -05:00
Matthew Brown
2b34fa0cd0
Fix #357 by passing right set of issues to FunctionLikeChecker::compareMethods
2017-11-30 00:07:36 -05:00
Matthew Brown
52f9225356
Add separate issues for implemented return type mismatch
2017-11-30 00:01:41 -05:00
Matthew Brown
0ea6540018
Fix #358 , don’t emit PropertyNotSetInConstructor on public final classes/methods
2017-11-29 23:46:56 -05:00
Matthew Brown
0c2b2b69b3
Fix #348 - allow signature return types to be non-nullable if parent is nullable
2017-11-28 23:09:09 -05:00
Matthew Brown
f4212d897c
Fix erroneous empty array creation in SwitchChecker
...
Fixes #354
2017-11-28 22:33:37 -05:00
Matthew Brown
6c9d90850a
Don’t complain when there are duplicate clauses if due to an assignment
...
Fixes #356
2017-11-28 22:17:03 -05:00
Matt Brown
1173dcc6a2
Don’t stop reconciling types when encountering problem
2017-11-28 17:42:00 -05:00
Matt Brown
252fa8da78
Fix #346 by making a change in from_docblock invalidate clauses
2017-11-28 17:27:19 -05:00
Matt Brown
33f003f427
Don’t complain about repeat isset calls on array keys
...
Fixes #347
2017-11-28 16:52:52 -05:00
Matthew Brown
f27bd50abe
Add RedundantCondition issue, replacing FailedTypeResolution ( #344 )
...
* Group changes
* Don’t worry about vars defined before exiting
* Fix issues with vars defined in conditionals
* Add failing test
* Only add failed reconciliation flag if nothing could be salvaged
* Avoid notice when removing clauses
* Improve handling of loops
* Fix evaluation of binary op expressions
* Remove unset vars from outer context after loop
* Ignore RedundantCondition in some more configs
2017-11-28 00:46:41 -05:00
Matthew Brown
f16642dad2
Better switch analysis ( #343 )
...
* Experiment with good switch analysis
* Improve switch accuracy at expense of some processor cycles
* Evaluate switch case expression in case context
2017-11-28 00:25:21 -05:00
Matt Brown
8fff59f7de
Fix union of intersection types
2017-11-27 19:15:01 -05:00
Matt Brown
b8b1169a03
Consolidate intersection type checks in one place
2017-11-27 18:07:38 -05:00
Matt Brown
bd22f9425c
Fix #175 - support interface intersection types with other interfaces
2017-11-27 16:49:59 -05:00
Matt Brown
a6f3781452
Fix #340 - give up with mixed type when accessing unknown key on objectlike
2017-11-27 12:01:23 -05:00
Matt Brown
8b0d99e28b
Fix extending of core classes that do bad things
2017-11-27 11:43:06 -05:00
Matthew Brown
afcbc113c9
Fix #228 , fix #336 by improving checking of inherited signatures
2017-11-26 16:03:17 -05:00
Matthew Brown
18e68a60de
Fix #334 by allowing interfaces as foreach args to be correctly interpreted
2017-11-24 12:57:00 -05:00
Matthew Brown
4312ef380b
Fix issues found by improved Psalm checks
...
cc @TysonAndre, found with RedundantCondition checks
2017-11-24 12:10:30 -05:00
Matthew Brown
fd3de443b2
Update loop with union of existing types
2017-11-21 22:13:46 -05:00
Matthew Brown
e3b688b06d
Fix #316 - self resolves to proper class
2017-11-21 21:50:39 -05:00
Matthew Brown
b1a35d6a6e
Remove numeric types with !is_numeric check, fix #330
2017-11-21 20:58:08 -05:00
Matthew Brown
f5f7849d3a
Fix erroneous merging of types
2017-11-20 20:06:00 -05:00
Matt Brown
a069cf4ea9
Don‘t turn a string into an array|string by accident
2017-11-20 17:10:05 -05:00
Matt Brown
0c2ea418e3
Fix #327 - prevent null array value from killing assignment
2017-11-20 16:19:40 -05:00
Matt Brown
f46fd0b79f
Fix array access on objects
2017-11-20 11:49:26 -05:00
Matthew Brown
9d025fad8f
Only replace ? where appropriate
2017-11-20 00:32:40 -05:00
Matthew Brown
957600623c
Fix issue with byref template params leaking
2017-11-20 00:12:17 -05:00
Matthew Brown
ccc0583bf8
Fix issue with bad assign after array_pop/array_shift
2017-11-19 23:46:32 -05:00
Tyson Andre
cea5dca5dc
Allow using nullable shorthand (?
) within an array ( #326 )
2017-11-19 23:36:37 -05:00
Matthew Brown
ae799da8d0
Add root array var when updating array key type in if
2017-11-19 23:25:14 -05:00
Matthew Brown
381eb2157a
Avoid undefined notice in var comparison
2017-11-19 23:19:49 -05:00
Matthew Brown
5698b2d363
Update root var with more accurate object-like type
2017-11-19 22:28:52 -05:00
Matthew Brown
90bcd99eab
Fix issue where array_shift/array_pop didn’t mark array as modified
2017-11-19 21:36:09 -05:00
Matthew Brown
8b2df09f0f
Fix issue with object-like reassignment
2017-11-19 21:24:29 -05:00
Matthew Brown
3418eb494a
Always set a fallback mixed type on a mixed property fetch
2017-11-19 14:58:48 -05:00
Matthew Brown
942bc0a663
Add new MixedTypeCoercion issue, fixes #320
2017-11-19 13:42:48 -05:00
Matthew Brown
75b6e21801
Fix #315 - improve checking of object-like arrays in function params
2017-11-19 13:05:35 -05:00
Matthew Brown
5ff4badf33
Refactor array analysis to improve reliability and accuracy ( #325 )
2017-11-19 12:33:43 -05:00
Matthew Brown
1a39224abc
Fix issues that improved array checks found
2017-11-19 12:14:02 -05:00
Matt Brown
39baa00fd3
Fix issue with nested object-like array updating
2017-11-17 16:33:36 -05:00
Tyson Andre
1c25ca1a0c
Fix false positives, add tests of @psalm-seal-properties
( #318 )
2017-11-17 16:19:48 -05:00
Matt Brown
2a96e323e7
Fix assignment to arrays after object-like
2017-11-17 12:27:16 -05:00
Matthew Brown
965352c711
Fix #312 - support parsing object-like arrays without keys
2017-11-17 01:18:13 -05:00
Matthew Brown
a08306973a
Fix #302 - add a way to seal objects with magic properties
2017-11-16 20:47:58 -05:00
Matthew Brown
440db3be89
Fix #313 - correctly analyse closure self return types
2017-11-16 20:06:00 -05:00
Matthew Brown
7d33db0d19
Fix issue with array unification after scanning
2017-11-16 01:11:46 -05:00
Matthew Brown
36a760657d
Fix #311 and introduce PossiblyInvalidArrayOffset
2017-11-16 00:27:11 -05:00
Matthew Brown
6c9cdd896b
Separate InvalidArrayAccess and InvalidArrayOffset
2017-11-15 21:10:07 -05:00