File tree Expand file tree Collapse file tree 3 files changed +34
-1
lines changed Expand file tree Collapse file tree 3 files changed +34
-1
lines changed Original file line number Diff line number Diff line change @@ -599,14 +599,16 @@ impl Cursor<'_> {
599
599
if potential_closing. is_none ( ) {
600
600
// a less fortunate recovery if all else fails which finds any dashes preceded by whitespace
601
601
// on a standalone line. Might be wrong.
602
+ let mut base_index = 0 ;
602
603
while let Some ( closing) = rest. find ( "---" ) {
603
604
let preceding_chars_start = rest[ ..closing] . rfind ( "\n " ) . map_or ( 0 , |i| i + 1 ) ;
604
605
if rest[ preceding_chars_start..closing] . chars ( ) . all ( is_horizontal_whitespace) {
605
606
// candidate found
606
- potential_closing = Some ( closing) ;
607
+ potential_closing = Some ( closing + base_index ) ;
607
608
break ;
608
609
} else {
609
610
rest = & rest[ closing + 3 ..] ;
611
+ base_index += closing + 3 ;
610
612
}
611
613
}
612
614
}
Original file line number Diff line number Diff line change
1
+ ---
2
+ //~^ ERROR unclosed frontmatter
3
+ 🦀---
4
+ ---
5
+
6
+ // This test checks the location of the --- recovered by the parser is not
7
+ // incorrectly tracked during the less fortunate recovery case and multiple
8
+ // candidates are found, as seen with #146847
9
+
10
+ #![ feature ( frontmatter) ]
11
+
12
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ error: unclosed frontmatter
2
+ --> $DIR/unclosed-6.rs:1:1
3
+ |
4
+ LL | / ---
5
+ LL | |
6
+ LL | | 🦀---
7
+ LL | | ---
8
+ ... |
9
+ LL | |
10
+ | |_^
11
+ |
12
+ note: frontmatter opening here was not closed
13
+ --> $DIR/unclosed-6.rs:1:1
14
+ |
15
+ LL | ---
16
+ | ^^^
17
+
18
+ error: aborting due to 1 previous error
19
+
You can’t perform that action at this time.
0 commit comments