about summary refs log tree commit diff
path: root/tests/run-make/ice-static-mir/rmake.rs
blob: b6a04bf877e7f69280faeebee9d45da583ac0a6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//@ needs-target-std
//
// 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");
}