@@ -370,6 +370,21 @@ pub struct Monos {
370
370
/// generic function.
371
371
#[ structopt( short = "n" , long = "max-monos" , default_value = "10" ) ]
372
372
max_monos : u32 ,
373
+
374
+ /// List all generics and all of their individual monomorphizations.
375
+ /// If combined with -g then monomorphizations are hidden.
376
+ /// Overrides -m <max_generics> and -n <max_monos>
377
+ #[ structopt( short = "a" , long = "all" ) ]
378
+ all_generics_and_monos : bool ,
379
+
380
+ /// List all generics. Overrides -m <max_generics>
381
+ #[ structopt( long = "all-generics" ) ]
382
+ all_generics : bool ,
383
+
384
+ /// List all individual monomorphizations for each generic function.
385
+ /// Overrides -n <max_monos>
386
+ #[ structopt( long = "all-monos" ) ]
387
+ all_monos : bool ,
373
388
}
374
389
375
390
impl Default for Monos {
@@ -385,6 +400,10 @@ impl Default for Monos {
385
400
only_generics : false ,
386
401
max_generics : 10 ,
387
402
max_monos : 10 ,
403
+
404
+ all_generics_and_monos : false ,
405
+ all_generics : false ,
406
+ all_monos : false ,
388
407
}
389
408
}
390
409
}
@@ -403,13 +422,15 @@ impl Monos {
403
422
404
423
/// The maximum number of generics to list.
405
424
pub fn max_generics ( & self ) -> u32 {
406
- self . max_generics
425
+ if self . all_generics_and_monos || self . all_generics { u32:: MAX }
426
+ else { self . max_generics }
407
427
}
408
428
409
429
/// The maximum number of individual monomorphizations to list for each
410
430
/// generic function.
411
431
pub fn max_monos ( & self ) -> u32 {
412
- self . max_monos
432
+ if self . all_generics_and_monos || self . all_monos { u32:: MAX }
433
+ else { self . max_monos }
413
434
}
414
435
415
436
/// Set whether to hide individual monomorphizations and only show the
@@ -421,12 +442,22 @@ impl Monos {
421
442
/// Set the maximum number of generics to list.
422
443
pub fn set_max_generics ( & mut self , max : u32 ) {
423
444
self . max_generics = max;
445
+ self . all_generics = false ;
446
+ if self . all_generics_and_monos {
447
+ self . all_generics_and_monos = false ;
448
+ self . all_monos = true ;
449
+ }
424
450
}
425
451
426
452
/// Set the maximum number of individual monomorphizations to list for each
427
453
/// generic function.
428
454
pub fn set_max_monos ( & mut self , max : u32 ) {
429
455
self . max_monos = max;
456
+ self . all_monos = false ;
457
+ if self . all_generics_and_monos {
458
+ self . all_generics_and_monos = false ;
459
+ self . all_generics = true ;
460
+ }
430
461
}
431
462
}
432
463
0 commit comments