rust/tests/incremental/circular-dependencies.rs
Romain Perier c8c04663c5 Add a note when a type implements a trait with the same name as the required one
This is useful when you have two dependencies that use different trait for
the same thing and with the same name. The user can accidentally implement
the bad one which might be confusing. This commits refactorizes existing
diagnostics about multiple different crates with the same version and adds
a note when similarly named traits are found. All diagnostics are merged
into a single one.
2025-11-11 17:36:43 +01:00

36 lines
1.4 KiB
Rust

// ignore-tidy-linelength
//@ revisions: cpass1 cfail2
//@ edition: 2021
//@ [cpass1] compile-flags: --crate-type lib --emit dep-info,metadata
//@ [cfail2] aux-build: circular-dependencies-aux.rs
//@ [cfail2] compile-flags: --test --extern aux={{build-base}}/circular-dependencies/auxiliary/libcircular_dependencies_aux.rmeta -L dependency={{build-base}}/circular-dependencies
pub struct Foo;
//[cfail2]~^ NOTE there are multiple different versions of crate `circular_dependencies` in the dependency graph
//[cfail2]~| NOTE there are multiple different versions of crate `circular_dependencies` in the dependency graph
//[cfail2]~| NOTE this is the expected type
//[cfail2]~| NOTE this is the expected type
//[cfail2]~| NOTE this is the found type
//[cfail2]~| NOTE this is the found type
pub fn consume_foo(_: Foo) {}
//[cfail2]~^ NOTE function defined here
pub fn produce_foo() -> Foo {
Foo
}
#[test]
fn test() {
aux::consume_foo(produce_foo());
//[cfail2]~^ ERROR mismatched types [E0308]
//[cfail2]~| NOTE expected `circular_dependencies::Foo`, found `Foo`
//[cfail2]~| NOTE arguments to this function are incorrect
//[cfail2]~| NOTE function defined here
consume_foo(aux::produce_foo());
//[cfail2]~^ ERROR mismatched types [E0308]
//[cfail2]~| NOTE expected `Foo`, found `circular_dependencies::Foo`
//[cfail2]~| NOTE arguments to this function are incorrect
}