// In order to prevent temporary files from overwriting each other in parallel
// compilation, rustc was changed to mix an extra filename with temporary
// outputs. However, as this is a similar behavior with the codegen flag
// -C extra-filename, this test checks that the manually passed flag
// is not overwritten by this feature, and that the output files
// are named as expected.
// See https://github.com/rust-lang/rust/pull/15686

use run_make_support::{bin_name, cwd, has_prefix, has_suffix, rfs, rustc, shallow_find_files};

fn main() {
    rustc().extra_filename("bar").input("foo.rs").arg("-Csave-temps").run();
    let object_files = shallow_find_files(cwd(), |path| {
        has_prefix(path, "foobar.foo") && has_suffix(path, "0.rcgu.o")
    });
    let object_file = object_files.get(0).unwrap();
    rfs::remove_file(object_file);
    rfs::remove_file(bin_name("foobar"));
}
