From e7cdbe795a0eb061ce5b0274d4b3ca3029cfbe18 Mon Sep 17 00:00:00 2001 From: Evgenii P Date: Tue, 30 Jul 2019 20:33:58 +0700 Subject: Fix flip comma assist --- crates/ra_assists/src/flip_comma.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'crates/ra_assists') diff --git a/crates/ra_assists/src/flip_comma.rs b/crates/ra_assists/src/flip_comma.rs index 34489329c..1b7521e8b 100644 --- a/crates/ra_assists/src/flip_comma.rs +++ b/crates/ra_assists/src/flip_comma.rs @@ -7,6 +7,13 @@ pub(crate) fn flip_comma(mut ctx: AssistCtx) -> Option let comma = ctx.token_at_offset().find(|leaf| leaf.kind() == T![,])?; let prev = non_trivia_sibling(comma.clone().into(), Direction::Prev)?; let next = non_trivia_sibling(comma.clone().into(), Direction::Next)?; + + // Don't apply a "flip" in case of a last comma + // that typically comes before punctuation + if next.kind().is_punct() { + return None; + } + ctx.add_action(AssistId("flip_comma"), "flip comma", |edit| { edit.target(comma.text_range()); edit.replace(prev.text_range(), next.to_string()); @@ -35,4 +42,22 @@ mod tests { fn flip_comma_target() { check_assist_target(flip_comma, "fn foo(x: i32,<|> y: Result<(), ()>) {}", ",") } + + #[test] + #[should_panic] + fn flip_comma_before_punct() { + // See https://github.com/rust-analyzer/rust-analyzer/issues/1619 + // "Flip comma" assist shouldn't be applicable to the last comma in enum or struct + // declaration body. + check_assist_target(flip_comma, + "pub enum Test { \ + A,<|> \ + }", ","); + + + check_assist_target(flip_comma, + "pub struct Test { \ + foo: usize,<|> \ + }", ","); + } } -- cgit v1.2.3 From 06c3de310e4a9e82c64eb3e537a2b358ea2a6aed Mon Sep 17 00:00:00 2001 From: Evgenii P Date: Tue, 30 Jul 2019 21:02:29 +0700 Subject: rustfmt --- crates/ra_assists/src/flip_comma.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'crates/ra_assists') diff --git a/crates/ra_assists/src/flip_comma.rs b/crates/ra_assists/src/flip_comma.rs index 1b7521e8b..5ee7561bc 100644 --- a/crates/ra_assists/src/flip_comma.rs +++ b/crates/ra_assists/src/flip_comma.rs @@ -49,15 +49,20 @@ mod tests { // See https://github.com/rust-analyzer/rust-analyzer/issues/1619 // "Flip comma" assist shouldn't be applicable to the last comma in enum or struct // declaration body. - check_assist_target(flip_comma, - "pub enum Test { \ - A,<|> \ - }", ","); - - - check_assist_target(flip_comma, - "pub struct Test { \ - foo: usize,<|> \ - }", ","); + check_assist_target( + flip_comma, + "pub enum Test { \ + A,<|> \ + }", + ",", + ); + + check_assist_target( + flip_comma, + "pub struct Test { \ + foo: usize,<|> \ + }", + ",", + ); } } -- cgit v1.2.3