aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/utils.rs
diff options
context:
space:
mode:
authorSteffen Lyngbaek <[email protected]>2020-03-17 06:30:25 +0000
committerSteffen Lyngbaek <[email protected]>2020-03-19 18:47:33 +0000
commit6087c014608108e2b971608e214a74759743e95e (patch)
treee85c417d692b496fe1e0f50309e05afc72773915 /crates/ra_hir_ty/src/utils.rs
parent1ba03c6995015b3143a417ed07437f0c9028a97d (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_hir_ty/src/utils.rs')
0 files changed, 0 insertions, 0 deletions