Fix failure with =>
in comment after match =>
(#6092)
* Find arrow with find_last_uncommented * Add version gate for arrow finding fix
This commit is contained in:
parent
73c81495cd
commit
9580747a76
@ -5,7 +5,7 @@
|
||||
use rustc_ast::{ast, ptr};
|
||||
use rustc_span::{BytePos, Span};
|
||||
|
||||
use crate::comment::{combine_strs_with_missing_comments, rewrite_comment};
|
||||
use crate::comment::{combine_strs_with_missing_comments, rewrite_comment, FindUncommented};
|
||||
use crate::config::lists::*;
|
||||
use crate::config::{Config, ControlBraceStyle, IndentStyle, MatchArmLeadingPipe, Version};
|
||||
use crate::expr::{
|
||||
@ -402,7 +402,11 @@ fn rewrite_match_body(
|
||||
let arrow_snippet = context.snippet(arrow_span).trim();
|
||||
// search for the arrow starting from the end of the snippet since there may be a match
|
||||
// expression within the guard
|
||||
let arrow_index = arrow_snippet.rfind("=>").unwrap();
|
||||
let arrow_index = if context.config.version() == Version::One {
|
||||
arrow_snippet.rfind("=>").unwrap()
|
||||
} else {
|
||||
arrow_snippet.find_last_uncommented("=>").unwrap()
|
||||
};
|
||||
// 2 = `=>`
|
||||
let comment_str = arrow_snippet[arrow_index + 2..].trim();
|
||||
if comment_str.is_empty() {
|
||||
|
10
tests/source/arrow_in_comments/arrow_in_single_comment.rs
Normal file
10
tests/source/arrow_in_comments/arrow_in_single_comment.rs
Normal file
@ -0,0 +1,10 @@
|
||||
// rustfmt-version: Two
|
||||
fn main() {
|
||||
match a {
|
||||
_ =>
|
||||
// comment with =>
|
||||
{
|
||||
println!("A")
|
||||
}
|
||||
}
|
||||
}
|
14
tests/source/arrow_in_comments/multiple_arrows.rs
Normal file
14
tests/source/arrow_in_comments/multiple_arrows.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// rustfmt-version: Two
|
||||
fn main() {
|
||||
match a {
|
||||
_ => // comment with =>
|
||||
match b {
|
||||
// one goes to =>
|
||||
one => {
|
||||
println("1");
|
||||
}
|
||||
// two goes to =>
|
||||
two => { println("2"); }
|
||||
}
|
||||
}
|
||||
}
|
10
tests/target/arrow_in_comments/arrow_in_single_comment.rs
Normal file
10
tests/target/arrow_in_comments/arrow_in_single_comment.rs
Normal file
@ -0,0 +1,10 @@
|
||||
// rustfmt-version: Two
|
||||
fn main() {
|
||||
match a {
|
||||
_ =>
|
||||
// comment with =>
|
||||
{
|
||||
println!("A")
|
||||
}
|
||||
}
|
||||
}
|
19
tests/target/arrow_in_comments/multiple_arrows.rs
Normal file
19
tests/target/arrow_in_comments/multiple_arrows.rs
Normal file
@ -0,0 +1,19 @@
|
||||
// rustfmt-version: Two
|
||||
fn main() {
|
||||
match a {
|
||||
_ =>
|
||||
// comment with =>
|
||||
{
|
||||
match b {
|
||||
// one goes to =>
|
||||
one => {
|
||||
println("1");
|
||||
}
|
||||
// two goes to =>
|
||||
two => {
|
||||
println("2");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user