Skip to content

Commit

Permalink
Add suggestion for missing compile flag group
Browse files Browse the repository at this point in the history
  • Loading branch information
camsteffen committed Jun 30, 2021
1 parent 3ddb78a commit 2a60f09
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 4 deletions.
17 changes: 13 additions & 4 deletions compiler/rustc_driver/src/lib.rs
Expand Up @@ -29,7 +29,7 @@ use rustc_middle::middle::cstore::MetadataLoader;
use rustc_save_analysis as save;
use rustc_save_analysis::DumpHandler;
use rustc_serialize::json::{self, ToJson};
use rustc_session::config::nightly_options;
use rustc_session::config::{nightly_options, CG_OPTIONS, DB_OPTIONS};
use rustc_session::config::{ErrorOutputType, Input, OutputType, PrintRequest, TrimmedDefPaths};
use rustc_session::getopts;
use rustc_session::lint::{Lint, LintId};
Expand Down Expand Up @@ -1017,9 +1017,18 @@ pub fn handle_options(args: &[String]) -> Option<getopts::Matches> {
for option in config::rustc_optgroups() {
(option.apply)(&mut options);
}
let matches = options
.parse(args)
.unwrap_or_else(|f| early_error(ErrorOutputType::default(), &f.to_string()));
let matches = options.parse(args).unwrap_or_else(|e| {
let msg = match e {
getopts::Fail::UnrecognizedOption(ref opt) => CG_OPTIONS
.iter()
.map(|&(name, ..)| ('C', name))
.chain(DB_OPTIONS.iter().map(|&(name, ..)| ('Z', name)))
.find(|&(_, name)| *opt == name.replace("_", "-"))
.map(|(flag, _)| format!("{}. Did you mean `-{} {}`?", e, flag, opt)),
_ => None,
};
early_error(ErrorOutputType::default(), &msg.unwrap_or_else(|| e.to_string()));
});

// For all options we just parsed, we check a few aspects:
//
Expand Down
@@ -0,0 +1 @@
// compile-flags: --llvm-args
@@ -0,0 +1,2 @@
error: Unrecognized option: 'llvm-args'. Did you mean `-C llvm-args`?

@@ -0,0 +1 @@
// compile-flags: --unpretty=hir
@@ -0,0 +1,2 @@
error: Unrecognized option: 'unpretty'. Did you mean `-Z unpretty`?

0 comments on commit 2a60f09

Please sign in to comment.