Return empty diagnostics result if there are no syntax errors and rubocop isn't installed #1290
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
In neovim/neovim#26640 we discovered that
ruby-lsp
sometimes sends back a nil response totextDocument/diagnostic
.I tracked this down to when we have a syntactically valid file, and we don't have
rubocop
available, then the diagonstic code returnsnil
.According to the LSP spec, we should return an empty array in this case.
Implementation
Return an empty array if we don't have
Support::RuboCopDiagnosticsRunner
Automated Tests
I added some tests here, but not sure if the way I'm manipulating the
Support
module is good.I also noticed that the number of diagnostics we get back from the tests varies; sometimes we get back just rubocop diagnostics, and sometimes we get back rubocop + sorbet diagnostics.