]> git.proxmox.com Git - rustc.git/blame - src/test/ui/traits/bound/same-crate-name.rs
Merge tag 'debian/1.52.1+dfsg1-1_exp2' into proxmox/buster
[rustc.git] / src / test / ui / traits / bound / same-crate-name.rs
CommitLineData
60c5eb7d
XL
1// aux-build:crate_a1.rs
2// aux-build:crate_a2.rs
3
4// Issue 22750
5// This tests the extra help message reported when a trait bound
6// is not met but the struct implements a trait with the same path.
7
8fn main() {
9 let foo = {
10 extern crate crate_a2 as a;
11 a::Foo
12 };
13
14 let implements_no_traits = {
15 extern crate crate_a2 as a;
16 a::DoesNotImplementTrait
17 };
18
19 let other_variant_implements_mismatched_trait = {
20 extern crate crate_a2 as a;
21 a::ImplementsWrongTraitConditionally { _marker: std::marker::PhantomData::<isize> }
22 };
23
24 let other_variant_implements_correct_trait = {
25 extern crate crate_a1 as a;
26 a::ImplementsTraitForUsize { _marker: std::marker::PhantomData::<isize> }
27 };
28
29 {
30 extern crate crate_a1 as a;
31 a::try_foo(foo);
32 //~^ ERROR E0277
33 //~| trait impl with same name found
dfeec247 34 //~| perhaps two different versions of crate `crate_a2`
60c5eb7d
XL
35
36 // We don't want to see the "version mismatch" help message here
37 // because `implements_no_traits` has no impl for `Foo`
38 a::try_foo(implements_no_traits);
39 //~^ ERROR E0277
40
41 // We don't want to see the "version mismatch" help message here
42 // because `other_variant_implements_mismatched_trait`
43 // does not have an impl for its `<isize>` variant,
44 // only for its `<usize>` variant.
45 a::try_foo(other_variant_implements_mismatched_trait);
46 //~^ ERROR E0277
47
48 // We don't want to see the "version mismatch" help message here
49 // because `ImplementsTraitForUsize` only has
50 // impls for the correct trait where the path is not misleading.
51 a::try_foo(other_variant_implements_correct_trait);
52 //~^ ERROR E0277
53 //~| the following implementations were found:
54 }
55}