rust/crates
bors[bot] d75a46852a
Merge #11686
11686: feat: Enum variant field completion, enum variant / struct consistency r=Veykril a=m0rg-dev

This addresses several related inconsistencies:
 - tuple structs use tab stops instead of placeholders
 - tuple structs display in the completion menu as `Struct {…}` instead of `Struct(…)`
 - enum variants don't receive field completions at all
 - enum variants display differently from structs in the completion menu

Also, structs now display their type in the completion detail rather than the raw snippet text to be inserted.

As far as what's user-visible, that looks like this:

| | Menu | Completion | Detail |
|-|-|-|-|
| Record struct (old) | `Struct {…}` | `Struct { x: ${1:()}, y: ${2:()} }$0` | `Struct { x: ${1:()}, y: ${2:()} }$0` |
| Record struct (new) | `Struct {…}` | `Struct { x: ${1:()}, y: ${2:()} }$0` | `Struct { x: i32, y: i32 }` |
| Tuple struct (old) | `Struct {…}`  | `Struct($1, $2)$0` | `Struct($1, $2)` |
| Tuple struct (new) | `Struct(…)` | `Struct(${1:()}, ${2:()})$0` | `Struct(i32, i32)` |
| Unit variant (old) | `Variant` | `Variant` | `()` |
| Unit variant (new) | `Variant` | `Variant$0` | `Variant` |
| Record variant (old) | `Variant` | `Variant` | `{x: i32, y: i32}` |
| Record variant (new) | `Variant {…}` | `Variant { x: ${1:()}, y: ${2:()} }$0` | `Variant { x: i32, y: i32 }` |
| Tuple variant (old) | `Variant(…)` | `Variant($0)` | `(i32, i32)` |
| Tuple variant (new) | `Variant(…)` | `Variant(${1:()}, ${2:()})$0` | `Variant(i32, i32)` |

Additionally, tuple variants no longer set `triggers_call_info` because it conflicts with placeholder generation, and tuple variants that require a qualified path should now use the qualified path.

Internally, this also lets us break the general "format an item with fields on it" code out into a shared module, so that means it'll be a lot easier to implement features like #11568.


Co-authored-by: Morgan Thomas <corp@m0rg.dev>
2022-03-12 13:05:45 +00:00
..
base_db fix: Properly handle proc-macro crate types for nameres 2022-03-09 14:33:39 +01:00
cfg Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
flycheck Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
hir fix: Show what file paths were expected for unresolved modules 2022-03-11 17:08:30 +01:00
hir_def fix: Show what file paths were expected for unresolved modules 2022-03-11 17:08:30 +01:00
hir_expand Expand into pseudo-derive attribute expansions in completions 2022-03-10 20:53:50 +01:00
hir_ty Merge #11660 2022-03-09 17:18:03 +00:00
ide fix: Allow configuration of colons in inlay-hints 2022-03-11 21:15:36 +01:00
ide_assists Expand into pseudo-derive attribute expansions in completions 2022-03-10 20:53:50 +01:00
ide_completion Merge #11686 2022-03-12 13:05:45 +00:00
ide_db Expand into pseudo-derive attribute expansions in completions 2022-03-10 20:53:50 +01:00
ide_diagnostics fix: Show what file paths were expected for unresolved modules 2022-03-11 17:08:30 +01:00
ide_ssr Disable one of the failing SSR test cases 2022-03-09 02:08:44 +01:00
limit Use compare_exchange_weak in limit::Limit::check 2022-01-28 18:19:35 +03:00
mbe Do not consider _ to be an expression for macro_rules! 2022-03-02 01:51:25 +00:00
parser refactor: Rename and move const_arg_path 2022-03-11 22:28:38 +00:00
paths Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
proc_macro_api Set current working directory for procedural macros 2022-01-27 16:18:12 +03:00
proc_macro_srv fix: Fix proc-macro server not using the supplied span in Ident::new 2022-01-31 17:02:57 +01:00
proc_macro_test Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
profile Generate AnyHasDocComments node 2022-01-07 12:38:18 +01:00
project_model Update project_model test outputs 2022-03-09 22:34:42 +01:00
rust-analyzer minor: add missing definitions of lsp_ext::InlayHintLabel 2022-03-12 01:08:33 +01:00
sourcegen Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
stdx Generate AnyHasDocComments node 2022-01-07 12:38:18 +01:00
syntax Don't parse source files to generate macro completion details 2022-03-10 22:21:58 +01:00
test_utils fix: Allow configuration of colons in inlay-hints 2022-03-11 21:15:36 +01:00
text_edit redirct: use iterators and knowledge about preordered arrays for more efficient merging 2022-02-28 05:56:51 +01:00
toolchain Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
tt Track synthetic tokens, to be able to remove them again later 2022-02-08 18:13:18 +01:00
vfs Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
vfs-notify Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00