Skip to content

Commit

Permalink
add convoluted test for issue 132920
Browse files Browse the repository at this point in the history
  • Loading branch information
lqd committed Nov 21, 2024
1 parent 318f96a commit 9148660
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
pub trait Resource {}
pub struct Ray2d;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub type Ray = minibevy::Ray2d;
14 changes: 14 additions & 0 deletions tests/run-make/diagnostics-traits-from-duplicate-crates/repro.rs
Original file line number Diff line number Diff line change
@@ -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());
}
45 changes: 45 additions & 0 deletions tests/run-make/diagnostics-traits-from-duplicate-crates/rmake.rs
Original file line number Diff line number Diff line change
@@ -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");
}

0 comments on commit 9148660

Please sign in to comment.