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