@@ -19,7 +19,6 @@ use miropt_test_tools::{files_for_miropt_test, MiroptTest, MiroptTestFile};
19
19
use regex:: { Captures , Regex } ;
20
20
use rustfix:: { apply_suggestions, get_suggestions_from_json, Filter } ;
21
21
22
- use std:: borrow:: Cow ;
23
22
use std:: collections:: { HashMap , HashSet } ;
24
23
use std:: env;
25
24
use std:: ffi:: { OsStr , OsString } ;
@@ -730,17 +729,36 @@ impl<'test> TestCx<'test> {
730
729
731
730
/// Replace line numbers in coverage reports with the placeholder `LL`,
732
731
/// so that the tests are less sensitive to lines being added/removed.
733
- fn anonymize_coverage_line_numbers ( coverage : & str ) -> Cow < ' _ , str > {
732
+ fn anonymize_coverage_line_numbers ( coverage : & str ) -> String {
734
733
// The coverage reporter prints line numbers at the start of a line.
735
734
// They are truncated or left-padded to occupy exactly 5 columns.
736
735
// (`LineNumberColumnWidth` in `SourceCoverageViewText.cpp`.)
737
736
// A pipe character `|` appears immediately after the final digit.
738
737
//
739
738
// Line numbers that appear inside expansion/instantiation subviews
740
739
// have an additional prefix of ` |` for each nesting level.
740
+ //
741
+ // Branch views also include the relevant line number, so we want to
742
+ // redact those too. (These line numbers don't have padding.)
743
+ //
744
+ // Note: The pattern `(?m:^)` matches the start of a line.
745
+
746
+ // ` 1|` => ` LL|`
747
+ // ` 10|` => ` LL|`
748
+ // ` 100|` => ` LL|`
749
+ // ` | 1000|` => ` | LL|`
750
+ // ` | | 1000|` => ` | | LL|`
741
751
static LINE_NUMBER_RE : Lazy < Regex > =
742
752
Lazy :: new ( || Regex :: new ( r"(?m:^)(?<prefix>(?: \|)*) *[0-9]+\|" ) . unwrap ( ) ) ;
743
- LINE_NUMBER_RE . replace_all ( coverage, "$prefix LL|" )
753
+ let coverage = LINE_NUMBER_RE . replace_all ( & coverage, "${prefix} LL|" ) ;
754
+
755
+ // ` | Branch (1:` => ` | Branch (LL:`
756
+ // ` | | Branch (10:` => ` | | Branch (LL:`
757
+ static BRANCH_LINE_NUMBER_RE : Lazy < Regex > =
758
+ Lazy :: new ( || Regex :: new ( r"(?m:^)(?<prefix>(?: \|)+ Branch \()[0-9]+:" ) . unwrap ( ) ) ;
759
+ let coverage = BRANCH_LINE_NUMBER_RE . replace_all ( & coverage, "${prefix}LL:" ) ;
760
+
761
+ coverage. into_owned ( )
744
762
}
745
763
746
764
/// Coverage reports can describe multiple source files, separated by
0 commit comments