diff options
author | Steffen Lyngbaek <[email protected]> | 2020-03-17 06:30:25 +0000 |
---|---|---|
committer | Steffen Lyngbaek <[email protected]> | 2020-03-19 18:47:33 +0000 |
commit | 6087c014608108e2b971608e214a74759743e95e (patch) | |
tree | e85c417d692b496fe1e0f50309e05afc72773915 /crates/ra_assists/src/handlers/add_custom_impl.rs | |
parent | 1ba03c6995015b3143a417ed07437f0c9028a97d (diff) |
'Fill match arms' should work with existing match arms
Addresses #3039
This essentially adds missing match arms. The algorithm for this
can get complicated rather quickly so bail in certain conditions
and rely on a PlaceholderPat.
The algorighm works as such:
- Iterate through the Enum Def Variants
- Attempt to see if the variant already exists as a match arm
- If yes, skip the enum variant. If no, include it.
- If it becomes complicated, rather than exhaustively deal with every
branch, mark it as a "partial match" and simply include the
placeholder.
Conditions for "complication":
- The match arm contains a match guard
- Any kind of nested destrucuring
Order the resulting merged match branches as such:
1. Provided match arms
2. Missing enum variant branch arms
3. End with Placeholder if required
- Add extra tests
Diffstat (limited to 'crates/ra_assists/src/handlers/add_custom_impl.rs')
0 files changed, 0 insertions, 0 deletions