Cleanup
This commit is contained in:
parent
c9e1aab880
commit
45dd90b0e8
1 changed files with 12 additions and 11 deletions
|
@ -1,6 +1,7 @@
|
||||||
use crate::{Assist, AssistCtx, AssistId, TextRange, TextUnit};
|
|
||||||
use hir::db::HirDatabase;
|
use hir::db::HirDatabase;
|
||||||
use ra_syntax::ast::{AstNode, MatchArm};
|
use ra_syntax::ast::{self, AstNode};
|
||||||
|
|
||||||
|
use crate::{Assist, AssistCtx, AssistId, TextRange, TextUnit};
|
||||||
|
|
||||||
// Assist: merge_match_arms
|
// Assist: merge_match_arms
|
||||||
//
|
//
|
||||||
|
@ -27,12 +28,12 @@ use ra_syntax::ast::{AstNode, MatchArm};
|
||||||
// }
|
// }
|
||||||
// ```
|
// ```
|
||||||
pub(crate) fn merge_match_arms(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
|
pub(crate) fn merge_match_arms(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
|
||||||
let current_arm = ctx.find_node_at_offset::<MatchArm>()?;
|
let current_arm = ctx.find_node_at_offset::<ast::MatchArm>()?;
|
||||||
|
|
||||||
// We check if the following match arm matches this one. We could, but don't,
|
// We check if the following match arm matches this one. We could, but don't,
|
||||||
// compare to the previous match arm as well.
|
// compare to the previous match arm as well.
|
||||||
let next = current_arm.syntax().next_sibling();
|
let next = current_arm.syntax().next_sibling();
|
||||||
let next_arm = MatchArm::cast(next?)?;
|
let next_arm = ast::MatchArm::cast(next?)?;
|
||||||
|
|
||||||
// Don't try to handle arms with guards for now - can add support for this later
|
// Don't try to handle arms with guards for now - can add support for this later
|
||||||
if current_arm.guard().is_some() || next_arm.guard().is_some() {
|
if current_arm.guard().is_some() || next_arm.guard().is_some() {
|
||||||
|
@ -53,13 +54,6 @@ pub(crate) fn merge_match_arms(ctx: AssistCtx<impl HirDatabase>) -> Option<Assis
|
||||||
let cursor_to_end = current_arm.syntax().text_range().end() - ctx.frange.range.start();
|
let cursor_to_end = current_arm.syntax().text_range().end() - ctx.frange.range.start();
|
||||||
|
|
||||||
ctx.add_assist(AssistId("merge_match_arms"), "Merge match arms", |edit| {
|
ctx.add_assist(AssistId("merge_match_arms"), "Merge match arms", |edit| {
|
||||||
fn contains_placeholder(a: &MatchArm) -> bool {
|
|
||||||
a.pats().any(|x| match x {
|
|
||||||
ra_syntax::ast::Pat::PlaceholderPat(..) => true,
|
|
||||||
_ => false,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let pats = if contains_placeholder(¤t_arm) || contains_placeholder(&next_arm) {
|
let pats = if contains_placeholder(¤t_arm) || contains_placeholder(&next_arm) {
|
||||||
"_".into()
|
"_".into()
|
||||||
} else {
|
} else {
|
||||||
|
@ -83,6 +77,13 @@ pub(crate) fn merge_match_arms(ctx: AssistCtx<impl HirDatabase>) -> Option<Assis
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn contains_placeholder(a: &ast::MatchArm) -> bool {
|
||||||
|
a.pats().any(|x| match x {
|
||||||
|
ra_syntax::ast::Pat::PlaceholderPat(..) => true,
|
||||||
|
_ => false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::merge_match_arms;
|
use super::merge_match_arms;
|
||||||
|
|
Loading…
Reference in a new issue