Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 2b88be5

Browse files
committed
Test immediate dominators using public API
1 parent cf9fd95 commit 2b88be5

File tree

1 file changed

+21
-24
lines changed
  • compiler/rustc_data_structures/src/graph/dominators

1 file changed

+21
-24
lines changed

compiler/rustc_data_structures/src/graph/dominators/tests.rs

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ use super::super::tests::TestGraph;
66
fn diamond() {
77
let graph = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3)]);
88

9-
let dominators = dominators(&graph);
10-
let immediate_dominators = &dominators.immediate_dominators;
11-
assert_eq!(immediate_dominators[0], None);
12-
assert_eq!(immediate_dominators[1], Some(0));
13-
assert_eq!(immediate_dominators[2], Some(0));
14-
assert_eq!(immediate_dominators[3], Some(0));
9+
let d = dominators(&graph);
10+
assert_eq!(d.immediate_dominator(0), None);
11+
assert_eq!(d.immediate_dominator(1), Some(0));
12+
assert_eq!(d.immediate_dominator(2), Some(0));
13+
assert_eq!(d.immediate_dominator(3), Some(0));
1514
}
1615

1716
#[test]
@@ -22,15 +21,14 @@ fn paper() {
2221
&[(6, 5), (6, 4), (5, 1), (4, 2), (4, 3), (1, 2), (2, 3), (3, 2), (2, 1)],
2322
);
2423

25-
let dominators = dominators(&graph);
26-
let immediate_dominators = &dominators.immediate_dominators;
27-
assert_eq!(immediate_dominators[0], None); // <-- note that 0 is not in graph
28-
assert_eq!(immediate_dominators[1], Some(6));
29-
assert_eq!(immediate_dominators[2], Some(6));
30-
assert_eq!(immediate_dominators[3], Some(6));
31-
assert_eq!(immediate_dominators[4], Some(6));
32-
assert_eq!(immediate_dominators[5], Some(6));
33-
assert_eq!(immediate_dominators[6], None);
24+
let d = dominators(&graph);
25+
assert_eq!(d.immediate_dominator(0), None); // <-- note that 0 is not in graph
26+
assert_eq!(d.immediate_dominator(1), Some(6));
27+
assert_eq!(d.immediate_dominator(2), Some(6));
28+
assert_eq!(d.immediate_dominator(3), Some(6));
29+
assert_eq!(d.immediate_dominator(4), Some(6));
30+
assert_eq!(d.immediate_dominator(5), Some(6));
31+
assert_eq!(d.immediate_dominator(6), None);
3432
}
3533

3634
#[test]
@@ -47,11 +45,11 @@ fn paper_slt() {
4745
#[test]
4846
fn immediate_dominator() {
4947
let graph = TestGraph::new(1, &[(1, 2), (2, 3)]);
50-
let dominators = dominators(&graph);
51-
assert_eq!(dominators.immediate_dominator(0), None);
52-
assert_eq!(dominators.immediate_dominator(1), None);
53-
assert_eq!(dominators.immediate_dominator(2), Some(1));
54-
assert_eq!(dominators.immediate_dominator(3), Some(2));
48+
let d = dominators(&graph);
49+
assert_eq!(d.immediate_dominator(0), None);
50+
assert_eq!(d.immediate_dominator(1), None);
51+
assert_eq!(d.immediate_dominator(2), Some(1));
52+
assert_eq!(d.immediate_dominator(3), Some(2));
5553
}
5654

5755
#[test]
@@ -75,8 +73,7 @@ fn transitive_dominator() {
7573
],
7674
);
7775

78-
let dom_tree = dominators(&graph);
79-
let immediate_dominators = &dom_tree.immediate_dominators;
80-
assert_eq!(immediate_dominators[2], Some(0));
81-
assert_eq!(immediate_dominators[3], Some(0)); // This used to return Some(1).
76+
let d = dominators(&graph);
77+
assert_eq!(d.immediate_dominator(2), Some(0));
78+
assert_eq!(d.immediate_dominator(3), Some(0)); // This used to return Some(1).
8279
}

0 commit comments

Comments
 (0)