]> git.lizzy.rs Git - rust.git/blob - tests/ui/did_you_mean/compatible-variants.rs
Rollup merge of #104965 - zacklukem:p-option-as_ref-docs, r=scottmcm
[rust.git] / tests / ui / did_you_mean / compatible-variants.rs
1 enum Hey<A, B> {
2     A(A),
3     B(B),
4 }
5
6 struct Foo {
7     bar: Option<i32>,
8 }
9
10 fn f() {}
11
12 fn a() -> Option<()> {
13     while false {
14         //~^ ERROR mismatched types
15         f();
16     }
17     //~^ HELP try adding an expression
18 }
19
20 fn b() -> Result<(), ()> {
21     f()
22     //~^ ERROR mismatched types
23     //~| HELP try adding an expression
24 }
25
26 fn c() -> Option<()> {
27     for _ in [1, 2] {
28         //~^ ERROR mismatched types
29         f();
30     }
31     //~^ HELP try adding an expression
32 }
33
34 fn d() -> Option<()> {
35     c()?
36     //~^ ERROR incompatible types
37     //~| HELP try removing this `?`
38     //~| HELP try adding an expression
39 }
40
41 fn main() {
42     let _: Option<()> = while false {};
43     //~^ ERROR mismatched types
44     //~| HELP try wrapping
45     let _: Option<()> = {
46         while false {}
47         //~^ ERROR mismatched types
48         //~| HELP try adding an expression
49     };
50     let _: Result<i32, i32> = 1;
51     //~^ ERROR mismatched types
52     //~| HELP try wrapping
53     let _: Option<i32> = 1;
54     //~^ ERROR mismatched types
55     //~| HELP try wrapping
56     let _: Hey<i32, i32> = 1;
57     //~^ ERROR mismatched types
58     //~| HELP try wrapping
59     let _: Hey<i32, bool> = false;
60     //~^ ERROR mismatched types
61     //~| HELP try wrapping
62     let bar = 1i32;
63     let _ = Foo { bar };
64     //~^ ERROR mismatched types
65     //~| HELP try wrapping
66 }
67
68 enum A {
69     B { b: B },
70 }
71
72 struct A2(B);
73
74 enum B {
75     Fst,
76     Snd,
77 }
78
79 fn foo() {
80     let a: A = B::Fst;
81     //~^ ERROR mismatched types
82     //~| HELP try wrapping
83 }
84
85 fn bar() {
86     let a: A2 = B::Fst;
87     //~^ ERROR mismatched types
88     //~| HELP try wrapping
89 }