]> git.proxmox.com Git - rustc.git/blob - src/test/ui/inference/deref-suggestion.rs
Update unsuspicious file list
[rustc.git] / src / test / ui / inference / deref-suggestion.rs
1 macro_rules! borrow {
2 ($x:expr) => { &$x }
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 //~^ ERROR mismatched types
36 foo4(&0);
37 assert_eq!(3i32, &3i32);
38 //~^ ERROR mismatched types
39 let u = 3;
40 let s = S { u };
41 //~^ ERROR mismatched types
42 let s = S { u: u };
43 //~^ ERROR mismatched types
44 let i = &4;
45 let r = R { i };
46 //~^ ERROR mismatched types
47 let r = R { i: i };
48 //~^ ERROR mismatched types
49
50
51 let a = &1;
52 let b = &2;
53 let val: i32 = if true {
54 a + 1
55 } else {
56 b
57 //~^ ERROR mismatched types
58 };
59 let val: i32 = if true {
60 let _ = 2;
61 a + 1
62 } else {
63 let _ = 2;
64 b
65 //~^ ERROR mismatched types
66 };
67 let val = if true {
68 *a
69 } else if true {
70 //~^ ERROR incompatible types
71 b
72 } else {
73 &0
74 };
75 }