2
2
//! Uses `Graph` as the underlying representation.
3
3
4
4
use rustc_data_structures:: graph:: implementation as graph;
5
- use crate :: ty:: TyCtxt ;
6
- use crate :: hir;
7
- use crate :: hir:: def_id:: DefId ;
5
+ use rustc :: ty:: TyCtxt ;
6
+ use rustc :: hir;
7
+ use rustc :: hir:: def_id:: DefId ;
8
8
9
9
mod construct;
10
10
pub mod graphviz;
11
11
12
12
pub struct CFG {
13
- pub owner_def_id : DefId ,
14
- pub graph : CFGGraph ,
15
- pub entry : CFGIndex ,
16
- pub exit : CFGIndex ,
13
+ owner_def_id : DefId ,
14
+ pub ( crate ) graph : CFGGraph ,
15
+ pub ( crate ) entry : CFGIndex ,
16
+ exit : CFGIndex ,
17
17
}
18
18
19
19
#[ derive( Copy , Clone , Debug , PartialEq ) ]
@@ -26,7 +26,7 @@ pub enum CFGNodeData {
26
26
}
27
27
28
28
impl CFGNodeData {
29
- pub fn id ( & self ) -> hir:: ItemLocalId {
29
+ pub ( crate ) fn id ( & self ) -> hir:: ItemLocalId {
30
30
if let CFGNodeData :: AST ( id) = * self {
31
31
id
32
32
} else {
@@ -37,24 +37,19 @@ impl CFGNodeData {
37
37
38
38
#[ derive( Debug ) ]
39
39
pub struct CFGEdgeData {
40
- pub exiting_scopes : Vec < hir:: ItemLocalId >
40
+ pub ( crate ) exiting_scopes : Vec < hir:: ItemLocalId >
41
41
}
42
42
43
- pub type CFGIndex = graph:: NodeIndex ;
43
+ pub ( crate ) type CFGIndex = graph:: NodeIndex ;
44
44
45
- pub type CFGGraph = graph:: Graph < CFGNodeData , CFGEdgeData > ;
45
+ pub ( crate ) type CFGGraph = graph:: Graph < CFGNodeData , CFGEdgeData > ;
46
46
47
- pub type CFGNode = graph:: Node < CFGNodeData > ;
47
+ pub ( crate ) type CFGNode = graph:: Node < CFGNodeData > ;
48
48
49
- pub type CFGEdge = graph:: Edge < CFGEdgeData > ;
49
+ pub ( crate ) type CFGEdge = graph:: Edge < CFGEdgeData > ;
50
50
51
51
impl CFG {
52
52
pub fn new ( tcx : TyCtxt < ' _ > , body : & hir:: Body ) -> CFG {
53
53
construct:: construct ( tcx, body)
54
54
}
55
-
56
- pub fn node_is_reachable ( & self , id : hir:: ItemLocalId ) -> bool {
57
- self . graph . depth_traverse ( self . entry , graph:: OUTGOING )
58
- . any ( |idx| self . graph . node_data ( idx) . id ( ) == id)
59
- }
60
55
}
0 commit comments