mirror of https://github.com/rust-lang/rust.git
46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
// Non-regression test for issue #132920 where multiple versions of the same crate are present in
|
|
// the dependency graph, and an unexpected error in a dependent crate caused an ICE in the
|
|
// unsatisfied bounds diagnostics for traits present in multiple crate versions.
|
|
//
|
|
// Setup:
|
|
// - two versions of the same crate: minibevy_a and minibevy_b
|
|
// - minirapier: depends on minibevy_a
|
|
// - repro: depends on minirapier and minibevy_b
|
|
|
|
use run_make_support::rustc;
|
|
|
|
fn main() {
|
|
// Prepare dependencies, mimicking a check build with cargo.
|
|
rustc()
|
|
.input("minibevy.rs")
|
|
.crate_name("minibevy")
|
|
.crate_type("lib")
|
|
.emit("metadata")
|
|
.metadata("a")
|
|
.extra_filename("-a")
|
|
.run();
|
|
rustc()
|
|
.input("minibevy.rs")
|
|
.crate_name("minibevy")
|
|
.crate_type("lib")
|
|
.emit("metadata")
|
|
.metadata("b")
|
|
.extra_filename("-b")
|
|
.run();
|
|
rustc()
|
|
.input("minirapier.rs")
|
|
.crate_name("minirapier")
|
|
.crate_type("lib")
|
|
.emit("metadata")
|
|
.extern_("minibevy", "libminibevy-a.rmeta")
|
|
.run();
|
|
|
|
// Building the main crate used to ICE here when printing the `type annotations needed` error.
|
|
rustc()
|
|
.input("repro.rs")
|
|
.extern_("minibevy", "libminibevy-b.rmeta")
|
|
.extern_("minirapier", "libminirapier.rmeta")
|
|
.run_fail()
|
|
.assert_stderr_not_contains("error: the compiler unexpectedly panicked. this is a bug");
|
|
}
|