467a040509
3623: 'Fill match arms' should work with existing match arms r=matklad a=slyngbaek 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 Co-authored-by: Steffen Lyngbaek <steffenlyngbaek@gmail.com> |
||
---|---|---|
.. | ||
ra_arena | ||
ra_assists | ||
ra_cargo_watch | ||
ra_cfg | ||
ra_db | ||
ra_fmt | ||
ra_hir | ||
ra_hir_def | ||
ra_hir_expand | ||
ra_hir_ty | ||
ra_ide | ||
ra_ide_db | ||
ra_mbe | ||
ra_parser | ||
ra_prof | ||
ra_project_model | ||
ra_syntax | ||
ra_text_edit | ||
ra_tt | ||
rust-analyzer | ||
test_utils |