Releases: rust-lang/rust-analyzer
Releases · rust-lang/rust-analyzer
2021-08-09
Merge #9814 9814: Generate default impl when converting `#[derive(Debug)]` to manual impl r=yoshuawuyts a=yoshuawuyts This patch makes it so when you convert `#[derive(Debug)]` to a manual impl, a default body is provided that's equivalent to the original output of `#[derive(Debug)]`. This should make it drastically easier to write custom `Debug` impls, especially when all you want to do is quickly omit a single field which is `!Debug`. This is implemented for enums, record structs, tuple structs, empty structs - and it sets us up to implement variations on this in the future for other traits (like `PartialEq` and `Hash`). Thanks! ## Codegen diff This is the difference in codegen for record structs with this patch: ```diff struct Foo { bar: String, } impl fmt::Debug for Foo { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - todo!(); + f.debug_struct("Foo").field("bar", &self.bar).finish() } } ``` Co-authored-by: Irina Shestak <[email protected]> Co-authored-by: Yoshua Wuyts <[email protected]> Co-authored-by: Yoshua Wuyts <[email protected]>
2021-08-02
Merge #9750 9750: Link “DST” to its definition r=lnicola a=gthb Being new to Rust I wasn't familiar with this acronym and found it hard to guess (the context of syntax trees biased me to reading it as a D-something Syntax Tree and trying to guess what the D was), hard to google (in retrospect googling "rust dst" does the job, but I thought it was an abstract structure thing, not Rust-specific), and hard to Github-search, because `dst` is commonly short for “destination” in code. Alternatively `<abbr title="dynamically sized type">DST</abbr>` would be about as helpful. Co-authored-by: Gunnlaugur Thor Briem <[email protected]>
2021-07-26
Merge #9691 9691: fix: Keep catch-all arm in fill_match_arms if it has a non-empty expression r=Veykril a=Veykril Fixes #4165 bors r+ Co-authored-by: Lukas Wirth <[email protected]>
2021-07-19
Merge #9619 9619: Support GATs for associated type arg parsing r=Veykril a=Veykril Fixes #9602 Co-authored-by: Lukas Wirth <[email protected]>
2021-07-12
Merge #9569 9569: internal: Explicitly check for reference locals or fields in Name classification r=Veykril a=Veykril Closes #7524 Inlines all the calls to reference related name classification as well as emits both goto definition targets for field shorthands. Co-authored-by: Lukas Wirth <[email protected]>
2021-07-05
Merge #9490 9490: minor: untangle complex condition r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
2021-06-28
Merge #9413 9413: internal: Deduplicate ast expression walking logic r=Veykril a=Veykril Deduplicates the duplication introduced in #9375 and #9396 while also fixing a few bugs in both the assist and related highlighting. Co-authored-by: Lukas Wirth <[email protected]>
2021-06-21
Merge #9346 9346: Refactor / clean up hir_ty tests r=flodiebold a=flodiebold Notable changes: - unify `check_types` and `check_mismatches` into `check`, which supports both kinds of annotations (`check_types` still exists because I didn't want to change all the annotations, but uses the same implementation) - because of that, `check_types` now fails on any type mismatches; also annotations always have to hit the exact range - there's also `check_no_mismatches` for when we explicitly just want to check that there are no type mismatches without giving any annotations (`check` will fail without annotations) - test annotations can now be overlapping (they point to the nearest line that has actual code in that range): ``` // ^^^^ annotation // ^^^^^^^^^ another annotation ``` Co-authored-by: Florian Diebold <[email protected]>
2021-06-14
Merge #9257 9257: internal: diagnostic code is mandatory r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
2021-06-07
Merge #9155 9155: internal: replace attribute with equivalent whitespace r=jonas-schievink a=jonas-schievink This is needed to that the `TokenMap` we create contains offsets that match the source. Currently the offsets don't match because the attribute is removed, shifting all subsequent token offsets by the attribute's text length. Currently this fix has no visible effect because we don't remap tokens in attribute macros. bors r+ Co-authored-by: Jonas Schievink <[email protected]>