File tree Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -166,6 +166,8 @@ fn main() {
166
166
)
167
167
. init ( ) ;
168
168
169
+ log:: info!( "Log level set to {}" , log:: max_level( ) ) ;
170
+
169
171
if cli. no_derived && cli. only == Some ( Action :: Derived ) {
170
172
log:: error!( "--no-derived and --only=derived are mutually exclusive" ) ;
171
173
std:: process:: exit ( 1 ) ;
Original file line number Diff line number Diff line change @@ -75,6 +75,8 @@ impl DumpStatistics {
75
75
}
76
76
77
77
fn close_subclasses ( & mut self ) -> usize {
78
+ log:: info!( "Computing subclass closure" ) ;
79
+
78
80
let mut added = 0 ;
79
81
let direct_superclasses = self
80
82
. classes
@@ -85,6 +87,7 @@ impl DumpStatistics {
85
87
86
88
while let Some ( class) = class_queue. pop_front ( ) {
87
89
let record = self . classes . entry ( class) . or_default ( ) ;
90
+ let mut done = HashSet :: new ( ) ;
88
91
let mut superclasses = record
89
92
. direct_superclasses
90
93
. iter ( )
@@ -93,10 +96,16 @@ impl DumpStatistics {
93
96
94
97
while let Some ( superclass) = superclasses. pop_front ( ) {
95
98
record. superclasses . insert ( superclass) ;
99
+ done. insert ( superclass) ;
96
100
added += 1 ;
97
101
98
102
if let Some ( new_superclasses) = direct_superclasses. get ( & superclass) {
99
- superclasses. extend ( new_superclasses. iter ( ) . cloned ( ) ) ;
103
+ superclasses. extend (
104
+ new_superclasses
105
+ . iter ( )
106
+ . filter ( |superclass| !done. contains ( superclass) )
107
+ . cloned ( ) ,
108
+ ) ;
100
109
}
101
110
}
102
111
}
@@ -116,6 +125,8 @@ impl DumpStatistics {
116
125
} )
117
126
. collect :: < Vec < _ > > ( ) ;
118
127
128
+ log:: info!( "Found {} non-empty classes" , classes. len( ) ) ;
129
+
119
130
for ( class, superclasses) in classes {
120
131
for super_class in superclasses {
121
132
let record = self . classes . entry ( super_class) . or_default ( ) ;
You can’t perform that action at this time.
0 commit comments