Brown
b6fd821172
Fix broken build
2020-04-17 14:39:33 -04:00
Brown
aa3846758e
Fix #3153 - narrow template types in conditional branches
2020-04-17 09:53:58 -04:00
Brown
e53c79b66e
Break out SimpleNegatedAssertionReconciler
2020-04-17 09:28:42 -04:00
Brown
edc164c549
Simplify conditionals a little
2020-04-17 09:10:33 -04:00
Brown
239234e803
Migrate simple assertions to self-enclosed method
2020-04-17 08:59:15 -04:00
Brown
5ef82b53f6
Fix #3137 - support nested templates in class definitions
2020-04-17 01:16:15 -04:00
Brown
1309eece2e
At the very least interpret nested templates as templates
2020-04-17 00:56:11 -04:00
Anthony Rainer
6f36f33630
Added new language server options and functionality. ( #3161 )
...
* Added new language server options and functionality.
Added new extended diagnostic code information to the language server.
-- It must be enabled via a command line switch.
Added telemetry data for language server initialization and operation.
Added verbose log messages for language server.
-- It must be enabled via a command line switch.
* fixed phpcs issues
* fixed failing tests
* changed the language server reported error code to be the help link
Co-authored-by: Anthony Rainer <0@0ze.ro>
2020-04-17 00:47:18 -04:00
Brown
35d376cbe7
Fix #3164 - allow nested templates in conditional classes
2020-04-17 00:46:27 -04:00
Matthew Brown
6f28ee684a
Fix #3156 - only override existing property types with @property suggestions
2020-04-16 00:22:00 -04:00
Jáchym Toušek
7841581122
Update ext-ds.php ( #3146 )
2020-04-15 07:31:17 -04:00
Brown
2e4aaac5bb
Add better inference for date calls
2020-04-14 21:07:44 -04:00
Brown
fbe0669921
Change evaluation order of conditionals
2020-04-14 21:07:16 -04:00
Matthew Brown
e4bfe9e6be
Fix #3142 - array_unique should remove count info
2020-04-14 11:08:45 -04:00
Brown
d470903722
Make Algebra::negateFormula a little more safe
2020-04-13 08:47:11 -04:00
Brown
a25610cefd
Fix #3133 - prevent crash when analysing isset
2020-04-13 08:34:38 -04:00
Brown
8533b866ab
Simplify template bounds message
...
Ref #3126
2020-04-12 22:19:49 -04:00
Brown
e17cfd8dba
Fix #3125 - only apply clauses where applicable
2020-04-12 21:50:10 -04:00
Brown
633b210a32
Fix test
2020-04-12 21:47:50 -04:00
Brown
73f8f963fa
Expand out class constants as early as possible
...
Fixes #3128
2020-04-12 20:38:36 -04:00
Brown
15df39f72f
Fix #3127 - allow templated param to be accepted where static is expected
2020-04-12 20:09:49 -04:00
Brown
5bc9b095d1
Allow memoisation of ArrayAccess::offsetGet
2020-04-12 14:43:12 -04:00
Brown
5988149272
Prevent checking assertions on $this-> types, always accessible
2020-04-12 14:13:42 -04:00
Brown
9c129f3bac
Suppress issue for now
2020-04-12 14:01:17 -04:00
Brown
547efcc022
Prevent ArrayAccess on object from being memoised
2020-04-12 14:00:12 -04:00
Brown
c733d6d373
Only perform assertions where the property type is known
...
cc @m0003r
2020-04-12 12:56:33 -04:00
Brown
95ec189e0b
Remove Amp stubs
2020-04-12 11:47:10 -04:00
Brown
370ffa28e4
Fix #3117 - invalidate all caches when composer lockfile changes
2020-04-12 11:41:37 -04:00
m0003r
77270dc9b7
Getters automagic ( #3122 )
...
* When method is a plain getter: (1) correct method return type if property type is known (2) auto assert-if-true that corresponding property is not falsy
* do not use getter automagic if getter is overridden somewhere
2020-04-12 08:40:24 -04:00
Brown
ee50542b8f
Allow users to disable caching full files
2020-04-12 08:34:57 -04:00
Brown
9d2957d339
Fix a few more edge-cases
2020-04-12 01:26:11 -04:00
Brown
7dfa37beb2
Improve ergonomics of array assignment
2020-04-11 17:50:24 -04:00
Jose Maria Valera Reales
2fe8717639
Add missing output-format "text" to available formats examples ( #3120 )
2020-04-11 11:18:44 -04:00
Brown
d530fce4b3
Fall through with PossiblyInvalidIterator issue
2020-04-11 11:17:54 -04:00
Brown
739f2c7faf
Fix array key type
2020-04-11 08:12:28 -04:00
Brown
db7447abd7
Make array coercion-to--mixed rules a little more lenient
2020-04-10 16:21:48 -04:00
Brown
672baea6fc
Fix #3116 - allow class to be compared to a templated class-string
2020-04-10 00:26:11 -04:00
Brown
556d5625b5
Prevent Throwable being intersected with itself
2020-04-10 00:10:31 -04:00
Brown
fea1310d67
Fix #3092 - round always returns a float
2020-04-09 23:31:26 -04:00
Brown
f4a6b24e34
Fix style errors
2020-04-09 23:24:52 -04:00
m0003r
1749c19a29
Fix $assertion_var_id calculation in method calls ( #3115 )
2020-04-09 23:03:53 -04:00
Brown
09663b5938
Fix #3095 - allow intersection of arrays after assertions
2020-04-09 23:02:28 -04:00
Brown
13d9354cde
Fix #3107 - prevent bad @method with dash
2020-04-09 12:16:58 -04:00
Brown
3a4dd70403
Prevent MixedMethodCall from generated array offsetGet calls
2020-04-09 11:45:15 -04:00
Brown
bd92ec6cd3
Detect nested issues
2020-04-09 10:42:54 -04:00
Brown
bd2104c5ba
Merge with mixed in nested arrays
2020-04-09 09:27:21 -04:00
m0003r
4d1be3f0c4
Allow plain assertions (@psalm-assert) about $this ( fixes #3105 ) ( #3108 )
...
* Allow plain assertions (@psalm-assert) about $this (fixes #3105 )
* Fix multiple assertion combining
* Fix multiple assertion combining for $this again
* Add test for multiple assertion combining for $this again
2020-04-09 08:15:07 -04:00
Mikko Pesari
184be78405
Update mysqli property maps ( #3114 )
...
From ca92e03c12/src/Phan/Language/Internal/PropertyMap.php
2020-04-09 08:14:09 -04:00
m0003r
28f740fddb
@psalm-trace is now a specific low-level issue, because plain debug print breaks structured output (after #3080 ) ( #3106 )
2020-04-08 21:03:05 -04:00
Brown
d868710b2b
Fix handling of built arrays
2020-04-08 16:11:11 -04:00
Brown
43287812ce
Suppress issue
2020-04-08 14:49:23 -04:00
Brown
b2e010b431
Fix #3102 - identify issues with possibly-mixed output
2020-04-08 14:07:09 -04:00
Brown
a117c48bb2
Add back nuance to error messages for conflicting type bounds
2020-04-08 12:37:46 -04:00
lhchavez
be87bb7300
Support intersection types for object-like arrays ( #3064 )
...
This change allows expressing the intersection of multiple object-like
arrays. The resulting type will contain the (merged via intersection)
properties of all the object-like arrays involved in the intersection.
This should allow to express the resulting type of an `array_merge()`
operation, which is tricky to do in the context of a templated type.
2020-04-08 09:35:53 -04:00
Marco Pivetta
0d1e893151
Added ReflectionProperty#getType()
to psalm type stubs for PHP 7.4+ ( #3093 )
2020-04-08 09:04:49 -04:00
Bruce Weirdan
0161f25ef6
Bump callmap version to 7.4 ( #3094 )
...
The content of the callmap corresponds to 7.4, but internally the
version was set to 7.3. This caused 7.4 delta to be ignored, and 7.4
types to be used for 7.3.
2020-04-08 01:04:34 -04:00
Brown
2d4381eb4e
Fix #3096 - forget clauses in context after call
2020-04-08 01:03:37 -04:00
Brown
5db9f0e8c0
Fix #2722 - change behaviour to inherit params to match just on position
...
And not name + position
2020-04-08 00:54:17 -04:00
Brown
a79122256c
Use conditional return type for range
2020-04-07 19:59:20 -04:00
Brown
69045daea9
Convert a bunch of custom-handled functions to conditional stubbed ones
2020-04-07 16:48:29 -04:00
Brown
550ba0a4c9
Compare to real outer context, not if one
...
Fixes #3091
2020-04-07 15:13:17 -04:00
Brown
61c979136f
Fix #3091 - simplify elseif negated clauses where possible
2020-04-07 13:04:24 -04:00
Brown
41b165c096
Remove stray comma
2020-04-07 11:17:52 -04:00
Brown
067104e170
Fix #3084 - keep track of upper and lower bounds of inferred template types
2020-04-07 00:13:56 -04:00
m0003r
11edb22c72
Implement @psalm-trace annotation, fixes #3079 ( #3080 )
2020-04-06 12:42:22 -04:00
Brown
26fcde10fa
Fix #3081 - use correct property type for ownerDocument
2020-04-06 12:41:18 -04:00
Brown
387bc02e71
Fix #3082 - merge intersection types when replacing template types
2020-04-06 10:19:36 -04:00
Brown
27032e875f
Ensure Generator return types are enforced for a function using yield from
2020-04-06 09:23:13 -04:00
Brown
aca84e6f96
Fix inconsistency in partial template matching
2020-04-05 18:40:25 -04:00
Bruce Weirdan
5be4cc2582
Expose queueClassLikeForScanning ( #3070 )
2020-04-05 17:25:47 -04:00
Mikko Pesari
166b4d04a5
ZipArchive::open() does not return resource ( #3067 )
2020-04-05 14:28:01 -04:00
m0003r
c8e7e43bb0
Type::getString already respects maxStringLength config, there is no need to additional checks ( #3069 )
2020-04-05 14:27:02 -04:00
Matthew Brown
e34a3a9281
Fix handling of old amp
2020-04-05 01:14:26 -04:00
Matthew Brown
4191f7a259
Remove unnecessary annotation
2020-04-05 00:54:31 -04:00
Matthew Brown
f0b4533ba4
Use same sort order regardless of OS
2020-04-05 00:37:46 -04:00
Matthew Brown
05f7c9757a
Write debug to stdout
2020-04-05 00:28:55 -04:00
Matthew Brown
6cea065bca
Attempt to export file order in Linux CI
2020-04-05 00:10:50 -04:00
Matthew Brown
4c52032491
Use mixed if yield type not known
2020-04-04 23:54:41 -04:00
Matthew Brown
120595f480
Clone a little earlier
2020-04-04 23:45:38 -04:00
Brown
c6afa0fef6
Be more explicit about references
2020-04-04 21:48:14 -04:00
Brown
003212fa15
Make sure to record class references even when we don’t know whether the class exists
2020-04-04 21:47:35 -04:00
Brown
81534bbe18
Fix possibly null issue
2020-04-04 18:57:33 -04:00
Brown
2930eb3f99
Prevent storing references to classes from within those classes
2020-04-04 18:42:14 -04:00
Brown
690b29762e
ZipArchive::open can return true cc @LeSuisse
2020-04-04 17:45:26 -04:00
Brown
6b25b33d81
Revert "Stub out str_replace types"
...
This reverts commit 94fefde376
.
2020-04-04 17:38:34 -04:00
Brown
649a33b27b
Remove json_decode stub, because it introduces too many false-positives
2020-04-04 17:23:15 -04:00
Brown
1bf1a6e46b
Accept partial match of template type
2020-04-04 17:14:33 -04:00
Brown
c82834ebe4
Also add back MixedAssignment suppression
2020-04-04 12:15:53 -04:00
Brown
eacb3d7aa0
Add back possibly undefined docblock class suppression
2020-04-04 12:14:53 -04:00
Brown
4b36c4e4bf
Add stub for json_encode
2020-04-04 11:18:24 -04:00
Brown
4aae4fc631
Add slash
2020-04-04 11:16:26 -04:00
Brown
fca6585f6e
Be more lenient when inside isset
2020-04-04 11:15:13 -04:00
Brown
94fefde376
Stub out str_replace types
2020-04-04 11:05:13 -04:00
Brown
b73b75f1a1
Allow newlines in shortcut version of return type provider
2020-04-04 11:04:00 -04:00
Brown
f3d278609e
Remove blank line
2020-04-04 10:14:32 -04:00
Brown
989269a6f6
Ignore issue
2020-04-04 09:39:39 -04:00
Brown
56cc5fb611
Allow shortcut for specifying conditional template types
2020-04-04 09:31:12 -04:00
Brown
eef4feea0b
Throw TypeParseTreeException if template type not recognised
2020-04-04 09:26:19 -04:00
Brown
c0e573ab6a
Try harder to understand templated array_map callable array
...
Fixes #3039
2020-04-03 16:53:56 -04:00
Brown
4f07a8fc5d
Fix false positive in trait comparison in 7.4
...
Fixes #3042
2020-04-03 15:11:37 -04:00
Brown
3c9ec90919
Fix deprecated call
2020-04-03 14:56:11 -04:00
Brown
08594cf712
Always be cloning
2020-04-03 13:56:03 -04:00
orklah
b340f2b0ce
allow psalter to be run without cache ( #3063 )
2020-04-03 12:52:18 -04:00
Matthew Brown
ecac9d56c0
Fix #3061 - prevent array_key_exists from completely changing type
2020-04-03 08:05:21 -04:00
Brown
af4a7cabe9
Fix #3057 and add support for @psalm-yield annotation
2020-04-02 22:38:10 -04:00
Brown
63b35fc889
Fix #3058 - use value for generator inference
2020-04-02 20:37:09 -04:00
Brown
72104a52ad
Improve file invalidation when using --diff mode
2020-04-02 17:18:04 -04:00
LeSuisse
3ecd6bbd00
Fix return type of \zip_open() ( #3046 )
...
This function can return an int [0] or false [1] in case of error.
The return value of ZipArchive has also been fixed, it returns either a
boolean or an int [2][3].
Close vimeo/psalm#3209 .
[0] https://github.com/php/php-src/blob/php-7.4.4/ext/zip/php_zip.c#L1176
[1] https://github.com/php/php-src/blob/php-7.4.4/ext/zip/php_zip.c#L1160
[3] https://github.com/php/php-src/blob/php-7.4.4/ext/zip/php_zip.c#L1483
[4] https://github.com/php/php-src/blob/php-7.4.4/ext/zip/php_zip.c#L1478
2020-04-01 17:12:45 -04:00
Brown
fa43d3a8ff
Don’t check stub files for non-unused-code checks
2020-04-01 16:31:28 -04:00
Brown
ba8e5e8209
Fix diff file load order
2020-04-01 15:57:25 -04:00
Brown
943d10854d
Clear existing issues before re-adding
2020-04-01 15:30:35 -04:00
Brown
04a49102ec
Small test improvements
2020-04-01 12:56:32 -04:00
Brown
fa28d767fc
Prevent a templated type from hitting covariance checks
2020-04-01 10:53:40 -04:00
Brown
5876635d6d
Always be clonin
2020-04-01 00:45:29 -04:00
Brown
001f064bd4
Don’t modify contents of IssueBuffer in baseline before caching
2020-03-31 23:38:58 -04:00
Brown
1a678068b7
Consolidate conditionals
2020-03-31 23:05:20 -04:00
Brown
fc06250678
Add number_format slash
2020-03-31 22:52:39 -04:00
Brown
8328c1d3aa
Fix build
2020-03-31 22:32:48 -04:00
Matthew Brown
66dd794101
Add return function
2020-03-31 22:26:48 -04:00
Brown
4ef7cb50a5
Make Psalm faster when there aren’t any changes whatsoever
2020-03-31 22:22:34 -04:00
Brown
d5f43e52e7
Fix coercion
2020-03-31 16:57:08 -04:00
Brown
191a3febac
Return all cached errors not in analyzed files
2020-03-31 16:56:22 -04:00
Brown
cc38f25ed7
Don’t remove non-method issues
2020-03-31 16:33:05 -04:00
Brown
da729cfbc6
Don’t check params when mutations are being collected
2020-03-31 15:49:43 -04:00
Brown
ddc8c50d2a
Prevent some inheritance issues
2020-03-31 11:28:36 -04:00
Brown
687ce87995
Ensure issues from unused classes & params is always saved to cache
2020-03-31 09:56:27 -04:00
Matthew Brown
b46e147735
Add some limits on switch case assertion calculation
...
Ref #2728
2020-03-30 00:20:00 -04:00
Matthew Brown
4fe36a21a4
Use array_pop, not array_shift, because it’s a bit faster
2020-03-29 19:47:40 -04:00
Matthew Brown
1b88316c51
Convert method from recursive to inline
2020-03-29 19:42:22 -04:00
Matthew Brown
d84c5db7ae
Prevent complexity explosion a little earlier
2020-03-29 17:12:10 -04:00
Matthew Brown
82197f1761
Add many slashes
2020-03-29 15:56:45 -04:00
Matthew Brown
ce3532490c
Add profiling for analysing slow methods
2020-03-29 15:42:00 -04:00
Matthew Brown
194f02507d
Allow conditional types to reference class constants
2020-03-29 13:37:37 -04:00
Matthew Brown
1b2017e4f4
Add slash
2020-03-29 10:44:38 -04:00
Matthew Brown
5ad55ae693
Fix type inference on simple conditional function calls
2020-03-29 10:42:57 -04:00
Matthew Brown
0e919a0696
Allow arithmetic on simple templated types
2020-03-29 10:34:46 -04:00
Matthew Brown
f097b9ae6c
Add better reconciliation of ints from array keys
2020-03-29 10:22:22 -04:00
Matthew Brown
788da0680e
Allow var_export userland implementation
2020-03-29 10:19:09 -04:00
Matthew Brown
1439c90789
Add support for conditional checks on literal ints & strings
2020-03-29 10:02:24 -04:00
Matthew Brown
7fdccc0439
Fix #3014 - change constant class access rules
2020-03-29 09:47:29 -04:00
Matthew Brown
39f7296670
Fix #2191 - allow inheritance from stub-only files
2020-03-29 00:13:01 -04:00
Matthew Brown
e85d22f004
Fix #3033 - allow __invoke on unions with non-objects
2020-03-28 23:41:05 -04:00
Matthew Brown
5395183837
Use more accurate means of determining whether function did return
2020-03-28 23:37:42 -04:00
Matthew Brown
7195ea6842
Fix #3030 - don’t suggest return types can do more
2020-03-28 23:15:54 -04:00
Brown
1c8581f4db
Add more fields to API existence checks
2020-03-28 21:39:44 -04:00
Matthew Brown
93735712f0
Fix #3032 - always replay docblock issues when analysing files
2020-03-28 19:54:55 -04:00
Matthew Brown
86a89b2d27
Fix #3034 - expand out while expressions for more accurate variable initialisation
2020-03-28 18:22:08 -04:00
Matthew Brown
de6aee32d1
Fix #3035 - improve templating for property assignments
2020-03-28 17:18:21 -04:00
Matthew Brown
47c1470e3b
Refactor reference checks to use more appropriate properties
2020-03-28 16:30:56 -04:00
Brown
cc548a45fa
Improve detection of unused classes
2020-03-28 14:45:58 -04:00
Brown
60613462fe
Improve static resolution a little more
2020-03-28 08:14:35 -04:00
Brown
5835c34a29
Expand out static extra types
2020-03-28 00:08:31 -04:00
Brown
e3ff856cac
Improve treatment of static in intersection
2020-03-27 19:17:44 -04:00
Brown
5cb1538448
Don’t add unnecessary taints
2020-03-27 19:09:15 -04:00
Brown
056f4aaac6
Fix #3027 - inherited properties should be templated properly
2020-03-27 18:31:48 -04:00
Brown
b57563c8cf
Renamed function to be a little better
2020-03-27 18:30:59 -04:00
Tyson Andre
e560858b23
Fix grammar nit in "is can never happen" message ( #3025 )
...
Should either be "is impossible" or "can never happen"
2020-03-27 17:32:49 -04:00
Brown
4021114b04
Fix too-long line
2020-03-27 10:43:12 -04:00
Brown
ae31ec6805
Fix resolution of get_called_class
2020-03-27 09:51:53 -04:00
Brown
3253f57c94
Don’t rescan everything when finding unused code
2020-03-27 09:45:54 -04:00
Brown
05f8f30d8c
Use more specific type description
2020-03-27 09:45:18 -04:00
Brown
031c5be8e6
Check trait methods better
2020-03-27 00:37:33 -04:00
Brown
53612d0df6
Make --diff imply --diff-methods
2020-03-26 18:14:54 -04:00
Brown
75432536f7
Add slashes
2020-03-26 14:43:48 -04:00
Brown
f88c7c1ec5
Fix closure return type inference
2020-03-26 14:38:32 -04:00
Brown
820bd95d8b
Fix existing issue check
2020-03-26 14:25:11 -04:00
Brown
4ced26bec2
Fix #3024 - replay errors in --diff --diff-methods mode
2020-03-26 14:22:06 -04:00
Brown
971ae50bea
Do prep work for #3024 - improve handling of absent class references
2020-03-26 12:35:27 -04:00
Matthew Brown
68c95c622a
Save information about last runs whether or not there were errors
2020-03-26 00:46:39 -04:00
m0003r
71826ad69e
Fix #2994 ( #3016 )
...
More carefully handling stream_select errors when system call is interrupted. It can be detected by parsing error message. If it is interrupted, just try again.
2020-03-25 21:25:33 -04:00
Matthew Brown
f94ab22a5f
Be better about strict inference
2020-03-25 09:18:49 -04:00
Matthew Brown
4734583444
Don’t overwrite already-defined template
2020-03-24 23:40:01 -04:00
Brown
467da32f84
Fix instanceof static and isa (static::class) handling
2020-03-24 18:58:15 -04:00
iggyvolz
94b246b987
Initial commit ( #3013 )
2020-03-24 18:32:57 -04:00
Brown
a9b6c51748
Improve new $class to make it more static-y
2020-03-24 18:30:08 -04:00
Brown
1bfc61d402
Allow final classes to bypass static checks
2020-03-24 18:14:10 -04:00
Brown
ec34a16291
Warn about invalid static returns
2020-03-24 18:00:20 -04:00
Brown
f6759c3d16
Check return statement types for inherited docblocks
2020-03-24 17:59:48 -04:00
Brown
1e480ade12
Fix bugs
2020-03-24 14:49:05 -04:00
Brown
cae15b6c62
Use appropriate template types when applying array_filter asssertions
...
Fixes #3008
2020-03-24 12:15:56 -04:00
Brown
25bd2ed5fb
Fix #3010 - prevent false-negative after calling isset on possibly-false array
2020-03-24 12:01:39 -04:00
Brown
a83651050c
Seal objectlike arrays inferred from constants
2020-03-23 16:28:20 -04:00
Brown
a7245b4459
Fix bugs
2020-03-23 13:29:00 -04:00
Matthew Brown
27a0651b6c
Fix #3009 - make sure return type is set when returning early
2020-03-23 13:25:55 -04:00
Matthew Brown
ce9eef9ed7
Improve returning
2020-03-23 13:25:55 -04:00
Brown
4c081f7835
Things with mixed values can be the same
2020-03-23 12:08:05 -04:00
Matthew Brown
eeed5ecccc
Only prevent AbstractMethodCall on direct calls
...
Fixes #3007
2020-03-23 07:40:30 -04:00
Matthew Brown
6058725256
Add prototype for conditional return type
2020-03-22 10:44:48 -04:00
Matthew Brown
26694345d6
Fix unknown variable
2020-03-21 20:53:46 -04:00
Matthew Brown
6746f1c047
Fix #3004 - reset property types inside a closure defined in a class
2020-03-21 20:46:38 -04:00
Matthew Brown
c986cdf12e
Allow edge-case of by-reference assignment with unitiliazed property
...
Fixes #3003
2020-03-21 19:23:32 -04:00
Niklas Keller
a7affbe716
Add \Error stub ( #3002 )
...
Otherwise, errors are generated if \Error is extended: https://psalm.dev/r/8169465beb
2020-03-21 19:11:23 -04:00
Niklas Keller
dd9924ea26
Fix Generator::throw return type ( #3001 )
2020-03-21 19:08:47 -04:00
LeSuisse
6353b614fa
$ignore parameter of \sodium_base642bin() is optional ( #2997 )
...
https://github.com/php/php-src/blob/php-7.3.15/ext/sodium/libsodium.c#L2775
2020-03-20 21:09:45 -04:00
Matthew Brown
44713a48ac
Add default shortcode
2020-03-20 14:41:25 -04:00
Matthew Brown
a237ba307c
Use simpler method for generating links
2020-03-19 17:12:16 -04:00
Matthew Brown
fa2adfe1b3
Add slashes
2020-03-19 16:35:04 -04:00
Matthew Brown
4e07dfebaa
Make link part of IssueData so it’s available to all consumers
2020-03-19 16:22:43 -04:00
Matthew Brown
f532dc316c
Add informational links to Psalm‘s output
...
Fixes #2978
2020-03-19 16:04:40 -04:00
Matthew Brown
89a3af54a6
Add slash
2020-03-18 21:53:44 -04:00