in src/compiler/msvc.rs [1580:1636]
fn test_parse_arguments_double_dash() {
let args = ovec!["-c", "-Fofoo.obj", "--", "foo.c"];
let ParsedArguments {
input,
double_dash_input,
common_args,
..
} = match parse_arguments(args.clone()) {
CompilerArguments::Ok(args) => args,
o => panic!("Got unexpected parse result: {:?}", o),
};
assert_eq!(Some("foo.c"), input.to_str());
// MSVC doesn't support double dashes. If we got one, we'll pass them
// through to MSVC for it to error out.
assert!(!double_dash_input);
assert_eq!(ovec!["--"], common_args);
let ParsedArguments {
input,
double_dash_input,
common_args,
..
} = match parse_arguments_clang(args) {
CompilerArguments::Ok(args) => args,
o => panic!("Got unexpected parse result: {:?}", o),
};
assert_eq!(Some("foo.c"), input.to_str());
assert!(double_dash_input);
assert!(common_args.is_empty());
let args = ovec!["-c", "-Fofoo.obj", "foo.c", "--"];
let ParsedArguments {
input,
double_dash_input,
common_args,
..
} = match parse_arguments_clang(args) {
CompilerArguments::Ok(args) => args,
o => panic!("Got unexpected parse result: {:?}", o),
};
assert_eq!(Some("foo.c"), input.to_str());
// Double dash after input file is ignored.
assert!(!double_dash_input);
assert!(common_args.is_empty());
let args = ovec!["-c", "-Fofoo.obj", "foo.c", "--", "bar.c"];
assert_eq!(
CompilerArguments::CannotCache("multiple input files", Some("[\"bar.c\"]".to_string())),
parse_arguments_clang(args)
);
let args = ovec!["-c", "-Fofoo.obj", "foo.c", "--", "-fPIC"];
assert_eq!(
CompilerArguments::CannotCache("multiple input files", Some("[\"-fPIC\"]".to_string())),
parse_arguments_clang(args)
);
}