about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/librustc_driver/lib.rs30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs
index ce40d9b53ff..d50b8e5eca2 100644
--- a/src/librustc_driver/lib.rs
+++ b/src/librustc_driver/lib.rs
@@ -657,24 +657,30 @@ Available lint options:
 
 fn describe_debug_flags() {
     println!("\nAvailable debug options:\n");
-    for &(name, _, opt_type_desc, desc) in config::DB_OPTIONS {
-        let (width, extra) = match opt_type_desc {
-            Some(..) => (21, "=val"),
-            None => (25, "")
-        };
-        println!("    -Z {:>width$}{} -- {}", name.replace("_", "-"),
-                 extra, desc, width=width);
-    }
+    print_flag_list("-Z", config::DB_OPTIONS);
 }
 
 fn describe_codegen_flags() {
     println!("\nAvailable codegen options:\n");
-    for &(name, _, opt_type_desc, desc) in config::CG_OPTIONS {
+    print_flag_list("-C", config::CG_OPTIONS);
+}
+
+fn print_flag_list<T>(cmdline_opt: &str,
+                      flag_list: &[(&'static str, T, Option<&'static str>, &'static str)]) {
+    let max_len = flag_list.iter().map(|&(name, _, opt_type_desc, _)| {
+        let extra_len = match opt_type_desc {
+            Some(..) => 4,
+            None => 0
+        };
+        name.chars().count() + extra_len
+    }).max().unwrap_or(0);
+
+    for &(name, _, opt_type_desc, desc) in flag_list {
         let (width, extra) = match opt_type_desc {
-            Some(..) => (21, "=val"),
-            None => (25, "")
+            Some(..) => (max_len - 4, "=val"),
+            None => (max_len, "")
         };
-        println!("    -C {:>width$}{} -- {}", name.replace("_", "-"),
+        println!("    {} {:>width$}{} -- {}", cmdline_opt, name.replace("_", "-"),
                  extra, desc, width=width);
     }
 }