add convoluted test for issue 132920

This commit is contained in:
Rémy Rakic 2024-11-21 16:54:18 +00:00
parent 318f96a8cf
commit 91486607e3
4 changed files with 62 additions and 0 deletions

View file

@ -0,0 +1,2 @@
pub trait Resource {}
pub struct Ray2d;

View file

@ -0,0 +1 @@
pub type Ray = minibevy::Ray2d;

View file

@ -0,0 +1,14 @@
extern crate minibevy;
extern crate minirapier;
use minibevy::Resource;
use minirapier::Ray;
fn insert_resource<R: Resource>(_resource: R) {}
struct Res;
impl Resource for Res {}
fn main() {
insert_resource(Res.into());
}

View file

@ -0,0 +1,45 @@
// 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");
}