Skip to content

Commit 98e5c53

Browse files
committed
Emit warning when there is no space between -o and arg
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
1 parent 0d11be5 commit 98e5c53

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

compiler/rustc_driver_impl/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,6 +1237,14 @@ pub fn handle_options(early_dcx: &EarlyDiagCtxt, args: &[String]) -> Option<geto
12371237
return None;
12381238
}
12391239

1240+
// To avoid confusion, emit warning if no space
1241+
// between `-o` and arg, e.g.`-optimize`, is applied, see issue #142812
1242+
if let Some(name) = matches.opt_str("o") {
1243+
if args.iter().any(|arg| arg.starts_with("-o") && !arg.starts_with("-o=") && arg.ne("-o")) {
1244+
early_dcx.early_warn(format!("option `-o {}` is applied", name));
1245+
}
1246+
}
1247+
12401248
Some(matches)
12411249
}
12421250

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn main() {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use run_make_support::rustc;
2+
3+
fn main() {
4+
rustc()
5+
.input("main.rs")
6+
.arg("-optimize")
7+
.run()
8+
.assert_stderr_contains("warning: option `-o ptimize` is applied");
9+
rustc().input("main.rs").arg("-o").arg("ptimize").run().assert_stderr_equals("");
10+
}

tests/ui/unpretty/avoid-crash.stderr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
warning: option `-o .` is applied
2+
13
error: failed to write `.` due to $ERROR_MESSAGE
24

35
error: aborting due to 1 previous error

0 commit comments

Comments
 (0)