6441: Coalesce prime_caches updates r=matklad a=jonas-schievink
This reduces the number of progress bar updates we send to the client by collapsing subsequent updates into one. This doesn't work as well as I'd hoped (which is that we end up sending *no* updates, or only `start` and `end`, when the cache is already fresh), but it does reduce the number considerably: instead of ~720 updates on the rust-analyzer codebase, we now only send ~60.
It uses the same approach that is already in use for coalescing VFS events.
Hopefully this is enough to fix https://github.com/rust-analyzer/rust-analyzer/issues/6413.
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
6438: Deny unreachable-pub r=matklad a=matklad
It's very useful when `pub` is equivalent to "this is crate's public
API", let's enforce this!
Ideally, we should enforce it for local `cargo test`, and only during
CI, but that needs https://github.com/rust-lang/cargo/issues/5034.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
It's very useful when `pub` is equivalent to "this is crate's public
API", let's enforce this!
Ideally, we should enforce it for local `cargo test`, and only during
CI, but that needs https://github.com/rust-lang/cargo/issues/5034.
6416: Respond with JSON-RPC error if we failed to deserialize request r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Historically, we intentinally violated JSON-RPC spec here by hard
crashing. The idea was to poke both the clients and servers to fix
stuff.
However, this is confusing for server implementors, and falls down in
one important place -- protocol extension are not always backwards
compatible, which causes crashes simply due to version mismatch. We
had once such case with our own extension, and one for semantic
tokens.
So let's be less adventerous and just err on the err side!
6415: Upgrade Chalk to 0.36 r=flodiebold a=flodiebold
Quite a few changes, because Chalk got rid of the `ApplicationTy` nesting.
Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
6411: remove FIXME after rust 1.47 comes out r=lnicola a=qy3u
Remove 'FIXME' after rust 1.47 comes out. And for compatibility with versions before 1.47, did't remove 'src'.
Co-authored-by: yuqing <yuqing@ipfsforce.com>
6403: docs: Update Neovim nvim-lspconfig repository link r=lnicola a=rockerBOO
`nvim-lsp` updated their repository to `nvim-lspconfig` to lessen confusion about what it does.
Co-authored-by: Dave Lage <rockerboo@gmail.com>
6396: refactor(hir_ty): do not override DisplayTarget in hir_fmt r=flodiebold a=bnjjj
Linked to bug discovery from #6387
The main goal is to not use `display()` method inside `hir_fmt` to not override any parameters (like `DisplayTarget`).
cc @flodiebold
Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
6394: Smaller inlay hints r=SomeoneToIgnore a=kjeremy
This makes things a lot more readable but isn't officially supported by vscode: https://github.com/Microsoft/vscode/issues/9078
Inspired by Visual Studio, IntelliJ and Resharper.
Co-authored-by: kjeremy <kjeremy@gmail.com>
6387: do not use associated types placeholder for inlay hint r=flodiebold a=bnjjj
close#6191
Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
6384: add doctest runnables on struct r=lnicola a=bnjjj
I will check for how to do the same on trait implementation on another PR.
#6356
Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
6376: Avoid impls_fnonce to return true when the trait solving is ambiguous r=flodiebold a=GrayJack
This PR should fix#6375
This adds a variation of `method_resolution::implements_trait` called `method_resolution::implements_trait_unique`, that only returns true when the trait solving is unique, and also change `impls_fnonce` to use the later instead.
I also added a test just to be sure.
Co-authored-by: GrayJack <gr41.j4ck@gmail.com>