This is just the most trivial check: If no inference variables have been
updated, and there are no new obligations, we can just skip trying to
solve them again. We could be smarter about it, but this already helps
quite a bit, and I don't want to touch this too much before we replace
the inference table by Chalk's.
Fixes#8263 (well, improves it quite a bit).
8274: Adding a few more gifs and screenshots for features in manual r=Veykril a=MozarellaMan
Related #8267,#6539. Gifs are [here](https://github.com/rust-analyzer/rust-analyzer/issues/6539#issuecomment-809574840)
Finishing up the last PR, for the last two features that didn't have a visual example.
For syntax highlighting, I wasn't able to find a theme that displayed the difference between an enum and struct, but I only tried a few apart from the default so there could be one out there!
e.g., with the default light theme, `Ord` and `Ordering` in `use std::cmp::{Ord, Ordering}` had the same highlight colour. So I just went with displaying `mut` items being underlined.
Co-authored-by: Ayomide Bamidele <48062697+MozarellaMan@users.noreply.github.com>
8267: Adding gifs and screenshots for features in manual r=matklad a=MozarellaMan
For #6539
This includes most of gif or screenshot examples of most items in the "Features" header. With the exceptions of:
- **On Typing Assists** - couldn't get it to work for a demo, I'm probably missing something?
- **Structural search and replace** - looked to be already a visual example of the feature
- **Workspace symbol** - wasn't sure how best to show this, all of the examples maybe? Also wasn't sure of the best code example to show it off
- **Semantic Syntax Highlighting** - seemed obvious enough to not need a screenshot, but I could easily add this
All the gifs/pngs are hosted in this [comment](https://github.com/rust-analyzer/rust-analyzer/issues/6539#issuecomment-809574840). Please let me know if any of them aren't suitable (and why) and I'll improve it! Or if you don't like the theme/font
Co-authored-by: Ayomide Bamidele <48062697+MozarellaMan@users.noreply.github.com>
8266: Fix generic arguments being incorrectly offset in qualified trait casts r=flodiebold a=Veykril
We reverse the segments and generic args of the lowered path after building it, this wasn't accounted for when inserting the self parameter in `Type as Trait` segments.
Fixes#5886
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
8240: 8024: Added the trait modifier for methods r=Veykril a=chetankhilosiya
method in impls and method calls will have trait modifier.
Trait modifier for constants is remaining.
Co-authored-by: Chetan Khilosiya <chetan.khilosiya@gmail.com>
We have a CLI for benchmarking, but no one actually uses it it seems.
Let's try switching to "internal" benchmarks, implemented as rust tests.
They should be easier to "script" to automate tracking of perf
regressions.
We have a CLI for benchmarking, but no one actually uses it it seems.
Let's try switching to "internal" benchmarks, implemented as rust tests.
They should be easier to "script" to automate tracking of perf
regressions.
8250: More accurately classify assoc. types in paths r=jonas-schievink a=jonas-schievink
Previously `Iterator<Whoops$0 = ()>` would go to the `Iterator` trait. This fixes that and correctly marks `Whoops` as unresolved.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
8247: internal: ensure that runaway type-inference doesn't block the main loop r=flodiebold a=matklad
We have a bug where type-checking `per_query_memory_usage` takes a
couple of seconds. It also reveals another bug: our type inference is
not cancellable.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
We have a bug where type-checking `per_query_memory_usage` takes a
couple of seconds. It also reveals another bug: our type inference is
not cancellable.