2727use super :: counters;
2828use super :: graph:: { self , BasicCoverageBlock } ;
2929
30- use coverage_test_macros:: let_bcb;
31-
3230use itertools:: Itertools ;
3331use rustc_data_structures:: graph:: WithNumNodes ;
3432use rustc_data_structures:: graph:: WithSuccessors ;
@@ -37,6 +35,10 @@ use rustc_middle::mir::*;
3735use rustc_middle:: ty;
3836use rustc_span:: { self , BytePos , Pos , Span , DUMMY_SP } ;
3937
38+ fn bcb ( index : u32 ) -> BasicCoverageBlock {
39+ BasicCoverageBlock :: from_u32 ( index)
40+ }
41+
4042// All `TEMP_BLOCK` targets should be replaced before calling `to_body() -> mir::Body`.
4143const TEMP_BLOCK : BasicBlock = BasicBlock :: MAX ;
4244
@@ -300,12 +302,15 @@ fn goto_switchint<'a>() -> Body<'a> {
300302 mir_body
301303}
302304
303- macro_rules! assert_successors {
304- ( $basic_coverage_blocks: ident, $i: ident, [ $( $successor: ident) ,* ] ) => {
305- let mut successors = $basic_coverage_blocks. successors[ $i] . clone( ) ;
306- successors. sort_unstable( ) ;
307- assert_eq!( successors, vec![ $( $successor) ,* ] ) ;
308- }
305+ #[ track_caller]
306+ fn assert_successors (
307+ basic_coverage_blocks : & graph:: CoverageGraph ,
308+ bcb : BasicCoverageBlock ,
309+ expected_successors : & [ BasicCoverageBlock ] ,
310+ ) {
311+ let mut successors = basic_coverage_blocks. successors [ bcb] . clone ( ) ;
312+ successors. sort_unstable ( ) ;
313+ assert_eq ! ( successors, expected_successors) ;
309314}
310315
311316#[ test]
@@ -334,13 +339,9 @@ fn test_covgraph_goto_switchint() {
334339 basic_coverage_blocks. iter_enumerated( ) . collect:: <Vec <_>>( )
335340 ) ;
336341
337- let_bcb ! ( 0 ) ;
338- let_bcb ! ( 1 ) ;
339- let_bcb ! ( 2 ) ;
340-
341- assert_successors ! ( basic_coverage_blocks, bcb0, [ bcb1, bcb2] ) ;
342- assert_successors ! ( basic_coverage_blocks, bcb1, [ ] ) ;
343- assert_successors ! ( basic_coverage_blocks, bcb2, [ ] ) ;
342+ assert_successors ( & basic_coverage_blocks, bcb ( 0 ) , & [ bcb ( 1 ) , bcb ( 2 ) ] ) ;
343+ assert_successors ( & basic_coverage_blocks, bcb ( 1 ) , & [ ] ) ;
344+ assert_successors ( & basic_coverage_blocks, bcb ( 2 ) , & [ ] ) ;
344345}
345346
346347/// Create a mock `Body` with a loop.
@@ -418,15 +419,10 @@ fn test_covgraph_switchint_then_loop_else_return() {
418419 basic_coverage_blocks. iter_enumerated( ) . collect:: <Vec <_>>( )
419420 ) ;
420421
421- let_bcb ! ( 0 ) ;
422- let_bcb ! ( 1 ) ;
423- let_bcb ! ( 2 ) ;
424- let_bcb ! ( 3 ) ;
425-
426- assert_successors ! ( basic_coverage_blocks, bcb0, [ bcb1] ) ;
427- assert_successors ! ( basic_coverage_blocks, bcb1, [ bcb2, bcb3] ) ;
428- assert_successors ! ( basic_coverage_blocks, bcb2, [ ] ) ;
429- assert_successors ! ( basic_coverage_blocks, bcb3, [ bcb1] ) ;
422+ assert_successors ( & basic_coverage_blocks, bcb ( 0 ) , & [ bcb ( 1 ) ] ) ;
423+ assert_successors ( & basic_coverage_blocks, bcb ( 1 ) , & [ bcb ( 2 ) , bcb ( 3 ) ] ) ;
424+ assert_successors ( & basic_coverage_blocks, bcb ( 2 ) , & [ ] ) ;
425+ assert_successors ( & basic_coverage_blocks, bcb ( 3 ) , & [ bcb ( 1 ) ] ) ;
430426}
431427
432428/// Create a mock `Body` with nested loops.
@@ -546,21 +542,13 @@ fn test_covgraph_switchint_loop_then_inner_loop_else_break() {
546542 basic_coverage_blocks. iter_enumerated( ) . collect:: <Vec <_>>( )
547543 ) ;
548544
549- let_bcb ! ( 0 ) ;
550- let_bcb ! ( 1 ) ;
551- let_bcb ! ( 2 ) ;
552- let_bcb ! ( 3 ) ;
553- let_bcb ! ( 4 ) ;
554- let_bcb ! ( 5 ) ;
555- let_bcb ! ( 6 ) ;
556-
557- assert_successors ! ( basic_coverage_blocks, bcb0, [ bcb1] ) ;
558- assert_successors ! ( basic_coverage_blocks, bcb1, [ bcb2, bcb3] ) ;
559- assert_successors ! ( basic_coverage_blocks, bcb2, [ ] ) ;
560- assert_successors ! ( basic_coverage_blocks, bcb3, [ bcb4] ) ;
561- assert_successors ! ( basic_coverage_blocks, bcb4, [ bcb5, bcb6] ) ;
562- assert_successors ! ( basic_coverage_blocks, bcb5, [ bcb1] ) ;
563- assert_successors ! ( basic_coverage_blocks, bcb6, [ bcb4] ) ;
545+ assert_successors ( & basic_coverage_blocks, bcb ( 0 ) , & [ bcb ( 1 ) ] ) ;
546+ assert_successors ( & basic_coverage_blocks, bcb ( 1 ) , & [ bcb ( 2 ) , bcb ( 3 ) ] ) ;
547+ assert_successors ( & basic_coverage_blocks, bcb ( 2 ) , & [ ] ) ;
548+ assert_successors ( & basic_coverage_blocks, bcb ( 3 ) , & [ bcb ( 4 ) ] ) ;
549+ assert_successors ( & basic_coverage_blocks, bcb ( 4 ) , & [ bcb ( 5 ) , bcb ( 6 ) ] ) ;
550+ assert_successors ( & basic_coverage_blocks, bcb ( 5 ) , & [ bcb ( 1 ) ] ) ;
551+ assert_successors ( & basic_coverage_blocks, bcb ( 6 ) , & [ bcb ( 4 ) ] ) ;
564552}
565553
566554#[ test]
@@ -595,10 +583,7 @@ fn test_find_loop_backedges_one() {
595583 backedges
596584 ) ;
597585
598- let_bcb ! ( 1 ) ;
599- let_bcb ! ( 3 ) ;
600-
601- assert_eq ! ( backedges[ bcb1] , vec![ bcb3] ) ;
586+ assert_eq ! ( backedges[ bcb( 1 ) ] , & [ bcb( 3 ) ] ) ;
602587}
603588
604589#[ test]
@@ -613,13 +598,8 @@ fn test_find_loop_backedges_two() {
613598 backedges
614599 ) ;
615600
616- let_bcb ! ( 1 ) ;
617- let_bcb ! ( 4 ) ;
618- let_bcb ! ( 5 ) ;
619- let_bcb ! ( 6 ) ;
620-
621- assert_eq ! ( backedges[ bcb1] , vec![ bcb5] ) ;
622- assert_eq ! ( backedges[ bcb4] , vec![ bcb6] ) ;
601+ assert_eq ! ( backedges[ bcb( 1 ) ] , & [ bcb( 5 ) ] ) ;
602+ assert_eq ! ( backedges[ bcb( 4 ) ] , & [ bcb( 6 ) ] ) ;
623603}
624604
625605#[ test]
@@ -632,13 +612,11 @@ fn test_traverse_coverage_with_loops() {
632612 traversed_in_order. push ( bcb) ;
633613 }
634614
635- let_bcb ! ( 6 ) ;
636-
637615 // bcb0 is visited first. Then bcb1 starts the first loop, and all remaining nodes, *except*
638616 // bcb6 are inside the first loop.
639617 assert_eq ! (
640618 * traversed_in_order. last( ) . expect( "should have elements" ) ,
641- bcb6 ,
619+ bcb ( 6 ) ,
642620 "bcb6 should not be visited until all nodes inside the first loop have been visited"
643621 ) ;
644622}
@@ -656,20 +634,18 @@ fn test_make_bcb_counters() {
656634 coverage_counters. make_bcb_counters ( & basic_coverage_blocks, bcb_has_coverage_spans) ;
657635 assert_eq ! ( coverage_counters. num_expressions( ) , 0 ) ;
658636
659- let_bcb ! ( 1 ) ;
660637 assert_eq ! (
661638 0 , // bcb1 has a `Counter` with id = 0
662- match coverage_counters. bcb_counter( bcb1 ) . expect( "should have a counter" ) {
639+ match coverage_counters. bcb_counter( bcb ( 1 ) ) . expect( "should have a counter" ) {
663640 counters:: BcbCounter :: Counter { id, .. } => id,
664641 _ => panic!( "expected a Counter" ) ,
665642 }
666643 . as_u32( )
667644 ) ;
668645
669- let_bcb ! ( 2 ) ;
670646 assert_eq ! (
671647 1 , // bcb2 has a `Counter` with id = 1
672- match coverage_counters. bcb_counter( bcb2 ) . expect( "should have a counter" ) {
648+ match coverage_counters. bcb_counter( bcb ( 2 ) ) . expect( "should have a counter" ) {
673649 counters:: BcbCounter :: Counter { id, .. } => id,
674650 _ => panic!( "expected a Counter" ) ,
675651 }
0 commit comments