// Trying to access mid-level internal representation (MIR) in statics
// used to cause an internal compiler error (ICE), now handled as a proper
// error since #100211. This test checks that the correct error is printed
// during the linking process, and not the ICE.
// See https://github.com/rust-lang/rust/issues/85401

use run_make_support::{bin_name, rust_lib_name, rustc};

fn main() {
    rustc()
        .crate_type("rlib")
        .crate_name("foo")
        .arg("-Crelocation-model=pic")
        .edition("2018")
        .input("foo.rs")
        .arg("-Zalways-encode-mir=yes")
        .emit("metadata")
        .output("libfoo.rmeta")
        .run();
    rustc()
        .crate_type("rlib")
        .crate_name("bar")
        .arg("-Crelocation-model=pic")
        .edition("2018")
        .input("bar.rs")
        .output(rust_lib_name("bar"))
        .extern_("foo", "libfoo.rmeta")
        .run();
    rustc()
        .crate_type("bin")
        .crate_name("baz")
        .arg("-Crelocation-model=pic")
        .edition("2018")
        .input("baz.rs")
        .output(bin_name("baz"))
        .extern_("bar", rust_lib_name("bar"))
        .run_fail()
        .assert_stderr_contains(
            "crate `foo` required to be available in rlib format, but was not found in this form",
        )
        .assert_stdout_not_contains("internal compiler error");
}
