]> git.lizzy.rs Git - rust.git/blob - src/test/ui/deref-suggestion.rs
Auto merge of #87284 - Aaron1011:remove-paren-special, r=petrochenkov
[rust.git] / src / test / ui / deref-suggestion.rs
1 macro_rules! borrow {
2     ($x:expr) => { &$x } //~ ERROR mismatched types
3 }
4
5 fn foo(_: String) {}
6
7 fn foo2(s: &String) {
8     foo(s);
9     //~^ ERROR mismatched types
10 }
11
12 fn foo3(_: u32) {}
13 fn foo4(u: &u32) {
14     foo3(u);
15     //~^ ERROR mismatched types
16 }
17
18 struct S<'a> {
19     u: &'a u32,
20 }
21
22 struct R {
23     i: u32,
24 }
25
26 fn main() {
27     let s = String::new();
28     let r_s = &s;
29     foo2(r_s);
30     foo(&"aaa".to_owned());
31     //~^ ERROR mismatched types
32     foo(&mut "aaa".to_owned());
33     //~^ ERROR mismatched types
34     foo3(borrow!(0));
35     foo4(&0);
36     assert_eq!(3i32, &3i32);
37     //~^ ERROR mismatched types
38     let u = 3;
39     let s = S { u };
40     //~^ ERROR mismatched types
41     let s = S { u: u };
42     //~^ ERROR mismatched types
43     let i = &4;
44     let r = R { i };
45     //~^ ERROR mismatched types
46     let r = R { i: i };
47     //~^ ERROR mismatched types
48
49
50     let a = &1;
51     let b = &2;
52     let val: i32 = if true {
53         a + 1
54     } else {
55         b
56         //~^ ERROR mismatched types
57     };
58     let val: i32 = if true {
59         let _ = 2;
60         a + 1
61     } else {
62         let _ = 2;
63         b
64         //~^ ERROR mismatched types
65     };
66     let val = if true {
67         *a
68     } else if true {
69     //~^ ERROR incompatible types
70         b
71     } else {
72         &0
73     };
74 }