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
Matt Brown
d185253396
Don’t throw exception if classloader hasn’t been set
2018-03-06 17:30:54 -05:00
Matt Brown
4248cacbaf
Flesh out template type before replacing
2018-03-06 14:23:41 -05:00
Matt Brown
6d767de043
Ignore nullable class strings where appropriate
2018-03-06 14:11:32 -05:00
Matt Brown
fac5554e13
Fix errors around static class constants in template vars
2018-03-06 13:59:59 -05:00
Matt Brown
b664c85642
Add new issue conditional on config flag
2018-03-06 12:19:50 -05:00
Matt Brown
357ad1aa82
Add config flags to allow stricter class invocation checks
2018-03-06 11:20:59 -05:00
Matthew Brown
4074b3fff0
Fix ctype_xdigit
2018-03-05 23:20:55 -05:00
Matthew Brown
123f70fc52
All the ctype functions con take a string or an int
2018-03-05 23:19:12 -05:00
Matt Brown
57bbdc8034
Replace classlike name with more accurate context self
2018-03-05 18:05:12 -05:00
Matt Brown
7c5986de01
Add return type checks for missing classes
2018-03-05 17:46:13 -05:00
Matt Brown
aff689deea
Add support for __CLASS__ in template types
2018-03-05 17:36:08 -05:00
Matt Brown
57c2adb923
Fix #558 - add extra tests around functionality
2018-03-05 17:10:52 -05:00
Matt Brown
850998ed1a
Add class-string type for enforcing use of ::class constants
2018-03-05 16:06:06 -05:00
Matt Brown
d8825701f5
Fix #556 - closure params with defaults can still accept extra
2018-03-05 10:29:19 -05:00
Matthew Brown
a0be2e390a
Fix case of mapping function before analysis
2018-03-05 09:05:38 -05:00
Matthew Brown
67cad2063d
Fix #555 - fix function name mapping class
2018-03-05 09:01:24 -05:00
Matthew Brown
806b032b13
Downgrade UndefinedMethod to PossiblyUndefinedMethod issue when one type has __call defined
2018-03-04 13:23:40 -05:00
Matthew Brown
5f03d08cb2
Remove unused variable
2018-03-04 12:54:00 -05:00
Matthew Brown
a0ce8791d3
Detect fatal issues where property access is overridden
...
Fixes #547
2018-03-04 12:24:50 -05:00
Matthew Brown
9d48585b0e
Fix #552 - fix path that stubs are loaded from
2018-03-03 19:05:15 -05:00
Matthew Brown
3b48f43fdc
Throw exception if function doesn’t exist
2018-03-03 16:52:48 -05:00
Matthew Brown
ecef628e21
Prevent iterating over undefined class
2018-03-03 16:52:04 -05:00
Matthew Brown
6458aa2e91
Remove unused methods
2018-03-03 15:29:13 -05:00
Matthew Brown
b90a58533b
Fix tests and return types
2018-03-03 15:25:35 -05:00
Matthew Brown
ade9e03c85
Use composer autoloader for class resolution where possible
2018-03-03 15:19:05 -05:00
Matthew Brown
9fe4a97851
Fix issue with do
2018-03-03 13:21:52 -05:00
Matthew Brown
e419a8fe01
Exit early when there’s an issue in block-level elements
...
Fixes #550
2018-03-03 13:20:41 -05:00
Matthew Brown
9fd009a61d
Add more debug output for composer classmaps
2018-03-03 12:15:22 -05:00
Matt Brown
276c1a785d
Allow underscores to be ignored by UnusedParam checks
2018-03-02 11:32:34 -05:00
Matthew Brown
d94abc42e8
Fix array location
2018-03-02 08:38:16 -05:00
Matthew Brown
ee6a9b98fb
Allow arrays to be called (ugh)
2018-03-02 00:49:53 -05:00
Matthew Brown
154341577d
Give expected/actual argument counts
2018-03-02 00:07:19 -05:00
Matthew Brown
799e81bc96
Improve callable issue message
2018-03-02 00:03:07 -05:00
Matthew Brown
6fbd8753d5
Fix $function_id when checking for method existence
2018-03-01 23:52:11 -05:00
Matthew Brown
cc19f50c04
Prevent missing classes from confounding callable arg checks
2018-03-01 23:43:52 -05:00
Matthew Brown
6660aa8a00
Fix #548 - check array_map/array_filter args for param matches
2018-03-01 23:33:21 -05:00
Matt Brown
2846e549dd
Fix #546 - allow iterable phpstorm generics
2018-03-01 11:19:23 -05:00
Matt Brown
80864b1ce8
Don’t be concerned about unused params named $_
...
Fixes #540
2018-02-27 11:39:26 -05:00
Matt Brown
1f358e36ef
Fix #544 - remove possibly assigned try vars from catch initialisations
2018-02-27 11:25:27 -05:00
Matthew Brown
115e647c3c
Fix #543 - register static vars properly so their references can be caught
2018-02-26 19:32:26 -05:00
Matt Brown
30c6aa5c68
Add missing spaces
2018-02-26 11:09:17 -05:00
Matt Brown
93b714d7c8
Fix #541 - make array_map on object-like more accurate
2018-02-26 11:01:30 -05:00
Matt Brown
9d165bee7b
Fix generic return type for array_map
...
Ref #541
2018-02-26 10:39:48 -05:00
Matthew Brown
42965bff65
Bust Psalm statements cache when upgrading Psalm version
2018-02-25 11:35:43 -05:00
Matthew Brown
2be2769008
Don’t adhere to assert rules with ored truths
2018-02-25 11:30:45 -05:00
Matthew Brown
47cb74ddd1
Fix issue where namespaced function could be treated as root
2018-02-25 11:13:00 -05:00
Matthew Brown
956972b4a4
Fix #539 - evaluate global variable usage
2018-02-25 10:43:54 -05:00
Matt Brown
ad3fe0974f
Fix indentation
2018-02-23 15:41:07 -05:00
Matt Brown
441506ad6f
Fix #216 - scan assert* functions for assertions, then apply to current context
2018-02-23 15:39:33 -05:00
Matthew Brown
cb1fd308f6
Don’t rescan files when afterVisitClassLike plugin method is active
2018-02-22 22:52:22 -05:00
Matthew Brown
8f2ef50947
Ensure that ClassLikeStorage exists when running plugin method
2018-02-22 22:35:48 -05:00
Matthew Brown
6d658ef934
Fix #535 - always run afterVisitClassLike plugin if given
2018-02-22 22:22:31 -05:00
Matt Brown
95642aafb4
Fix #339 - when a class is also in the callmap, use the user-defined behaviour
2018-02-22 13:42:34 -05:00
Matt Brown
25400e8010
Simplify logic to avoid Psalm bug
2018-02-22 11:57:15 -05:00
Matt Brown
1f7d95dde0
Add better typing rules for generic objects
2018-02-22 11:20:03 -05:00
Matt Brown
09d708981a
Add mixed checks to property __set calls
2018-02-21 19:34:21 -05:00
Matt Brown
5471b89391
Make array coercion an error
2018-02-21 18:59:31 -05:00
Matt Brown
a81c73301b
Warn early if the file being analysed has not been properly scanned
2018-02-21 13:54:11 -05:00
Matt Brown
316dd78e6a
Fix #509 - don’t complain about a missing param type when system parent has one
2018-02-21 11:57:52 -05:00
Matt Brown
e04c4f866c
Fix #524 - prevent fatal error when checking stubbed function from namespace
2018-02-21 11:32:52 -05:00
Matt Brown
9dce508689
Always rescan traits
2018-02-20 13:20:31 -05:00
Matt Brown
cd60786ced
Always use class file path in the cache key to prevent duplicate clashes
2018-02-20 10:56:18 -05:00
Matthew Brown
ec74b82587
Fix #532 - register anonymous classes declared in file too
2018-02-20 09:02:51 -05:00
Matthew Brown
d10212b393
Fix perpetual diff builds
2018-02-19 23:36:36 -05:00
Tyson Andre
cdcec69536
Support the pylint output format
...
This is a compact output format that is easy to write scripts that parse.
(And errors fit on a single line)
- E.g. jenkins violation plugin works reliably with pylint.
The multi-line details are deliberately omitted.
An application can output 'console' to stdout and to
a pylint file at the same time.
Files with the extension .pylint will use this format.
Document the emacs and pylint output formats in `psalm --help`
An optional followup task would be to create unique issue codes,
I don't have any use cases for that.
2018-02-19 22:35:48 -05:00
Matthew Brown
a99e89495b
Add end line/column data for LSP support
2018-02-19 18:16:09 -05:00
Matthew Brown
04a1583783
Fix bad iterator
2018-02-19 17:01:55 -05:00
Tyson Andre
7aeacebba4
Fix possible typos in comments and issue messages
2018-02-19 15:35:13 -05:00
Matthew Brown
82fe241831
Add included files when scanning cached storage
2018-02-19 15:17:28 -05:00
Matthew Brown
d8b9bcba4d
Normalise file path for cache
2018-02-19 12:06:13 -05:00
Matthew Brown
724e72af58
Don’t get statements from cache if file hasn’t changed
2018-02-19 11:53:30 -05:00
Matthew Brown
634375ae94
Make igbinary the default serializer
...
Fix #484 and fix #527
2018-02-19 11:14:07 -05:00
Matthew Brown
81fd016120
Fix #193 - allow caching of storages
2018-02-19 00:27:39 -05:00
Tyson Andre
aea3779c96
Fix unused imports in psalm, wrong param order doc comments ( #523 )
...
(Some of the imports appear as strings elsewhere in the same file)
2018-02-18 17:55:11 -05:00