Matthew Brown
5f47374606
Fix indentation
2018-04-09 21:50:38 -04:00
Matt Brown
7640b00635
Only check functionlike arguments match if we know params
2018-04-09 18:49:11 -04:00
Matt Brown
47255fb19b
Fix array key check after direct assignment
2018-04-09 18:02:45 -04:00
Matt Brown
d3fa972fab
Fix uksort signature too
2018-04-09 16:55:29 -04:00
Matt Brown
7a7bc26ccd
Allow custom sorting methods to only return true/false
2018-04-09 16:54:04 -04:00
Matt Brown
6eabdf326d
Fix display of closure objects
2018-04-09 16:45:54 -04:00
Matt Brown
2b9a2d36cf
Don’t allow non-existent vars to be overridden
2018-04-09 14:32:22 -04:00
Matt Brown
af63d28b56
isset always returns bool
2018-04-09 10:20:18 -04:00
Matt Brown
cf6326f5e6
Fix #658 - empty always returns bool
2018-04-09 10:19:23 -04:00
Matthew Brown
bf7bf1ab3c
Make pcntl_signal sig clearer
2018-04-08 13:08:28 -04:00
Matthew Brown
0b95f1017e
Fix issues with callmap callable types
2018-04-08 12:57:56 -04:00
Matthew Brown
7e3a1ec9c3
Add support for checking callable/closure param types
...
Fixes #580
2018-04-08 12:03:35 -04:00
Matthew Brown
3f4083eac8
Remove blank line
2018-04-08 10:26:04 -04:00
Matthew Brown
797cab22f8
Fix support for Closure(int):int annotation
2018-04-08 10:02:41 -04:00
Matthew Brown
3fe9a0606e
Fix #654 - warn about MixedArgument when inferredType property does not exist
...
And handle str_replace more leniently when args unknown
2018-04-07 15:16:46 -04:00
Matthew Brown
0f0f405b9f
Allow mixed property assignment when the user wants it
...
Fixes #652
2018-04-07 12:13:30 -04:00
Matthew Brown
3771ea206c
Fix #648 - stop scanning when encountering a duplicate class
2018-04-07 11:38:41 -04:00
Matt Brown
60c6bb4021
Fix #650 - be more judicious about inserting mixed into places
2018-04-06 18:28:22 -04:00
Matt Brown
c932ed7764
Fix #651 - allow Psalm to understand assertions on properties of array objects
2018-04-06 16:23:10 -04:00
Matt Brown
6abbc23947
Catch type exception when fixing local type
2018-04-05 17:18:49 -04:00
Matt Brown
81f167df65
Remove bad semicolon
2018-04-05 14:40:41 -04:00
Matt Brown
e97750c761
Check for empty values properly
...
Ref #647
2018-04-05 14:28:33 -04:00
Matt Brown
6d572096d6
Prohibit bad characters from types
2018-04-05 14:11:57 -04:00
Matt Brown
4927dfd337
Fix issue with InvalidArrayOffset from falsable
2018-04-05 13:57:01 -04:00
Matt Brown
0b268eb602
Allow scalars to be empty
2018-04-05 12:11:58 -04:00
Matt Brown
24f307d568
Fix #645 - add isa- prefix for strings as well as class constants
2018-04-05 12:03:36 -04:00
Matthew Brown
78d5adb17d
Make key work with typed arrays
2018-04-05 00:21:14 -04:00
Matt Brown
1282f74931
Allow coercion from generic array to objectlike with possible keys
2018-04-04 18:01:53 -04:00
Matt Brown
4065fa894f
Add numeric to Psalm reserved types
2018-04-04 14:42:23 -04:00
Matt Brown
b4fba8f805
Allow capitalised reserved words
2018-04-04 12:39:05 -04:00
Matthew Brown
03b3a764e3
Fix #641 - allow is_a to operate on strings as well
2018-04-03 23:14:23 -04:00
Matthew Brown
4552e69ef2
Allow classes to be instantiated by their name only
...
Ref #641
2018-04-03 22:20:00 -04:00
Matt Brown
f679900028
Remove aggregate_* methods c/o @weirdan
2018-04-03 11:55:13 -04:00
Scott
35ca719c07
Fix callmap for ext/hash fucntions
...
Fixes #627 -- until PHP < 7.2 support can be dropped, we need to be able to resolve `resource` or `HashContext`.
2018-04-03 11:53:02 -04:00
Jon Ursenbach
f51a5f79ed
pow()
accepts int|float
, not just float
.
2018-04-03 11:52:38 -04:00
Matt Brown
fef56c7633
Fix #639 - add scalar to psalm-recognised types
2018-04-03 11:24:23 -04:00
Matthew Brown
1395299e28
Fix #637 - allow int|string array key types to be compared to mixed
2018-04-02 22:40:29 -04:00
Matthew Brown
4ff7db09f9
Fix var_export return type
...
Fixes #636
2018-04-02 22:19:58 -04:00
Matt Brown
734b6915db
Fix #635 - type combinations should copy over possibly undefined flag
2018-04-02 14:36:33 -04:00
Matthew Brown
faa2d6f2e1
Fix #634 - prevent prefixing objectlike keys with namespaces
2018-04-02 00:39:59 -04:00
Matthew Brown
ef37f0cfe8
Fix #626 - check __invoke methods
2018-03-31 18:57:13 -04:00
Matthew Brown
ca8f2626a2
Remove extraneous function reflection
2018-03-30 20:08:12 -04:00
Matthew Brown
75e59f29ea
Check as many autoloaded files as possible
...
and ignore reflected function docblocks - fixes #629
2018-03-30 20:03:56 -04:00
Matthew Brown
51055eb17e
Add self and static to reserved word list
2018-03-30 19:20:38 -04:00
Matthew Brown
6a6d6465f5
Fix #619 - don’t use capitalised letters to discriminate classes
2018-03-30 19:04:21 -04:00
Matthew Brown
c8c216edb2
Fix #610 - add slightly hacky check for multiple callmap options
2018-03-30 18:51:59 -04:00
Matthew Brown
2a544c3076
Fix #560 - ignore @param $var annotations
2018-03-30 17:46:12 -04:00
Matthew Brown
17b27b31e8
Fix erroneous input/output lines
2018-03-29 10:26:26 -04:00
Matthew Brown
7a0c7f4d1e
Improve handling of ||
...
Ref #630
2018-03-29 02:20:19 -04:00
Matt Brown
3213695c95
Fix off-by-one error
...
Fixes #625
2018-03-27 14:43:39 -04:00
Matt Brown
fd9e783a37
Emit InvalidDocblock for bad static keyword in @var
...
Ref #623
2018-03-27 11:34:48 -04:00
Matthew Brown
5783611366
mixify parse_url return type until I can get a handle on it
2018-03-27 08:24:48 -04:00
Matthew Brown
c0c5966b4c
Fix callable() parsing
2018-03-27 08:21:48 -04:00
Matthew Brown
504a057071
Trap return type parse issues in fixUpLocalType
2018-03-27 08:07:44 -04:00
Matthew Brown
843a8a4e40
Make CallMap have compatible signatures
2018-03-27 08:02:08 -04:00
Matthew Brown
3ef7073862
Add callmap updates from Phan
2018-03-27 01:05:37 -04:00
Matthew Brown
44cccb5b3d
Fix build
2018-03-27 01:05:11 -04:00
Matthew Brown
fb802540d6
Fix variadic format cc @TysonAndre and allow callable param types
...
Ref #580
2018-03-27 00:12:41 -04:00
Matthew Brown
7d7f5d00a1
Prevent duplicate properties
2018-03-26 23:37:35 -04:00
Matthew Brown
58115599a1
Add support for callable(...) syntax
...
Ref #580
2018-03-26 22:13:10 -04:00
Matthew Brown
871a91c850
Add debug-by-line option
2018-03-26 09:08:55 -04:00
Matthew Brown
cad60619c2
Fix callmap signatures from @weirdan
2018-03-25 08:54:05 -04:00
Tyson Andre
04d4c719f9
Sort the call map
...
Psalm's function signature map was based on an old ad hoc sorting order
(Possibly the unix sorting utility?)
Instead, sort by `strtolower(str_replace("'", "\x0", $functionKey))`
(To group classes together, and global functions together, and alternates together,
instead of mixing them)
`phan/phan/internal/internalsignatures.php sort` was used to perform this
sorting (It's hardcoded to expect src/Phan/Internal/FunctionSignatureMap.php, though)
Other changes:
- Add signature for `_()`, which is an alias of gettext()
https://secure.php.net/manual/en/function.gettext.php#refsect1-function.gettext-notes
- etsy/phan -> phan/phan
- Mention that __construct has type void, not the class name.
- nit: Change __halt_compiler to void.
2018-03-25 08:50:04 -04:00
Matthew Brown
74aa376ec7
Fix #617 - catch exception on bad square brackets
2018-03-24 21:02:44 -04:00
Matt Brown
f5ef864168
Improve checks to prevent breaking existing typehints when running psalter
2018-03-23 16:34:45 -04:00
Matt Brown
06e850867d
Allow combined keys to be possibly undefined
2018-03-23 13:14:00 -04:00
Matthew Brown
a4a618c9e5
Fix rules regarding always-defined object-like properties
2018-03-23 01:36:56 -04:00
Matthew Brown
7637eb5075
Allow possibly undefined object-like vars to not cause problems
2018-03-23 01:13:46 -04:00
Matthew Brown
a96ce89e9f
Allow arbitrary bracketing of types
2018-03-22 22:28:06 -04:00
Matthew Brown
c54850aa5b
Revert changes to Type.php
2018-03-22 21:52:36 -04:00
Matthew Brown
5ff6f27178
Fix #615 - numeric-string is always still a string
2018-03-22 21:48:26 -04:00
Matthew Brown
c8fe9e89f3
Fix parsing of array{a:int}[]
...
Fixes #614
2018-03-22 21:21:04 -04:00
François Kooman
b6499c33ed
fix ldap_bind parameters, allow null for bind_rdn and bind_password
2018-03-22 19:09:51 -04:00
Matt Brown
cc3aafe4c4
Improve intersection type parsing
2018-03-22 17:55:36 -04:00
Matthew Brown
ccbe9980f5
Fix issue with nested trait methods
2018-03-21 17:39:01 -04:00
Matthew Brown
49c4dd8a5d
Fix trait method aliasing
2018-03-21 16:55:31 -04:00
Matthew Brown
c2002d0250
Add intersection iteration test
2018-03-21 12:21:46 -04:00
Matthew Brown
1f57876e48
Allow extract array to be passed by ref
2018-03-21 11:14:05 -04:00
Matthew Brown
bc0c4322d5
Allow object-like with all optional vars to be compared to empty array
2018-03-21 10:46:21 -04:00
Matthew Brown
452fd2e7c9
Make UndefinedClass an explicit class-related issue
2018-03-21 10:17:57 -04:00
Matthew Brown
49820b06dd
Prevent variadic args disrupting required closure param count
2018-03-21 09:04:07 -04:00
Matthew Brown
9404de699d
Allow list vars to have array keys
2018-03-21 08:48:30 -04:00
Matthew Brown
be72423980
Check for magic __call when analysing callables
2018-03-21 00:13:57 -04:00
Matthew Brown
7a5d4b8516
Fix the right thing
2018-03-20 23:55:26 -04:00
Matthew Brown
75e76eb327
Perform more granular scan for PossiblyInvalidPropertyAssignmentValue
2018-03-20 23:44:26 -04:00
Matthew Brown
f47012823e
Fix incorrect issue type emitted for static properties
2018-03-20 23:19:26 -04:00
Matthew Brown
b634e1a1b7
Add more refined treatment of InvalidIterator
2018-03-20 22:59:22 -04:00
Matthew Brown
5384f193d1
Allow class and method issues to be suppressed by their identifiers
...
Ref #603
2018-03-20 22:36:03 -04:00
Matthew Brown
837f5d7096
Fix #594 - support intersection types (and catch errors)
2018-03-20 20:56:33 -04:00
Matthew Brown
3f90bceabf
Use objects for type parsing
2018-03-20 20:26:58 -04:00
Matt Brown
24490aac0e
Fix #609 - fix callable coercion in reconciliation step
2018-03-20 13:24:16 -04:00
Matthew Brown
d17058e7d5
Fix #608 - only check callable type if string/array is not also there
2018-03-20 08:58:05 -04:00
Matthew Brown
8dcb878af4
Fix #606 - fatal error when evaluating array_key_exists
2018-03-19 19:14:55 -04:00
Matthew Brown
8ce46aabd2
Allow intersection types in comments
2018-03-18 20:46:45 -04:00
Matthew Brown
8b102d891c
Allow intersection types in callable args
2018-03-18 20:29:41 -04:00
Matthew Brown
5068981902
Show info suppression instructions in output
2018-03-18 18:27:10 -04:00
Matthew Brown
303e3bbf0f
Fix #590 - add error count to stdout
2018-03-18 18:04:50 -04:00
Matthew Brown
cc9ffb36d9
Actually suppress child issues
2018-03-18 17:26:28 -04:00
Matthew Brown
0defe84e01
Allow use of $argv and $argc in function use statements
2018-03-18 17:11:14 -04:00
Matthew Brown
80cf80dbda
Reduce number of InvalidOperand issues further
2018-03-18 16:58:54 -04:00
Matthew Brown
e0bdfeb625
Fix erroneous message for invalid right operands
2018-03-18 16:46:26 -04:00
Matthew Brown
d7a585160f
Add more granular error messages for invalid operands
2018-03-18 16:39:34 -04:00
Matthew Brown
33be97b1f8
Check for to-string casts in strict operands mode
2018-03-18 14:42:23 -04:00
Matthew Brown
f5ee373244
Fix build
2018-03-18 14:23:11 -04:00
Matthew Brown
4b014eaee1
Fix #600 - don’t implicitly convert object name to string
2018-03-18 14:16:47 -04:00
Matthew Brown
6b793db5c6
Allow some intersection types
...
Fixes #600 Ref #594
2018-03-18 13:57:28 -04:00
Matthew Brown
025b7049fd
Allow $argv/$argc to be accessed from namespace
2018-03-18 10:38:08 -04:00
Matthew Brown
28522c4f94
Fix #588 - allow anonymous classes to call $this functions
2018-03-18 01:07:14 -04:00
Matthew Brown
5575ead4b2
Make get_called_class and get_class return class-string pseudotype
...
Fixes #584
2018-03-17 22:11:16 -04:00
Matthew Brown
2e0aded816
Fix issue with empty checks and array_key_exists for property keys
2018-03-17 19:28:01 -04:00
Matthew Brown
b0b3c9287e
Fix array_key_exists calls on possibly undefined objectlike
2018-03-17 19:03:46 -04:00
Matthew Brown
e61815bb72
Fix #458 - fully support optional array keys
2018-03-17 18:05:50 -04:00
Matthew Brown
4175d1a887
Add PossiblyUndefinedVariable warning when using possibly undefined array key
2018-03-17 17:35:36 -04:00
Matthew Brown
61af2a924c
Fix #575 - generated possibly-undefined keys when scanning objectlike return types
...
Ref #458
2018-03-17 16:53:11 -04:00
Matthew Brown
91955f67d0
Fix return
2018-03-17 15:28:41 -04:00
Matthew Brown
3578c49bf2
Add test for #587
2018-03-17 15:02:25 -04:00
Matthew Brown
a51e67018e
Fix #587 - check RHS of assignments for variadic receptors
2018-03-17 15:01:13 -04:00
Matthew Brown
95b5f205c4
Fix #587 - scan all functions for func_get_args
2018-03-17 09:22:28 -04:00
Matthew Brown
eb3750d8f3
Remove unnecessary @var annotations
2018-03-17 00:19:55 -04:00
Matthew Brown
10d18481a2
Add syntax support for optional array types
...
Ref #458
2018-03-16 23:37:10 -04:00
Matt Brown
f806e16c10
Fix #516 - never show issues when finding references
2018-03-16 11:15:07 -04:00
Matt Brown
d6e0708e88
Fix #577 - allow int in second param of strpos
2018-03-15 17:32:03 -04:00
Matt Brown
e5e0c56abc
Don’t remove clauses on mixed, just substitute for wedges
2018-03-15 16:40:22 -04:00
Matt Brown
651b375c62
Fix #579 - improve checks for meta-type negation
2018-03-15 14:25:04 -04:00
Matt Brown
a253463ba8
Use strings for numeric string key offsets
2018-03-15 10:16:11 -04:00
Matthew Brown
d0fc48cfaf
Remove unnecessary whitespace
2018-03-15 00:37:08 -04:00
Matt Brown
822d0a116e
Reflect all numeric types passed to abs
...
Fixes #576
2018-03-14 18:05:36 -04:00
Matt Brown
92ada48433
Allow the iterable pseudo-type to be treated as array|Traversable
...
Fixes #574
2018-03-14 17:50:55 -04:00
Matt Brown
d9ab5e62d6
Prevent unnecessary warnings when checking trait-required methods
2018-03-14 10:51:13 -04:00
Matt Brown
0bd229a86f
Add better checks for trait-related fatal errors
2018-03-13 18:12:05 -04:00
Bruce Weirdan
1dfd103aa2
ReflectionExtension type refinements
...
Added more detailed return types for ReflectionExtension methods, fixed
`isPersistent` method name
2018-03-13 13:53:40 -04:00
Matt Brown
0637e02a6d
Fix build bug
2018-03-13 13:50:53 -04:00
Matt Brown
52b6a5cbde
Fix #571 - fix buggy handling of packed vars
2018-03-13 13:50:41 -04:00
Matt Brown
ef35cfc6fe
Fix #566 - check for abstract methods inheriting from non-abstract ones
2018-03-13 12:52:00 -04:00
Matthew Brown
5cd8b3cccd
Don’t ignore @function calls
...
Fixes #570
2018-03-12 23:48:10 -04:00
Matthew Brown
3059a54768
Fix #569 - fix trait method mapping bug
2018-03-12 23:37:21 -04:00
Matthew Brown
73fadab0b5
Make Phar more robust to object namespace changes
2018-03-12 00:01:52 -04:00
Bruce Weirdan
a1f481d8a2
commented out code cleanup
2018-03-08 19:14:06 -05:00
Bruce Weirdan
12488ea8ed
dropped commented out code, added file_exists() checks for stubs
2018-03-08 19:14:06 -05:00
Bruce Weirdan
32884774e4
build psalm.phar using humbug/box
2018-03-08 19:14:06 -05:00
Matt Brown
b54fb06552
Handle variable paths in a less naive fashion
...
Fixes #564
2018-03-08 15:57:46 -05:00
Matt Brown
19ee843d6c
Emit InvalidOperand if both sides are not numeric
2018-03-08 14:30:40 -05:00
Matt Brown
56bdb924f5
Fix #563 - improve error message and ignore falsable issues for strtotime
2018-03-08 14:04:00 -05:00
Matt Brown
4873228e52
Fix #561 - add all the do-defined vars before checking loop
2018-03-08 11:17:27 -05:00
Matthew Brown
67312be2a9
Fix #562 - allow if/else blocks to initialise vars
2018-03-08 09:30:31 -05:00
Matt Brown
cd521e7ba5
Also flesh out object like array types
2018-03-07 13:54:46 -05:00
Matt Brown
79c373c121
Add more LessSpecificReturnTypeTests
2018-03-07 13:11:36 -05:00
Matt Brown
692edd44c9
Use properly namespaced generic object
2018-03-07 12:00:33 -05:00
Matt Brown
e5ccdc7fa0
Make sure php string from TClassString is accurate
2018-03-07 11:35:48 -05:00
Matt Brown
4bf652863b
Also check for non-false returns on LessSpecificReturnType
2018-03-07 11:16:56 -05:00