diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index f997c69b159d1..c485ef80acd19 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -38,7 +38,6 @@ use middle::lint; use d = driver::driver; -use std::cast; use std::comm; use std::io; use std::io::Reader; @@ -365,8 +364,7 @@ impl diagnostic::Emitter for RustcEmitter { msg: &str, lvl: diagnostic::Level) { if lvl == diagnostic::Fatal { - let this = unsafe { cast::transmute_mut(self) }; - this.ch_capture.send(fatal) + self.ch_capture.send(fatal) } diagnostic::DefaultEmitter.emit(cmsp, msg, lvl) diff --git a/src/librustpkg/lib.rs b/src/librustpkg/lib.rs index 3d2ef2ebabad0..a63d19bd6acfa 100644 --- a/src/librustpkg/lib.rs +++ b/src/librustpkg/lib.rs @@ -752,7 +752,6 @@ pub fn main() { } pub fn main_args(args: &[~str]) -> int { - let (command, args, context, supplied_sysroot) = match parse_args(args) { Ok(ParseResult { command: cmd, diff --git a/src/librustpkg/parse_args.rs b/src/librustpkg/parse_args.rs index 8f21c6d3bfa68..23cfe72a835ba 100644 --- a/src/librustpkg/parse_args.rs +++ b/src/librustpkg/parse_args.rs @@ -36,7 +36,8 @@ pub struct ParseResult { /// Parses command line arguments of rustpkg. /// Returns a triplet (command, remaining_args, context) pub fn parse_args(args: &[~str]) -> Result { - let opts = ~[ getopts::optflag("no-link"), + let opts = ~[getopts::optflag("h"), getopts::optflag("help"), + getopts::optflag("no-link"), getopts::optflag("no-trans"), // n.b. Ignores different --pretty options for now getopts::optflag("pretty"), @@ -62,11 +63,11 @@ pub fn parse_args(args: &[~str]) -> Result { return Err(1); } }; + let help = matches.opt_present("h") || matches.opt_present("help"); let no_link = matches.opt_present("no-link"); let no_trans = matches.opt_present("no-trans"); let supplied_sysroot = matches.opt_str("sysroot"); - let generate_asm = matches.opt_present("S") || - matches.opt_present("assembly"); + let generate_asm = matches.opt_present("S") || matches.opt_present("assembly"); let parse_only = matches.opt_present("parse-only"); let pretty = matches.opt_present("pretty"); let emit_llvm = matches.opt_present("emit-llvm"); @@ -155,10 +156,13 @@ pub fn parse_args(args: &[~str]) -> Result { } Some(cmd) => { let bad_option = flags_forbidden_for_cmd(&rustc_flags, - cfgs, - cmd, - user_supplied_opt_level); - if bad_option { + cfgs, + cmd, + user_supplied_opt_level); + if help { + usage::usage_for_command(cmd); + return Err(0); + } else if bad_option { usage::usage_for_command(cmd); debug!("Bad option, returning BAD_FLAG_CODE"); return Err(BAD_FLAG_CODE);