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_ast::{ast, ptr};
|
||||||
use rustc_span::{BytePos, Span};
|
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::lists::*;
|
||||||
use crate::config::{Config, ControlBraceStyle, IndentStyle, MatchArmLeadingPipe, Version};
|
use crate::config::{Config, ControlBraceStyle, IndentStyle, MatchArmLeadingPipe, Version};
|
||||||
use crate::expr::{
|
use crate::expr::{
|
||||||
@ -402,7 +402,11 @@ fn rewrite_match_body(
|
|||||||
let arrow_snippet = context.snippet(arrow_span).trim();
|
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
|
// search for the arrow starting from the end of the snippet since there may be a match
|
||||||
// expression within the guard
|
// 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 = `=>`
|
// 2 = `=>`
|
||||||
let comment_str = arrow_snippet[arrow_index + 2..].trim();
|
let comment_str = arrow_snippet[arrow_index + 2..].trim();
|
||||||
if comment_str.is_empty() {
|
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