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
Matt Brown
bfccdb417f
Pass through ignore_nullable_issues flag when verifying return statements
2017-12-07 16:08:09 -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
e08b11b144
Improve TemplateChecker
2017-12-06 01:05:51 -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
df90d72ad1
Emit return type errors at the function itself, not its parent
...
Fixes #363
2017-12-06 00:11:05 -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
Matt Brown
83c65d4b2d
Add DOMNodeList::item to callmap
2017-12-04 11:59:16 -05:00
Matt Brown
1f57881310
Break out PossiblyNullArrayOffset and NullArrayOffset from InvalidArrayOffset
2017-12-04 11:20:31 -05:00
Gerrit Addiks
de09bd846c
Fixes #367 ; Added missing declaration for var_comment variable in ForEachChecker ( #368 )
2017-12-04 08:50:59 -05:00
Matthew Brown
8abd77c70f
Revert to from_docbblock status of outer loop
2017-12-04 00:13:46 -05:00
Matthew Brown
0134d7bf5c
Keep track of referenced loop vvars
2017-12-03 23:50:51 -05:00
Matthew Brown
69ca6bd0a0
Get LHS clauses of && expression after evaluation
2017-12-03 18:33:54 -05:00
Matthew Brown
02dcb2be95
Get or LHS clauses after evaluating statements
2017-12-03 18:22:25 -05:00
Matthew Brown
f5ca4b1c52
Also remove var from clauses when updating
2017-12-03 17:36:50 -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
cb9079ca88
Improve generic param replacement
2017-12-03 11:23:40 -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
Tyson Andre
f8f67d4d86
grammar nit for TypeParseTreeException ( #359 )
...
Noticed when looking at recent changes
2017-12-03 01:06:14 -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
ed626db553
Widen switch redefined vars if defined in each case
2017-12-02 18:06:21 -05:00
Matthew Brown
3fca70c77b
Always reemove clauses if from_docblock status has changed
2017-12-02 17:57:58 -05:00
Matthew Brown
cfeb4c2586
Simplify vars_possibly_in_scope types
2017-12-02 13:32:20 -05:00
Matt Brown
062d46c132
Update to latest php-cs-fixer
2017-11-30 19:00:09 -05:00
Matthew Brown
888b5dae00
Move LoopChecker into its own file
2017-11-30 01:07:20 -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
5df8935e14
Make sure @property types have from_docblock === true, fixes #351
2017-11-28 23:00:26 -05:00
Matthew Brown
681da41f0f
Allow fsockopen to return false, fixes #353
2017-11-28 22:56:28 -05:00
Matthew Brown
495252494f
Fix buggy switch statement revealed after switch fixes
2017-11-28 22:46:43 -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
6976f48316
Assume TVoid if no return expression
2017-11-28 17:34:10 -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
4b7d4f9015
Don’t worry about !null either
2017-11-28 02:01:21 -05:00
Matthew Brown
018843fe65
Prevent empty type array when evaluating !falsy
2017-11-28 01:59:18 -05:00
Matthew Brown
e0cea0017c
Add more stringent checks when surfacing RedundantCondition
2017-11-28 01:40:55 -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
318e7c2366
Add workaround for interface instanceof issue
2017-11-27 17:39:25 -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
3b2a1d4a3e
Fix property type casing
2017-11-25 12:31:01 -05:00
Matthew Brown
18cf05e087
Always keep track of assigned var ids
2017-11-25 11:21:45 -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
c86e73ddb6
Always keep track of referenced var ids
...
which we can use for analysis elsewhere
2017-11-24 12:17:28 -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
df06c64b3e
Allow suppression of InvalidToString
2017-11-21 21:53:12 -05:00
Matthew Brown
e3b688b06d
Fix #316 - self resolves to proper class
2017-11-21 21:50:39 -05:00
Matthew Brown
0c917f632d
Also check for non-scalar types in reconciliation
2017-11-21 21:00:06 -05:00
Matthew Brown
b1a35d6a6e
Remove numeric types with !is_numeric check, fix #330
2017-11-21 20:58:08 -05:00
Matthew Brown
ad74563327
Improve handling of switch statements with default cases
2017-11-20 20:39:27 -05:00
Matthew Brown
f5f7849d3a
Fix erroneous merging of types
2017-11-20 20:06:00 -05:00
Matt Brown
60c9f1ca96
Ignore socket_select when assigning byref params
2017-11-20 17:34:32 -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
a206e3dbc9
Pay attention to ignore_nullable_issues when comparing types
2017-11-20 13:31:30 -05:00
Matt Brown
f46fd0b79f
Fix array access on objects
2017-11-20 11:49:26 -05:00
Matt Brown
9081da21a6
Prevent false->bool resolution mismatch
2017-11-20 11:18:01 -05:00
Matthew Brown
aca23d236b
Check for ? after replacement
2017-11-20 00:37:45 -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
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
8d62fc8ad1
Only update array type if it doesn’t have an object
2017-11-19 14:38:00 -05:00
Matthew Brown
f18616b2f9
Provide fallback if array keys not found
2017-11-19 14:23:39 -05:00
Matthew Brown
95429b7037
Fix invalid assignment to Union
2017-11-19 14:09:20 -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
Matt Brown
3f324141ef
Fix error message when changing keys
2017-11-17 11:43:06 -05:00
Matt Brown
6710fd4231
Fix double mixed issue with array offsets
2017-11-17 11:32:12 -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
Matthew Brown
abe7c003ab
Fix #309 - borrowing fix from @TysonAndre
2017-11-15 20:45:53 -05:00
Matt Brown
bce8bdb46e
Ignore traversable, iterable etc for RawObjectIteration
2017-11-15 12:09:13 -05:00
Matt Brown
4ff9ec2853
Don’t warn about traversable objects
2017-11-15 11:58:46 -05:00
Matt Brown
a99135c4d0
Fix #300 - add PossiblyInvalidPropertyFetch
2017-11-15 11:44:13 -05:00
Matt Brown
c5faa2d06a
Fix #299 - add PossiblyInvalidMethodCall
2017-11-15 11:34:40 -05:00
Matt Brown
9111b1c725
Fix #301 - add PossiblyInvalidPropertyAssignment
2017-11-15 11:15:03 -05:00
Matthew Brown
f96f3a467d
Fix #296 - add issue for raw object iteration
2017-11-14 22:55:48 -05:00
Matthew Brown
2e6b93e4d0
Fix #289 , make inferred type of yield from expressions mixed
2017-11-14 22:29:15 -05:00
Matthew Brown
23e4c8f68b
Fix #290 - check for yields in assignments
2017-11-14 22:08:15 -05:00
Matthew Brown
3ade4b9559
Fix #293 , be case invariant to self & static
2017-11-14 21:56:29 -05:00
Matthew Brown
b2ae9a2892
Fix #291 , #292 and #297 by improving docblock parsing
2017-11-14 21:43:31 -05:00
Matthew Brown
160a95a8bf
Fix too-long line
2017-11-13 21:21:54 -05:00
Matt Brown
7e8ae33d56
Fix #288 - get rid of MethodSignatureMismatch issues where PHP doesn’t worry
2017-11-13 16:31:33 -05:00
Tyson Andre
d9a142ac7d
Fix incorrect strpos argument order ( #287 )
...
Detected via static analysis
2017-11-11 21:48:43 -05:00
Matthew Brown
a0a9128375
Fix #285 - add PossiblyInvalidArrayAccess
2017-11-11 21:22:11 -05:00
Matthew Brown
4f2a200b45
Fix #283 - add more refined PossiblyUndefinedMethod check
2017-11-11 14:53:35 -05:00
Matthew Brown
2f1e3652b7
Fix #274 - improve array addition inference for objectlike arrays
2017-11-11 14:19:57 -05:00
Matthew Brown
126fd9a3a1
Fix #286 - ignore terrible param types
2017-11-11 11:28:49 -05:00
Matthew Brown
0ea48752d1
Fix #284 - allow __get calls inside class if property undefined
2017-11-11 01:17:10 -05:00
Matthew Brown
4c79ec41fa
Fix reset/end return types
2017-11-11 01:09:07 -05:00
Matthew Brown
b79ad3c64b
Fix #282 - detect legacy functions with variadic behaviour
2017-11-11 01:06:39 -05:00
Matt Brown
59265ef2bf
Fix #276 - fix false positive in magic call
2017-11-10 18:08:26 -05:00
Matt Brown
e49573e7f6
Fix #279 - make sure referenced vars updated always in or
2017-11-09 16:42:39 -05:00
Matt Brown
ff5ea32ea3
Fix #277 - infer stdClass from object cast
2017-11-09 15:58:09 -05:00
Matt Brown
6db3758b81
Fix #275 with bad sig
2017-11-09 15:36:21 -05:00
Tyson Andre
e2dd3db70f
Fix phpdoc in psalm's codebase referring to missing params. ( #273 )
...
Also, don't use `@return self` in __construct, it returns void.
2017-11-08 23:32:22 -05:00
Matthew Brown
765d82548d
Remove more dead code
2017-11-08 23:27:51 -05:00
Tyson Andre
b3505cfbef
Get rid of unused variables in psalm's codebase ( #272 )
...
* Remove unused variables
* Fix more unused variables
* Fix remaining detected undefined variables
Other 20 detected undefined variable warnings were false positives.
2017-11-08 23:14:27 -05:00
Matthew Brown
a7b32beb4e
Add better checks for array_rand’s signature
2017-11-08 21:56:54 -05:00
Matthew Brown
dd86513fc5
Fix #271 - remove invalid complaint about private overridden method
2017-11-08 21:27:23 -05:00
Matt Brown
6d14bf65d7
Loosen restrictions on compact(), fix #267
2017-11-08 09:37:58 -05:00
Matthew Brown
44c40dff4f
Fix #270 by looking at root ids when analysing array assignment in loops
2017-11-08 08:23:34 -05:00
Matt Brown
750d18d20a
Fix #266 - do better analysis of array_rand
...
And also have better fallback when accessing string key on object-like array
2017-11-07 17:38:54 -05:00
Matt Brown
ba426c9dbf
Fix erroneous return types
2017-11-07 17:20:50 -05:00
Matt Brown
e0371aed62
Introduce file manipulation concept to plugins
2017-11-07 14:46:53 -05:00
Matt Brown
490e78e136
Add isset check for safety
2017-11-06 15:42:39 -05:00
Matt Brown
97de8f7684
Allow Psalm to check static call LHS vars
2017-11-06 15:37:49 -05:00
Matt Brown
4b573bde1f
Fix get_class($e) !== checks
2017-11-06 12:04:38 -05:00
Matt Brown
81493a639e
Add more robust property assignment when property not defined
2017-11-03 12:27:01 -04:00
Matthew Brown
a651fad6f0
Fix #263 - add support for @psalm-param and @psalm-var annotations
2017-11-02 21:45:17 -04:00
Matt Brown
b163c296ff
Fix templated return types in traits
2017-11-02 15:07:39 -04:00
Matthew Brown
aeb9882281
Add back support for TObject property fetch
2017-10-29 17:44:13 -04:00
Matthew Brown
35e6cf8108
Change MissingInclude to MissingFile
2017-10-29 17:36:02 -04:00
Matthew Brown
afc8cb4068
Check for property fetch mocks
2017-10-29 17:33:26 -04:00
Matthew Brown
b618bd798d
Add new issues for missing required files
2017-10-29 14:39:23 -04:00
Matthew Brown
51280c1670
Allow byref args of socket_select to pass through unchanged
2017-10-28 16:26:45 -04:00
Matthew Brown
24980cd7d7
Constrain user-defined functions and methods
2017-10-28 16:05:35 -04:00
Matthew Brown
45df0292b1
Never constrain by-ref array variables
2017-10-28 15:33:29 -04:00
Matthew Brown
bee14d184f
Add better check for property
2017-10-28 15:17:32 -04:00
Matthew Brown
02dde911ce
Allow DateTimeImmutable::__construct arg to be nullable
2017-10-28 14:53:25 -04:00
Matthew Brown
323da5ce13
Add callmap updates from Phan
2017-10-28 14:02:33 -04:00
Matthew Brown
30acb9e3b7
Improve array function byref understanding by hard-coding rules
2017-10-28 13:56:29 -04:00
Matthew Brown
3f9bd530fd
Fix #262 - allow return type of simplexml functions to be false
2017-10-27 20:15:00 -04:00
Matt Brown
8b7d82ddf6
Fix #2 - suppress errors for single lines
2017-10-26 18:19:19 -04:00
Matt Brown
d06e844748
Fix issue simplifying callable types
2017-10-26 16:05:57 -04:00
Matt Brown
897c70f8f5
Add back support for switch-getclass ::class constants
2017-10-26 15:07:36 -04:00
Steffen Weber
30465518f7
Fix signature of "gmp_import"
...
According to the PHP manual, the second and third argument of "gmp_import" have default values and are therefore optional.
https://php.net/gmp_import
2017-10-25 09:12:20 -04:00
Matthew Brown
122b354c4c
Ignore get_class and instanceof checks for arbitrary classes in traits
2017-10-24 00:01:43 -04:00
Matthew Brown
467bbba593
Prevent falsy values from leaking into the type system
2017-10-23 22:04:07 -04:00
Matt Brown
0c33db0a3e
Fix #258 - tempnam can return false
2017-10-23 13:13:07 -04:00
Matt Brown
c850ef644d
Add PossiblyFalseReference and PossiblyFalseArgument issues
...
Useful for catching error cases
2017-10-23 11:47:00 -04:00
Matthew Brown
a34de5b79c
Fix #257 - prevent collapsing callable into string
2017-10-23 08:00:28 -04:00
Matthew Brown
e41e1fa57d
Fix #256 - don’t crash when encountering types that match one another
2017-10-23 07:35:28 -04:00
Matthew Brown
2c18686c8c
Fix #247 - allow is_callable checks on array
2017-10-22 21:07:06 -04:00
Matthew Brown
a85cd1db8a
Add support for get_class and get_type negation checks
2017-10-22 20:17:04 -04:00
Matthew Brown
4d32c72ef8
Fix #250 and fix #255 - handle switch statements like PHP does
2017-10-22 19:53:53 -04:00
Matthew Brown
c7d55bf6de
Improve aseertion finding by digging deeper into trivial comparisons
2017-10-22 19:11:28 -04:00
Matthew Brown
f9032924e6
Allow == true comparisons to be evaluated to !falsy
2017-10-22 12:09:22 -04:00
Matthew Brown
f6e01b5925
Change empty type assertions to "falsy"
...
As empty has a special meaning
2017-10-22 11:57:41 -04:00
Matthew Brown
032cd3b897
Fix #254 - catch parse exception when improving function types
2017-10-22 01:04:35 -04:00
Matt Brown
3c6a8a0b24
Fix #251 - allow Psalm to analyse Wordpress
2017-10-19 19:19:29 -04:00
Matt Brown
c395930a06
Fix missing function issue ref #251
2017-10-19 18:23:18 -04:00
Matt Brown
dbcec1be38
Fix #249 - get out of nested class
2017-10-19 14:40:38 -04:00
Matthew Brown
2e00fb19ee
Fix #246 - amend return type for DateTime::createFromFormat
2017-10-16 00:47:48 -04:00
Matthew Brown
295792d550
Fix #235 - add psalm.xml option to support igbinary serializer
2017-10-15 12:38:47 -04:00
Matthew Brown
657d154288
CacheProvider -> ParserCacheProvider
2017-10-15 11:57:44 -04:00
Matthew Brown
00aaa4adaf
Fix #242 - add --no-cache option
2017-10-13 21:27:20 -04:00
Matthew Brown
8c4a3734a3
Revert serialisation changes
2017-10-12 20:27:33 -04:00
Matthew Brown
38c8a1d9cf
Stop analysing statements if expression has errors
2017-10-12 20:24:22 -04:00
Matthew Brown
b7f6d15a24
Don’t freak out over incorrectly-cased classes
2017-10-12 19:53:12 -04:00
Matthew Brown
d455e24958
Make shallow type comparison case insensitive ref #240
2017-10-12 19:46:00 -04:00
Matt Brown
024bcbc371
Fix #239 - warn about bad brackets
2017-10-12 14:02:06 -04:00
Bruce Weirdan
ed3e429d2c
s/'mixed'/''/g
2017-10-12 09:21:49 -04:00
Bruce Weirdan
52962db24c
Adjusted Closure methods signatures
...
This fixes the following false-positive:
```php
function a(): bool {
$a = function(): bool { return true; }
return $a->call(new stdClass);
}
```
where psalm previously complained about (wrongly) inferred type to be
Closure
2017-10-12 09:21:49 -04:00
Matthew Brown
1b7a5c2944
Fix #236 - incorrect operand issue text
2017-10-12 08:51:57 -04:00
Bruce Weirdan
f080e32ef0
Corrected case of Traversable typehints
...
Affected functions/methods:
* `iterator_apply()`
* `iterator_count()`
* `IteratorIterator::__construct()`
* `iterator_to_array()`
This fixes the following false-positive:
```php
class Iter extends IteratorIterator {
public function __construct(Traversable $a) {
parent::__construct($a);
}
}
```
where psalm previously wanted `parent::__construct()` argument to be
`traversable` (all-lowercase).
2017-10-12 08:49:24 -04:00
Matthew Brown
deb489e82d
Fix #232 - discard clauses when evaluating catch block
2017-10-10 23:09:19 -04:00
Matthew Brown
862d22e83c
Fix #230 - invalidate root vars on $arr[]= assignment
2017-10-10 23:01:52 -04:00
Matthew Brown
b43c2d5f0c
Fix #231 - add special case for === false checks
2017-10-10 22:36:33 -04:00
Matthew Brown
7ebffbcd2d
Bump parser version
2017-10-07 15:06:47 -04:00
Matthew Brown
beea51d7bf
Fix property check
2017-10-07 15:05:05 -04:00
Matthew Brown
cbc889a498
Add cache-clearing mechanism
2017-10-07 14:41:16 -04:00
Matthew Brown
e47198b326
Add workaround for Psalm checking itself on PHP 5.6
2017-10-07 11:38:51 -04:00
Matthew Brown
6ab693ceeb
Add missing class
2017-10-07 11:31:18 -04:00
Matthew Brown
9774131876
Fix #224 - explicit string casts fail when no __toString present
2017-10-07 11:27:54 -04:00
Matthew Brown
483b4c75f3
Fix #223 - array_map with too few args should have issue
2017-10-07 10:33:19 -04:00
Matthew Brown
6b4bd47ddb
Fix #181 and #225 - resolve problems with self in comments/return statements
2017-10-07 10:22:52 -04:00
Matthew Brown
1cc13bdeeb
Prevent TNamedObject from having a leading slash
2017-10-06 23:35:16 -04:00
MacFJA
a38c36c597
Always generate report files, even if no errors and warnings
2017-10-02 07:38:22 -04:00
Steffen Weber
4145119268
Fix case of ZipArchive properties
...
The properties "numFiles" and "statusSys" use camelCase.
https://secure.php.net/manual/en/class.ziparchive.php
2017-09-26 10:38:06 -04:00
Matthew Brown
5bd6228708
Fix #220 - don’t worry about parent property access
2017-09-24 08:17:27 -04:00
Matt Brown
ee655e6f33
Fix #218 - strings passed to format always return string
2017-09-22 10:18:44 -04:00
Bruce Weirdan
ed0e9702ae
Adjusted signatures of DateTime and friends
...
* __wakeup is void -> void, see http://php.net/manual/en/language.oop5.magic.php#object.wakeup
* DateTime::__construct() does not accept null as time
* DateTimeZone::getLocation() has no last $object parameter
* ditto for DateTimeZone::getName()
* ditto for DateTimeZone::getTransitions()
2017-09-22 10:06:24 -04:00
Matt Brown
1012c23ff5
Fix assertion checks
2017-09-21 16:31:19 -04:00
Matt Brown
d949165eb6
Fix #217 - bad param count for DateTimeImmutable::getTimezone
2017-09-21 15:37:05 -04:00
Matt Brown
3bc497b18e
Fix #217 - bad param count for DateTimeImmutable::getTimezone
2017-09-21 15:36:26 -04:00
Matt Brown
6f911c7386
Emit more specific operand issues
2017-09-20 11:22:17 -04:00
Matthew Brown
e42e590442
Add more descriptive exception messages
2017-09-20 08:43:54 -04:00
Matthew Brown
1a9592fc62
Fix #215 where ReflectionMethod implementing class is not a parent class or parent interface
2017-09-19 23:35:37 -04:00
François Kooman
eb79cb7172
fix running Psalm on itself due to its use of json_encode
2017-09-18 16:14:01 -04:00
François Kooman
8e35a72cc3
fix json_encode return values
...
`json_encode` can also return `false`
2017-09-18 16:14:01 -04:00
Matt Brown
d380bf3f19
Fix #209 - fix issue with file load order results change
2017-09-18 16:10:08 -04:00
Matthew Brown
e84586cfaa
Fix return type space issue
2017-09-16 15:08:11 -04:00
Matthew Brown
7c261d7d1f
Add return after every special type
2017-09-16 15:00:50 -04:00
Matthew Brown
391696bc83
Use a blacklist, not a whitelist
2017-09-16 13:28:33 -04:00
Matthew Brown
3a8efec728
Add error for pass by reference
2017-09-16 13:16:21 -04:00
Matthew Brown
fc6b663c8a
Only write files if they’re changed
2017-09-16 12:52:46 -04:00
Matthew Brown
9a3cb742cb
Refactor docblock manipulation and add tests for it
2017-09-16 12:45:20 -04:00
Matthew Brown
995e92a8c3
Remove empty if block
2017-09-14 00:36:38 -04:00
Matthew Brown
2a4a6fc490
Exit early if checking iterable for methods
2017-09-14 00:32:14 -04:00
Matthew Brown
313e1c383c
Fix edge-case issue with abstract class not fully implementing interface
2017-09-13 23:57:11 -04:00
Matt Brown
5b3531b5a5
Fix null coalescing on nullable output
2017-09-13 14:35:42 -04:00
Matt Brown
eee8442af6
Fix #199 - allow classes to suppress PropertyNotSetInConstructor warnings
2017-09-13 11:32:13 -04:00
Matt Brown
439a1ddc97
Exit early if a bad class is detected
2017-09-11 11:58:11 -04:00
Matt Brown
d1807cfb95
Improve checks for switch types
2017-09-11 11:58:11 -04:00
François Kooman
8a28ab4b26
Fix some cURL function return values ( #208 )
...
At least the functions referenced here can also return boolean
`false` according to the PHP manual. Add this information to the
CallMap file.
2017-09-10 21:49:51 -04:00
MacFJA
c4ce8bede9
Add XML as possible output format + add report generation ( #206 )
...
* Add XML as possible output format + add report generation
* Add missing xml root node
* Change XML generator (previous one don't escape '<' and '>')
* Change option (only one option) + unit test
2017-09-08 11:18:48 -04:00
Matthew Brown
e89a2929d5
Infer types from numeric operations
2017-09-06 21:44:26 -04:00
Matthew Brown
9f9e8a1b30
Improve API for inference
2017-09-03 20:52:54 -04:00
Matthew Brown
11aa3558b7
Make sure encapsulated strings can also coerce param types
2017-09-02 19:48:59 -04:00
Matthew Brown
a0c27cee4f
Allow param types to be inferred from presence of concat ops
2017-09-02 19:23:00 -04:00
Matthew Brown
a725009181
Only say we could not infer param type if we’re actively looking
2017-09-02 18:26:19 -04:00
Matthew Brown
6531e3bfb8
Throw exception if impossible state is reached
2017-09-02 18:22:44 -04:00
Matthew Brown
73694ab04e
Suggest types when complaining of untype params
...
Ref #204
2017-09-02 18:15:52 -04:00
Matthew Brown
8aabcbce35
Introduce UntypedParam warnings when functions are missing param types
2017-09-02 11:18:56 -04:00
Matt Brown
1cc63fe718
Ignore leading slash in array_map methods
2017-08-30 13:45:41 -04:00
Matthew Brown
622217b708
Fix #205 - add file references at analysis stage too
2017-08-22 12:38:38 -04:00
Matthew Brown
fb656f3575
Fix #203 and detect invalid countable count calls
2017-08-19 13:30:33 -04:00
Matthew Brown
e4e6c2a6e6
Fix #201 - list/array assignment should invalidate clauses too
2017-08-18 23:14:38 -04:00
Matthew Brown
fbc6379275
Fix #202 - vars changed inside loops should invalidate clauses
2017-08-18 22:41:25 -04:00
Matt Brown
8c6835b928
Remove redundancy
2017-08-18 17:11:39 -04:00
Matt Brown
d106587737
Add better check for value
2017-08-18 17:10:57 -04:00
Matt Brown
3075f16308
Ignore static, self and parent in callable class names
2017-08-18 17:02:15 -04:00
Matt Brown
9a036cb4ab
Fix resource signatures
2017-08-18 16:51:34 -04:00
Matt Brown
c626b7d68a
Fix #200 - allow mapping of more callable strings, and callable arrays
2017-08-14 19:30:11 -04:00
Matt Brown
0b0e7aa662
Fix #197 - allow nested class and function definitions
2017-08-14 15:46:01 -04:00
Matt Brown
d6e2e786db
Ignore self calls as well
2017-08-11 19:09:15 -04:00
Matt Brown
a7baa7e928
Support callable checks on inline-defined functions
2017-08-11 19:05:04 -04:00
Matt Brown
13d98b803d
Check that callable string class exists first
2017-08-11 18:48:58 -04:00
Matt Brown
17a900ab54
Add ability to detect invalid callable functions
2017-08-11 18:30:58 -04:00
Matt Brown
396d214e3c
Throw exception when function storage is missing
2017-08-08 14:45:47 -04:00
Matt Brown
8f9fdcb637
Create storage for plugins before scanning
2017-08-08 11:03:45 -04:00
Matt Brown
4b5a5ead74
Fix paradox detection for multiple clauses
2017-08-07 18:38:38 -04:00
Matt Brown
e9b50cd2f1
Fix #196 to prevent false positives
2017-08-07 17:52:09 -04:00
Matthew Brown
4175295113
Isolate where we load static storage objects ( #195 )
...
* Move FileChecker::$storage calls to provider
* Add ClassLikeStorageProvider
* Use ClassLikeStorageProvider everywhere
* Move storage arrays into providers
2017-07-29 15:05:06 -04:00
Matthew Brown
3859c3c3cf
Narrow abstract check
2017-07-28 23:53:06 -04:00
Matthew Brown
c5952af6f0
Fix bug with trait implementing abstract method
2017-07-28 23:38:57 -04:00
Matt Brown
22b6dafe3c
Fix #194 - carry over const definitions
2017-07-28 10:42:30 -04:00
Matt Brown
c8ec0dc650
Fix casing issue
2017-07-27 19:14:16 -04:00
Matt Brown
84f1993a2e
Fix potential bug on case-sensitive OSes with badly-cased comment polluting code
2017-07-27 16:59:41 -04:00
Matt Brown
3e60b4b6ad
Fix formatting
2017-07-27 16:15:17 -04:00
Matt Brown
aca295ef7d
Build up file-class references on initial scan
2017-07-27 16:13:26 -04:00
Matthew Brown
2c1a0b197e
Remove param typehint
2017-07-26 23:47:29 -04:00
Matthew Brown
0d88b4f2e7
Remove whitespace
2017-07-26 21:27:59 -04:00
Matt Brown
7b178a2b25
Add ability to stub constants
2017-07-26 19:54:22 -04:00
Matt Brown
0e67565b2c
Return null if path exists
2017-07-26 19:36:41 -04:00
Matt Brown
b4a46429df
Add FileChecker subclass analysis
2017-07-26 19:27:30 -04:00
Matt Brown
dbb1bf2e73
Add addSuppressedIssue API method back
2017-07-26 16:09:09 -04:00
Matt Brown
76ba419330
Group unused tests together
2017-07-25 17:04:58 -04:00
Matthew Brown
e29dd140e3
Refactor scanning and analysis, introducing multithreading ( #191 )
...
* Add failing test
* Add visitor to soup up classlike references
* Move a whole bunch of code into the visitor
* Move some methods back, move onto analysis stage
* Use the getAliases method everywhere
* Fix refs
* Fix more refs
* Fix some tests
* Fix more tests
* Fix include tests
* Shift config class finding to project checker and fix bugs
* Fix a few more tests
* transition test to new syntax
* Remove var_dump
* Delete a bunch of code and fix mutation test
* Remove unnecessary visitation
* Transition to better mocked out file provider, breaking some cached statement loading
* Use different scheme for naming anonymous classes
* Fix anonymous class issues
* Refactor file/statement loading
* Add specific property types
* Fix mapped property assignment
* Improve how we deal with traits
* Fix trait checking
* Pass Psalm checks
* Add multi-process support
* Delay console output until the end
* Remove PHP 7 syntax
* Update file storage with classes
* Fix scanning individual files and add reflection return types
* Always turn XDebug off
* Add quicker method of getting method mutations
* Queue return types for crawling
* Interpret all strings as possible classes once we see a `get_class` call
* Check invalid return types again
* Fix template namespacing issues
* Default to class-insensitive file names for includes
* Don’t overwrite existing issues data
* Add var docblocks for scanning
* Add null check
* Fix loading of external classes in templates
* Only try to populate class when we haven’t yet seen it’s not a class
* Fix trait property accessibility
* Only ever improve docblock param type
* Make param replacement more robust
* Fix static const missing inferred type
* Fix a few more tests
* Register constant definitions
* Fix trait aliasing
* Skip constant type tests for now
* Fix linting issues
* Make sure caching is off for tests
* Remove unnecessary return
* Use emulative parser if on PHP 5.6
* Cache parser for faster first-time parse
* Fix constant resolution when scanning classes
* Remove test that’s beyond a practical scope
* Add back --diff support
* Add --help for --threads
* Remove unused vars
2017-07-25 16:11:02 -04:00
Matt Brown
e83ea3a5fe
Fix #192 - correct SessionHandlerInterface::gc signature
2017-07-24 17:58:38 -04:00
Matthew Brown
86f2a9981c
Fix #190 by updating callmap
2017-07-19 08:54:01 -04:00
Matt Brown
592194e9f2
Fix #187 by splitting abs into int and float versions
2017-07-14 18:09:25 -04:00
Matthew Brown
e33d8dac2e
Remove unnecessary check
2017-07-12 22:00:33 -04:00
Matthew Brown
17205bc093
Be more strict about what properties we check
2017-07-10 20:20:40 -04:00
Matt Brown
cfbf256593
Add version check for reflected function return type
2017-07-10 10:38:02 -04:00
Matthew Brown
b3c992d7aa
Don’t suppress PHP fatal errors in debug mode
2017-07-09 23:34:16 -04:00
Matthew Brown
dcb6ecd3fd
Fix reference errors
2017-07-09 23:26:16 -04:00
Matthew Brown
05674ef3bc
Fix #182 by properly registering autoload file functions
2017-07-09 23:24:06 -04:00
Matthew Brown
e60f085741
Fix #178 - complain when encountering bad @return type
2017-07-09 20:32:35 -04:00
Matthew Brown
869c65b4fc
Move property check to relevant position
2017-07-09 18:37:30 -04:00
Matthew Brown
cb6d9457ee
Fix issue reporting on uninitialised properties in foreign classes
2017-07-09 18:33:56 -04:00
Matthew Brown
581cf5f7eb
Don’t allow trait to override non-abstract method definition for parent class
2017-07-09 15:54:43 -04:00
Matthew Brown
90f3b88544
Correct casing
2017-07-09 15:27:07 -04:00
Matthew Brown
39a27f41b3
Prevent checking reflected methods for mutations
2017-07-09 15:19:05 -04:00
Matthew Brown
922b6640fa
Avoid possible nullrefs
2017-07-09 14:50:57 -04:00
Matthew Brown
32ff386b4a
Fix #184 - prevent classes without reflected classes from breaking everything
2017-07-09 14:36:06 -04:00
Matthew Brown
a2a86ef9b1
Fix psalm issue
2017-07-08 22:19:53 -04:00
Matthew Brown
23f41b4543
Narrow down the error location even further
2017-07-08 22:11:55 -04:00
Matthew Brown
83a6f914a7
Add start/end file offsets for better Psalm errors
2017-07-08 22:06:49 -04:00
Matthew Brown
67338c4bf5
Also detect non-inherited private constructors
2017-07-08 22:01:26 -04:00
Matthew Brown
c7b0f6685f
Make Psalm a bit faster
2017-07-08 21:19:16 -04:00
Matthew Brown
95de80b7f1
Make signature nullable
2017-06-30 14:16:27 -04:00
Matthew Brown
91bdd65588
Fix #179 - check for abstract method instantiations
2017-06-30 10:24:47 -04:00
Matthew Brown
d8654b8389
Slow down Psalm by checking parent initialisations too
2017-06-30 01:24:45 -04:00
Matthew Brown
fe6f0c073b
Exit early if var not defined
2017-06-29 20:34:43 -04:00
Matt Brown
3dceebc42f
Make type combination less dependant on __toString
2017-06-29 17:40:25 -04:00
Matt Brown
fef589fb68
Fix issue with array access on property
2017-06-29 17:39:46 -04:00
Matt Brown
d39aeb9c3d
Fix casing in dom* classes
2017-06-29 12:10:07 -04:00
Matt Brown
effdec6b1d
Separate objectlike types into their own container
2017-06-29 11:48:00 -04:00
Matt Brown
3775b29e30
Move by-ref types into object
2017-06-29 11:18:02 -04:00
Matt Brown
5220df4837
Fix #177 - treat return type as nullable due to try
2017-06-29 10:33:54 -04:00
Matthew Brown
368b6670d7
Fix a few edgecases
2017-06-29 00:28:37 -04:00
Matthew Brown
8fd671bdc4
Fix #167 - prevent Empty type in assignment
2017-06-28 23:37:02 -04:00
Matthew Brown
4a590000a6
Fix whitespace issue
2017-06-26 20:14:58 -04:00
Matthew Brown
678b6113d5
Fix #127 - allow Psalm to analyse composer autloaded files
2017-06-26 20:13:10 -04:00
Matthew Brown
bc35f88859
Fix issue with $this instanceof checks in traits
2017-06-23 00:39:37 -04:00
Matt Brown
967b51d5fc
Make sure that traits are listed as analyzable so issues can be shown
2017-06-21 16:36:45 -04:00
Matt Brown
f49d167a49
Add tracking from where a trait was included
2017-06-21 14:22:52 -04:00
Matthew Brown
878696b72c
Fix #173 - don’t emit MissingConstructor issues from trait constructor
2017-06-21 01:25:41 -04:00
Matt Brown
e5c25eae97
Fix #172 - make sure new coalesce vars escape brackets
2017-06-20 15:38:32 -04:00
Matt Brown
e1d5eab7a2
Fix long line
2017-06-20 14:07:54 -04:00
Matt Brown
473040ca8f
Fix #171 by supporting exit statements for fopen
2017-06-20 13:25:37 -04:00
Matt Brown
f4338c38e7
Fix #148 - suppress InvalidDocblock where appropriate
2017-06-13 14:00:41 -04:00
Matthew Brown
f9b16c9a2d
Explicitly cast mock class to string
2017-06-13 00:51:16 -04:00
Matthew Brown
6b2b80d0bb
Assign var to correct context
2017-06-13 00:09:15 -04:00
Matthew Brown
152d1512f1
Fix issue capturing method mutations in traits
2017-06-12 22:51:39 -04:00
Matthew Brown
72e1221a2f
Fix #168 and add test case
2017-06-11 19:20:07 -04:00
Matt Brown
1745518c2c
Fix #166 - prevent require loop
2017-06-06 10:11:34 -04:00
Matthew Brown
81223c45e0
Fix #166 - return instead of looping infinitely
2017-06-05 21:46:04 +01:00
Matthew Brown
fa4678912f
Fix possible nullref
2017-05-29 23:21:46 -04:00
Matthew Brown
8c0aced195
Add specific check for return type parse issue ref #165
2017-05-29 20:58:49 -04:00
Matthew Brown
93e7486d5e
Reduce line length
2017-05-26 20:17:56 -04:00
Matthew Brown
22a716f4da
Improve formatting of phpdocs
2017-05-26 20:16:18 -04:00
Matthew Brown
d6909193ea
Add additional formatting changes
2017-05-26 20:05:57 -04:00
SignpostMarv
adef59629a
scrutinizer-ci ( #152 )
...
* swapping phpcs for php-cs-fixer
* workaround for php-cs-fixer treating parenthesis following echo as the function call variant
* amending rules
* blank_line_before_return
* majority of files pass with these disabled, could remove later
* combine_consecutive_unsets
* concat_space
* placeholder for if vimeo/psalm ever goes php:^7.0
* function_to_constant
* disabling include
* linebreak_after_opening_tag, lowercase_cast, magic_constant_casing
* mb_str_functions disabled
* method_separation
* native_function_casing
* native_function_invocations
* new_with_braces disabled to match usage
* no_alias_functions
* no_blank_lines_after_class_opening
* no_blank_lines_after_phpdoc
* no_blank_lines_before_namespace
* no_empty_comment
* no_empty_phpdoc
* no_empty_statement
* no_extra_consecutive_blank_lines
* no_leading_import_slash to discuss
* no_leading_namespace_whitespace
* no_mixed_echo_print
* no_multiline_whitespace_around_double_arrow
* no_multiline_whitespace_before_semicolons
* no_php4_constructor
* no_short_bool_cast
* no_short_echo_tag
* no_singleline_whitespace_before_semicolons
* no_spaces_around_offset
* no_trailing_comma_in_list_call
* no_trailing_comma_in_singleline_array
* no_unneeded_control_parentheses to discuss
* no_unreachable_default_argument_value
* no_unused_imports to discuss
* no_useless_else to discuss
* no_useless_return
* no_whitespace_before_comma_in_array
* no_whitespace_in_blank_line
* non_printable_character
* normalize_index_brace
* ordered_class_elements to discuss
* ordered_imports to discss
* php_unit_construct
* php_unit_dedicate_assert
* php_unit_fqcn_annotation
* php_unit_strict to discuss
* php_unit_test_class_requires_covers to discuss
* phpdoc_add_missing_param_annotation
* phpdoc_align to discuss
* phpdoc_annotation_without_dot to discuss
* phpdoc_indent to discuss
* phpdoc_inline_tag
* phpdoc_no_access
* phpdoc_no_alias_tag
* phpdoc_no_empty_return
* phpdoc_no_package
* phpdoc_no_useless_inheritdoc
* phpdoc_order to discuss
* phpdoc_return_self_reference
* phpdoc_scalar to discuss
* phpdoc_separation to discuss
* phpdoc_single_line_var_spacing
* phpdoc_summary to discuss
* phpdoc_to_comment to discuss
* phpdoc_trim to discuss
* phpdoc_types
* phpdoc_var_without_name
* pow_to_exponentiation
* pre_increment to discuss
* protected_to_private
* psr0 turned off
* psr4 turned on
* random_api_migration
* return_type_declaration to discuss
* self_accessor to discuss
* semicolon_after_instruction
* short_scalar_cast
* silenced_deprecation_error turned off
* simplified_null_return to discuss
* single_quote
* space_after_semicolon
* standardize_not_equals
* strict_comparison to discuss
* strict_param to discuss
* ternary_operator_spaces
* ternary_to_null_coalescing should be set to true if vimeo/psalm ever goes php:^7.0
* trailing_comma_in_multiline_array to discuss
* trim_array_spaces
* unary_operator_spaces
* whitespace_after_comma_in_array to discuss
* multi-version scrutinizer to match travis
* binary_operator_space
* not the best solution, but it works to exclude the call map from php-cs-fixer
* reducing verbosity of config where defaults were used
* dry run php-cs-fixer as part of tests
* disabling rule pending FriendsOfPHP/PHP-CS-Fixer#2739
* enabling no_unused_imports
* enabling ordered_imports
* ignoring user-defined .php_cs
* using $TRAVIS_COMMIT_RANGE to only test modified files
* enabling no_leading_import_slash
* conditionally testing everything
* filter output then perform exact match
* restoring phpcs via partial cherry pick of f65c618
2017-05-26 18:26:14 -04:00
Matthew Brown
688a72c794
Fix #36 - emit issues on deprecated properties
2017-05-25 01:32:34 -04:00
Matthew Brown
0fdf281896
Add support for @deprecated classes
2017-05-25 00:34:39 -04:00
Matthew Brown
44b4d04e0a
Fix #95 - emit issue on private constructor calls
2017-05-24 23:55:54 -04:00
Matthew Brown
8f317cd8a2
Fix #133 - emit issue when calling no-constructor class with args
2017-05-24 23:11:40 -04:00
Matthew Brown
f5fc91a506
Remove stray docblock
2017-05-24 22:32:52 -04:00
Matthew Brown
4fd46e1752
Improve formatting
2017-05-24 22:07:49 -04:00