about summary refs log tree commit diff
path: root/docs/dev
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-02-05 14:28:25 +0000
committerGitHub <noreply@github.com>2021-02-05 14:28:25 +0000
commitb89fef522043f0fe4dc1977059b70bbd20d6fd75 (patch)
treef9cc2fc85cd7233351c897f725585efe55b867c6 /docs/dev
parent5009958847efa5d3cd85f2a9a84074069ca2088d (diff)
parentdfd751303ec6336a4a78776eb8030790b7b0b000 (diff)
downloadrust-b89fef522043f0fe4dc1977059b70bbd20d6fd75.tar.gz
rust-b89fef522043f0fe4dc1977059b70bbd20d6fd75.zip
Merge #7562
7562: add `generate_enum_match` assist r=matklad a=yoshuawuyts

This adds a `generate_enum_match` assist, which generates `is_` variants for enums (e.g. `Option::{is_none,is_some}` in std). This is my first attempt at contributing to Rust-Analyzer, so I'm not sure if I've gotten everything right. Thanks!

## Example

**Input**
```rust
pub(crate) enum Variant {
    Undefined,
    Minor, // cursor here
    Major,
}
```
**Output**
```rust
pub(crate) enum Variant {
    Undefined,
    Minor,
    Major,
}

impl Variant {
    pub(crate) fn is_minor(&self) -> bool {
        matches!(self, Self::Minor)
    }
}
```

## Future Directions

I made this as a stepping stone for some of the more involved refactors (e.g. #5944). I'm not sure yet how to create, use, and test `window.showQuickPick`-based asssists in RA. But once that's possible, it'd probably be nice to be able to generate match methods in bulk through the quickpick UI rather than one-by-one:

```
[x] Select enum members to generate methods for. (3 selected) [ OK ]
---------------------------------------------------------------------------
[x] Undefined
[x] Minor
[x] Major
```

Co-authored-by: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
Diffstat (limited to 'docs/dev')
0 files changed, 0 insertions, 0 deletions