@@ -333,7 +333,7 @@ impl flags::AnalysisStats {
333
333
}
334
334
335
335
if self . run_all_ide_things {
336
- self . run_ide_things ( host. analysis ( ) , file_ids. clone ( ) ) ;
336
+ self . run_ide_things ( host. analysis ( ) , file_ids. clone ( ) , db , & vfs , verbosity ) ;
337
337
}
338
338
339
339
if self . run_term_search {
@@ -393,26 +393,39 @@ impl flags::AnalysisStats {
393
393
}
394
394
395
395
fn run_const_eval ( & self , db : & RootDatabase , bodies : & [ DefWithBody ] , verbosity : Verbosity ) {
396
+ let len = bodies
397
+ . iter ( )
398
+ . filter ( |body| matches ! ( body, DefWithBody :: Const ( _) | DefWithBody :: Static ( _) ) )
399
+ . count ( ) ;
400
+ let mut bar = match verbosity {
401
+ Verbosity :: Quiet | Verbosity :: Spammy => ProgressReport :: hidden ( ) ,
402
+ _ if self . parallel || self . output . is_some ( ) => ProgressReport :: hidden ( ) ,
403
+ _ => ProgressReport :: new ( len) ,
404
+ } ;
405
+
396
406
let mut sw = self . stop_watch ( ) ;
397
407
let mut all = 0 ;
398
408
let mut fail = 0 ;
399
409
for & b in bodies {
410
+ bar. set_message ( move || format ! ( "const eval: {}" , full_name( db, b, b. module( db) ) ) ) ;
400
411
let res = match b {
401
412
DefWithBody :: Const ( c) => c. eval ( db) ,
402
413
DefWithBody :: Static ( s) => s. eval ( db) ,
403
414
_ => continue ,
404
415
} ;
416
+ bar. inc ( 1 ) ;
405
417
all += 1 ;
406
418
let Err ( error) = res else {
407
419
continue ;
408
420
} ;
409
421
if verbosity. is_spammy ( ) {
410
422
let full_name =
411
423
full_name_of_item ( db, b. module ( db) , b. name ( db) . unwrap_or ( Name :: missing ( ) ) ) ;
412
- println ! ( "Const eval for {full_name} failed due {error:?}" ) ;
424
+ bar . println ( format ! ( "Const eval for {full_name} failed due {error:?}" ) ) ;
413
425
}
414
426
fail += 1 ;
415
427
}
428
+ bar. finish_and_clear ( ) ;
416
429
let const_eval_time = sw. elapsed ( ) ;
417
430
eprintln ! ( "{:<20} {}" , "Const evaluation:" , const_eval_time) ;
418
431
eprintln ! ( "Failed const evals: {fail} ({}%)" , percentage( fail, all) ) ;
@@ -662,6 +675,10 @@ impl flags::AnalysisStats {
662
675
let mut all = 0 ;
663
676
let mut fail = 0 ;
664
677
for & body_id in bodies {
678
+ bar. set_message ( move || {
679
+ format ! ( "mir lowering: {}" , full_name( db, body_id, body_id. module( db) ) )
680
+ } ) ;
681
+ bar. inc ( 1 ) ;
665
682
if matches ! ( body_id, DefWithBody :: Variant ( _) ) {
666
683
continue ;
667
684
}
@@ -1089,12 +1106,29 @@ impl flags::AnalysisStats {
1089
1106
report_metric ( "body lowering time" , body_lowering_time. time . as_millis ( ) as u64 , "ms" ) ;
1090
1107
}
1091
1108
1092
- fn run_ide_things ( & self , analysis : Analysis , mut file_ids : Vec < EditionedFileId > ) {
1109
+ fn run_ide_things (
1110
+ & self ,
1111
+ analysis : Analysis ,
1112
+ mut file_ids : Vec < EditionedFileId > ,
1113
+ db : & RootDatabase ,
1114
+ vfs : & Vfs ,
1115
+ verbosity : Verbosity ,
1116
+ ) {
1117
+ let len = file_ids. len ( ) ;
1118
+ let create_bar = || match verbosity {
1119
+ Verbosity :: Quiet | Verbosity :: Spammy => ProgressReport :: hidden ( ) ,
1120
+ _ if self . parallel || self . output . is_some ( ) => ProgressReport :: hidden ( ) ,
1121
+ _ => ProgressReport :: new ( len) ,
1122
+ } ;
1123
+
1093
1124
file_ids. sort ( ) ;
1094
1125
file_ids. dedup ( ) ;
1095
1126
let mut sw = self . stop_watch ( ) ;
1096
1127
1128
+ let mut bar = create_bar ( ) ;
1097
1129
for & file_id in & file_ids {
1130
+ let msg = format ! ( "diagnostics: {}" , vfs. file_path( file_id. file_id( db) ) ) ;
1131
+ bar. set_message ( move || msg. clone ( ) ) ;
1098
1132
_ = analysis. full_diagnostics (
1099
1133
& DiagnosticsConfig {
1100
1134
enabled : true ,
@@ -1121,8 +1155,14 @@ impl flags::AnalysisStats {
1121
1155
ide:: AssistResolveStrategy :: All ,
1122
1156
analysis. editioned_file_id_to_vfs ( file_id) ,
1123
1157
) ;
1158
+ bar. inc ( 1 ) ;
1124
1159
}
1160
+ bar. finish_and_clear ( ) ;
1161
+
1162
+ let mut bar = create_bar ( ) ;
1125
1163
for & file_id in & file_ids {
1164
+ let msg = format ! ( "inlay hints: {}" , vfs. file_path( file_id. file_id( db) ) ) ;
1165
+ bar. set_message ( move || msg. clone ( ) ) ;
1126
1166
_ = analysis. inlay_hints (
1127
1167
& InlayHintsConfig {
1128
1168
render_colons : false ,
@@ -1158,8 +1198,14 @@ impl flags::AnalysisStats {
1158
1198
analysis. editioned_file_id_to_vfs ( file_id) ,
1159
1199
None ,
1160
1200
) ;
1201
+ bar. inc ( 1 ) ;
1161
1202
}
1203
+ bar. finish_and_clear ( ) ;
1204
+
1205
+ let mut bar = create_bar ( ) ;
1162
1206
for & file_id in & file_ids {
1207
+ let msg = format ! ( "annotations: {}" , vfs. file_path( file_id. file_id( db) ) ) ;
1208
+ bar. set_message ( move || msg. clone ( ) ) ;
1163
1209
analysis
1164
1210
. annotations (
1165
1211
& AnnotationConfig {
@@ -1178,7 +1224,10 @@ impl flags::AnalysisStats {
1178
1224
. for_each ( |annotation| {
1179
1225
_ = analysis. resolve_annotation ( annotation) ;
1180
1226
} ) ;
1227
+ bar. inc ( 1 ) ;
1181
1228
}
1229
+ bar. finish_and_clear ( ) ;
1230
+
1182
1231
let ide_time = sw. elapsed ( ) ;
1183
1232
eprintln ! ( "{:<20} {} ({} files)" , "IDE:" , ide_time, file_ids. len( ) ) ;
1184
1233
}
0 commit comments