| // 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"); |
| } |