27
27
use super :: counters;
28
28
use super :: graph:: { self , BasicCoverageBlock } ;
29
29
30
- use coverage_test_macros:: let_bcb;
31
-
32
30
use itertools:: Itertools ;
33
31
use rustc_data_structures:: graph:: WithNumNodes ;
34
32
use rustc_data_structures:: graph:: WithSuccessors ;
@@ -37,6 +35,10 @@ use rustc_middle::mir::*;
37
35
use rustc_middle:: ty;
38
36
use rustc_span:: { self , BytePos , Pos , Span , DUMMY_SP } ;
39
37
38
+ fn bcb ( index : u32 ) -> BasicCoverageBlock {
39
+ BasicCoverageBlock :: from_u32 ( index)
40
+ }
41
+
40
42
// All `TEMP_BLOCK` targets should be replaced before calling `to_body() -> mir::Body`.
41
43
const TEMP_BLOCK : BasicBlock = BasicBlock :: MAX ;
42
44
@@ -300,12 +302,15 @@ fn goto_switchint<'a>() -> Body<'a> {
300
302
mir_body
301
303
}
302
304
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) ;
309
314
}
310
315
311
316
#[ test]
@@ -334,13 +339,9 @@ fn test_covgraph_goto_switchint() {
334
339
basic_coverage_blocks. iter_enumerated( ) . collect:: <Vec <_>>( )
335
340
) ;
336
341
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 ) , & [ ] ) ;
344
345
}
345
346
346
347
/// Create a mock `Body` with a loop.
@@ -418,15 +419,10 @@ fn test_covgraph_switchint_then_loop_else_return() {
418
419
basic_coverage_blocks. iter_enumerated( ) . collect:: <Vec <_>>( )
419
420
) ;
420
421
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 ) ] ) ;
430
426
}
431
427
432
428
/// Create a mock `Body` with nested loops.
@@ -546,21 +542,13 @@ fn test_covgraph_switchint_loop_then_inner_loop_else_break() {
546
542
basic_coverage_blocks. iter_enumerated( ) . collect:: <Vec <_>>( )
547
543
) ;
548
544
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 ) ] ) ;
564
552
}
565
553
566
554
#[ test]
@@ -595,10 +583,7 @@ fn test_find_loop_backedges_one() {
595
583
backedges
596
584
) ;
597
585
598
- let_bcb ! ( 1 ) ;
599
- let_bcb ! ( 3 ) ;
600
-
601
- assert_eq ! ( backedges[ bcb1] , vec![ bcb3] ) ;
586
+ assert_eq ! ( backedges[ bcb( 1 ) ] , & [ bcb( 3 ) ] ) ;
602
587
}
603
588
604
589
#[ test]
@@ -613,13 +598,8 @@ fn test_find_loop_backedges_two() {
613
598
backedges
614
599
) ;
615
600
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 ) ] ) ;
623
603
}
624
604
625
605
#[ test]
@@ -632,13 +612,11 @@ fn test_traverse_coverage_with_loops() {
632
612
traversed_in_order. push ( bcb) ;
633
613
}
634
614
635
- let_bcb ! ( 6 ) ;
636
-
637
615
// bcb0 is visited first. Then bcb1 starts the first loop, and all remaining nodes, *except*
638
616
// bcb6 are inside the first loop.
639
617
assert_eq ! (
640
618
* traversed_in_order. last( ) . expect( "should have elements" ) ,
641
- bcb6 ,
619
+ bcb ( 6 ) ,
642
620
"bcb6 should not be visited until all nodes inside the first loop have been visited"
643
621
) ;
644
622
}
@@ -656,20 +634,18 @@ fn test_make_bcb_counters() {
656
634
coverage_counters. make_bcb_counters ( & basic_coverage_blocks, bcb_has_coverage_spans) ;
657
635
assert_eq ! ( coverage_counters. num_expressions( ) , 0 ) ;
658
636
659
- let_bcb ! ( 1 ) ;
660
637
assert_eq ! (
661
638
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" ) {
663
640
counters:: BcbCounter :: Counter { id, .. } => id,
664
641
_ => panic!( "expected a Counter" ) ,
665
642
}
666
643
. as_u32( )
667
644
) ;
668
645
669
- let_bcb ! ( 2 ) ;
670
646
assert_eq ! (
671
647
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" ) {
673
649
counters:: BcbCounter :: Counter { id, .. } => id,
674
650
_ => panic!( "expected a Counter" ) ,
675
651
}
0 commit comments